Module: MaRuKu::Out::Markdown

### Home Classes Methods

### In Files

- lib/maruku.rb
- lib/maruku/output/to_markdown.rb

### Methods

- #add_indent
- #array_to_md
- #children_to_md
- #mysplit
- #to_md
- #to_md_abbr_def
- #to_md_code
- #to_md_email_address
- #to_md_emphasis
- #to_md_entity
- #to_md_header
- #to_md_hrule
- #to_md_im_image
- #to_md_im_link
- #to_md_image
- #to_md_immediate_link
- #to_md_inline_code
- #to_md_linebreak
- #to_md_link
- #to_md_ol
- #to_md_paragraph
- #to_md_quote
- #to_md_ref_definition
- #to_md_strong
- #to_md_ul
- #wrap

### Class/Module Index

Quicksearch

- MaRuKu
- MaRuKu::AttributeList
- MaRuKu::Errors
- MaRuKu::Exception
- MaRuKu::HTMLElement
- MaRuKu::HTMLFragment
- MaRuKu::Helpers
- MaRuKu::In
- MaRuKu::In::Markdown
- MaRuKu::In::Markdown::BlockLevelParser
- MaRuKu::In::Markdown::BlockLevelParser::BlockContext
- MaRuKu::In::Markdown::BlockLevelParser::LineSource
- MaRuKu::In::Markdown::SpanExtension
- MaRuKu::In::Markdown::SpanLevelParser
- MaRuKu::In::Markdown::SpanLevelParser::CharSourceDebug
- MaRuKu::In::Markdown::SpanLevelParser::CharSourceManual
- MaRuKu::In::Markdown::SpanLevelParser::CharSourceStrscan
- MaRuKu::In::Markdown::SpanLevelParser::HTMLHelper
- MaRuKu::In::Markdown::SpanLevelParser::SpanContext
- MaRuKu::MDDocument
- MaRuKu::MDElement
- MaRuKu::MDHTMLElement
- MaRuKu::MDLine
- MaRuKu::NokogiriHTMLFragment
- MaRuKu::Out
- MaRuKu::Out::EntityTable
- MaRuKu::Out::HTML
- MaRuKu::Out::HTML::HTMLElement
- MaRuKu::Out::Latex
- MaRuKu::Out::Latex::MDDocumentExtensions
- MaRuKu::Out::Markdown
- MaRuKu::REXMLHTMLFragment
- MaRuKu::Section
- MaRuKu::Strings
- Maruku
- Maruku::In
- Maruku::In::Markdown
- Maruku::In::Markdown::FencedCode
- Object
- String
- Textile2Signature

No matching classes.

# MaRuKu::Out::Markdown

### Constants

DefaultLineLength

### Public Instance Methods

add_indent(s,char=" ") click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 121
    def add_indent(s,char="    ")
      t = s.split("\n").map{|x| char+x }.join("\n")
      s << \n\ if t[-1] == \n\
      s
    end

array_to_md(array, context, join_char='') click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 167
    def array_to_md(array, context, join_char='')
      e = []
      array.each do |c|
        if c.is_a?(String)
          e << c
        else
          method = c.kind_of?(MaRuKu::MDElement) ?
          "to_md_#{c.node_type}" : "to_md"

          if not c.respond_to?(method)
            #raise "Object does not answer to #{method}: #{c.class} #{c.inspect[0,100]}"
            #       tell_user "Using default for #{c.node_type}"
            method = 'to_md'
          end

          #     puts "#{c.inspect} created with method #{method}"
          h =  c.send(method, context)

          if h.nil?
            raise "Nil md for #{c.inspect} created with method #{method}"
          end

          if h.kind_of?Array
            e = e + h
          else
            e << h
          end
        end
      end
      e.join(join_char)
    end

children_to_md(context) click to toggle source

Convert each child to html

    # File lib/maruku/output/to_markdown.rb, line 128
    def children_to_md(context)
      array_to_md(@children, context)
    end

mysplit(c) click to toggle source

" andrea censi " => [" andrea ", "censi "]

    # File lib/maruku/output/to_markdown.rb, line 10
    def mysplit(c)
      res = c.split.map {|x| x + " " }
      if c[0] == ' ' && res[0]
        res[0] = " " + res[0]
      end
      res
    end

to_md(context={}) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 5
    def to_md(context={})
      children_to_md(context)
    end

