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