Class: Orgmode::MarkdownOutputBuffer
- Inherits:
-
OutputBuffer
- Object
- OutputBuffer
- Orgmode::MarkdownOutputBuffer
- Defined in:
- lib/org-ruby/markdown_output_buffer.rb
Constant Summary collapse
- MarkdownMap =
Maps org markup to markdown markup.
{ "*" => "**", "/" => "*", "_" => "*", "=" => "`", "~" => "`", "+" => "~~" }
Instance Attribute Summary
Attributes inherited from OutputBuffer
Instance Method Summary collapse
- #add_line_attributes(headline) ⇒ Object
-
#flush! ⇒ Object
Flushes the current buffer.
-
#initialize(output) ⇒ MarkdownOutputBuffer
constructor
A new instance of MarkdownOutputBuffer.
-
#inline_formatting(input) ⇒ Object
Handles inline formatting for markdown.
-
#output_footnotes! ⇒ Object
TODO: Implement this.
- #pop_mode(mode = nil) ⇒ Object
- #push_mode(mode, indent) ⇒ Object
Methods inherited from OutputBuffer
#current_mode, #get_next_headline_number, #insert, #list_indent_level, #preserve_whitespace?
Constructor Details
#initialize(output) ⇒ MarkdownOutputBuffer
Returns a new instance of MarkdownOutputBuffer.
7 8 9 |
# File 'lib/org-ruby/markdown_output_buffer.rb', line 7 def initialize(output) super(output) end |
Instance Method Details
#add_line_attributes(headline) ⇒ Object
104 105 106 107 |
# File 'lib/org-ruby/markdown_output_buffer.rb', line 104 def add_line_attributes headline @output << "#" * headline.level @output << " " end |
#flush! ⇒ Object
Flushes the current buffer
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/org-ruby/markdown_output_buffer.rb', line 71 def flush! return false if @buffer.empty? and @output_type != :blank @logger.debug "FLUSH ==========> #{@output_type}" @buffer.gsub!(/\A\n*/, "") case when mode_is_code?(current_mode) @output << "```#{@block_lang}\n" @output << @buffer << "\n" @output << "```\n" when preserve_whitespace? @output << @buffer << "\n" when @output_type == :blank @output << "\n" else case current_mode when :paragraph @output << "> " if @mode_stack[0] == :quote when :list_item @output << " " * @mode_stack.count(:list_item) << "* " when :horizontal_rule @output << "---" end @output << inline_formatting(@buffer) << "\n" end @buffer = "" end |
#inline_formatting(input) ⇒ Object
Handles inline formatting for markdown.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/org-ruby/markdown_output_buffer.rb', line 32 def inline_formatting(input) @re_help.rewrite_emphasis input do |marker, body| m = MarkdownMap[marker] "#{m}#{body}#{m}" end @re_help.rewrite_subp input do |type, text| if type == "_" then "<sub>#{text}</sub>" elsif type == "^" then "<sup>#{text}</sup>" end end @re_help.rewrite_links input do |link, defi| # We don't add a description for images in links, because its # empty value forces the image to be inlined. defi ||= link unless link =~ @re_help.org_image_file_regexp link = link.gsub(/ /, "%%20") if defi =~ @re_help.org_image_file_regexp "![#{defi}](#{defi})" elsif defi "[#{defi}](#{link})" else "[#{link}](#{link})" end end # Just reuse Textile special symbols for now? Orgmode.special_symbols_to_textile(input) input = @re_help.restore_code_snippets input input end |
#output_footnotes! ⇒ Object
TODO: Implement this
66 67 68 |
# File 'lib/org-ruby/markdown_output_buffer.rb', line 66 def output_footnotes! return false end |
#pop_mode(mode = nil) ⇒ Object
15 16 17 18 19 |
# File 'lib/org-ruby/markdown_output_buffer.rb', line 15 def pop_mode(mode = nil) m = super(mode) @list_indent_stack.pop m end |
#push_mode(mode, indent) ⇒ Object
11 12 13 |
# File 'lib/org-ruby/markdown_output_buffer.rb', line 11 def push_mode(mode, indent) super(mode, indent) end |