to_md_abbr_def(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 89
    def to_md_abbr_def(context)
      "*[#{self.abbr}]: #{self.text}\n"
    end

to_md_code(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 27
    def to_md_code(context)
      @raw_code.split("\n").collect { |line| "     " + line}.join("\n") + "\n\n"
    end

to_md_email_address(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 52
    def to_md_email_address(context)
      "<#{@email}>"
    end

to_md_emphasis(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 40
    def to_md_emphasis(context)
      "*#{children_to_md(context)}*"
    end

to_md_entity(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 56
    def to_md_entity(context)
      "&#{@entity_name};"
    end

to_md_header(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 18
    def to_md_header(context)
      pounds = "#" * @level
      "#{pounds} #{children_to_md(context)} #{pounds}\n\n"
    end

to_md_hrule(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 36
    def to_md_hrule(context)
      "* * *\n"
    end

to_md_im_image(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 77
    def to_md_im_image(context)
      "![#{children_to_md(context)}](#{@url}#{" \"#{@title}\"" if @title})"
    end

to_md_im_link(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 69
    def to_md_im_link(context)
      "[#{children_to_md(context)}](#{@url}#{" \"#{@title}\"" if @title})"
    end

to_md_image(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 81
    def to_md_image(context)
      "![#{children_to_md(context)}][#{@ref_id}]"
    end

to_md_immediate_link(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 48
    def to_md_immediate_link(context)
      "<#{@url}>"
    end

to_md_inline_code(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 23
    def to_md_inline_code(context)
      "`#{@raw_code}`"
    end

to_md_linebreak(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 60
    def to_md_linebreak(context)
      "\n"
    end

to_md_link(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 73
    def to_md_link(context)
      "[#{children_to_md(context)}][#{@ref_id}]"
    end

to_md_ol(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 93
    def to_md_ol(context)
      len = (context[:line_length] || DefaultLineLength) - 2
      md = ""
      self.children.each_with_index do |li, i|
        #     s = (w=wrap(li.children, len-2, context)).rstrip.gsub(/^/, '    ')+"\n"
        #     s[0,4] = "#{i+1}.  "[0,4]
        #     puts w.inspect
        s = "#{i+1}. " + wrap(li.children, len-2, context).rstrip + "\n"
        md += s
      end
      md + "\n"
    end

to_md_paragraph(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 64
    def to_md_paragraph(context)
      line_length = context[:line_length] || DefaultLineLength
      wrap(@children, line_length, context)+"\n"
    end

to_md_quote(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 31
    def to_md_quote(context)
      line_length = (context[:line_length] || DefaultLineLength) - 2
      wrap(@children, line_length, context).split(/\n/).collect { |line| "> " + line}.join("\n") + "\n"
    end

to_md_ref_definition(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 85
    def to_md_ref_definition(context)
      "[#{@ref_id}] #{@url}#{" \"#{@title}\"" if @title}"
    end

to_md_strong(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 44
    def to_md_strong(context)
      "**#{children_to_md(context)}**"
    end

to_md_ul(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 106
    def to_md_ul(context)
      len = (context[:line_length] || DefaultLineLength) - 2
      md = ""
      self.children.each_with_index do |li, i|
        w = wrap(li.children, len-2, context)
        s = "- " + w
        #     puts "W: "+ w.inspect
        #   s = add_indent(w)
        #     puts "S: " +s.inspect
        #   s[0,1] = "-"
        md += s
      end
      md + "\n"
    end

wrap(array, line_length, context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 132
    def wrap(array, line_length, context)
      out = ""
      line = ""
      array.each do |c|
        if c.kind_of?(MaRuKu::MDElement) &&  c.node_type == :linebreak
          out << line.strip << "  \n"; line="";
          next
        end

        pieces =
          if c.kind_of? String
            mysplit(c)
          elsif c.kind_of?(MaRuKu::MDElement)
            method = "to_md_#{c.node_type}"
            method = "to_md" unless c.respond_to?(method)
            [c.send(method, context)].flatten
          else
            [c.to_md(context)].flatten
          end

        #     puts "Pieces: #{pieces.inspect}"
        pieces.each do |p|
          if p.size + line.size > line_length
            out << line.strip << "\n";
            line = ""
          end
          line << p
        end
      end
      out << line.strip << "\n" if line.size > 0
      out << \n\ if not out[-1] == \n\
      out
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.