Module: MaRuKu::Out::Markdown

### Home Classes Methods

### In Files

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

### Methods

- #add_indent
- #array_to_md
- #children_to_md
- #to_md
- #to_md_abbr_def
- #to_md_li_span
- #to_md_ol
- #to_md_paragraph
- #to_md_ul
- #wrap

### Class/Module Index

Quicksearch

- MaRuKu
- MaRuKu::Errors
- MaRuKu::Exception
- 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::Out
- MaRuKu::Out::HTML
- MaRuKu::Out::Latex
- MaRuKu::Out::Latex::LatexEntity
- MaRuKu::Out::Markdown
- MaRuKu::Section
- MaRuKu::Strings
- MaRuKu::Tests
- Array
- Hash
- Maruku
- Module
- NilClass
- Object
- String
- Textile2Signature

No matching classes.

# MaRuKu::Out::Markdown

Functions for exporting to MarkDown.

### Constants

DefaultLineLength

### Public Instance Methods

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

    # File lib/maruku/output/to_markdown.rb, line 85
    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 127
            def array_to_md(array, context, join_char='')
                    e = []
                    array.each do |c|
                            method = c.kind_of?(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
                    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 92
    def children_to_md(context)
            array_to_md(@children, context)
    end

to_md(context={}) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 39
    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 55
    def to_md_abbr_def(context)
            "*[#{self.abbr}]: #{self.text}\n"
    end

to_md_li_span(context) click to toggle source

    # File lib/maruku/output/to_markdown.rb, line 48
    def to_md_li_span(context)
            len = (context[:line_length] || DefaultLineLength) - 2
            s = add_tabs(wrap(@children, len-2, context), 1, '  ')
            s[0] = **
            s + "\n"
    end

to_md_ol(context) click to toggle source

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

to_md_paragraph(context) click to toggle source

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

to_md_ul(context) click to toggle source

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

                    pieces =
                    if c.kind_of? String
                            c.to_md.mysplit
                    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.