class Orgmode::TextileOutputBuffer
Constants
- TextileMap
Maps org markup to textile markup.
Public Class Methods
new(output)
click to toggle source
Calls superclass method
Orgmode::OutputBuffer.new
# File lib/org-ruby/textile_output_buffer.rb, line 7 def initialize(output) super(output) @add_paragraph = true @support_definition_list = true # TODO this should be an option @footnotes = [] end
Public Instance Methods
add_line_attributes(headline)
click to toggle source
# File lib/org-ruby/textile_output_buffer.rb, line 150 def add_line_attributes headline @output << "h#{headline.level}. " end
flush!()
click to toggle source
Flushes the current buffer
# File lib/org-ruby/textile_output_buffer.rb, line 113 def flush! return false if @buffer.empty? and @output_type != :blank @logger.debug "FLUSH ==========> #{@output_type}" @buffer.gsub!(/\A\n*/, "") case when preserve_whitespace? @output << @buffer << "\n" when @output_type == :blank @output << "\n" else case current_mode when :paragraph @output << "p. " if @add_paragraph @output << "p=. " if @mode_stack[0] == :center @output << "bq. " if @mode_stack[0] == :quote when :list_item if @mode_stack[-2] == :ordered_list @output << "#" * @mode_stack.count(:list_item) << " " else # corresponds to unordered list @output << "*" * @mode_stack.count(:list_item) << " " end when :definition_term if @support_definition_list @output << "-" * @mode_stack.count(:definition_term) << " " @buffer.sub!("::", ":=") end end @output << inline_formatting(@buffer) << "\n" end @buffer = "" end
inline_formatting(input)
click to toggle source
Handles inline formatting for textile.
# File lib/org-ruby/textile_output_buffer.rb, line 44 def inline_formatting(input) @re_help.rewrite_emphasis input do |marker, body| m = TextileMap[marker] "#{m}#{body}#{m}" end @re_help.rewrite_subp input do |type, text| if type == "_" then "~#{text}~" elsif type == "^" then "^#{text}^" end end @re_help.rewrite_links input do |link, defi| [link, defi].compact.each do |text| # We don't support search links right now. Get rid of it. text.sub!(/\A(file:[^\s]+)::[^\s]*?\Z/, "\\1") text.sub!(/\A(file:[^\s]+)\.org\Z/i, "\\1.textile") text.sub!(/\Afile:(?=[^\s]+\Z)/, "") end # 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}(#{defi})!" elsif defi defi = "\"#{defi}\"" end if defi "#{defi}:#{link}" else "!#{link}(#{link})!" end end @re_help.rewrite_footnote input do |name, definition| # textile only support numerical names, so we need to do some conversion # Try to find the footnote and use its index footnote = @footnotes.select {|f| f[:name] == name }.first if footnote # The latest definition overrides other ones footnote[:definition] = definition if definition and not footnote[:definition] else # There is no footnote with the current name so we add it footnote = { :name => name, :definition => definition } @footnotes << footnote end "[#{@footnotes.index(footnote)}]" end Orgmode.special_symbols_to_textile(input) input = @re_help.restore_code_snippets input input end
output_footnotes!()
click to toggle source
# File lib/org-ruby/textile_output_buffer.rb, line 101 def output_footnotes! return false if @footnotes.empty? @footnotes.each do |footnote| index = @footnotes.index(footnote) @output << "\nfn#{index}. #{footnote[:definition] || 'DEFINITION NOT FOUND' }\n" end return true end
pop_mode(mode = nil)
click to toggle source
Calls superclass method
Orgmode::OutputBuffer#pop_mode
# File lib/org-ruby/textile_output_buffer.rb, line 23 def pop_mode(mode = nil) m = super(mode) @list_indent_stack.pop if m == :center or m == :quote @add_paragraph = true @output << "\n" end m end
push_mode(mode, indent)
click to toggle source
Calls superclass method
Orgmode::OutputBuffer#push_mode
# File lib/org-ruby/textile_output_buffer.rb, line 14 def push_mode(mode, indent) super(mode, indent) @output << "bc. " if mode_is_code? mode if mode == :center or mode == :quote @add_paragraph = false @output << "\n" end end