class Kramdown::AsciiDoc::Writer
Constants
- LF
Attributes
body[R]
doctitle[RW]
Public Class Methods
new()
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 11 def initialize @prologue = [] @doctitle = nil @attributes = {} @body = [] @nesting_stack = [] @block_delimiter = nil @block_separator = [''] @list_level = { list: 0, dlist: 0 } @follows_list = false end
Public Instance Methods
add_attributes(new_attributes)
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 23 def add_attributes new_attributes @attributes.update new_attributes end
add_blank_line()
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 84 def add_blank_line @body << '' nil end
add_line(line)
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 89 def add_line line @body << line nil end
add_lines(lines)
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 94 def add_lines lines @body += lines nil end
add_prologue_line(line)
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 27 def add_prologue_line line @prologue << line end
add_prologue_lines(lines)
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 31 def add_prologue_lines lines @prologue.push(*lines) end
append(str)
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 99 def append str if empty? @body << str else @body[-1] += str end nil end
clear_line()
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 108 def clear_line replace_line '' end
current_line()
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 118 def current_line @body[-1] end
empty?()
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 122 def empty? @body.empty? end
end_delimited_block()
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 50 def end_delimited_block parent_body, @block_delimiter, @block_separator, @list_level = @nesting_stack.pop @body = (parent_body + @body) << @block_delimiter @block_delimiter = nil end
end_list(kin)
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 65 def end_list kin @follows_list = true @block_separator.pop @list_level[kin] -= 1 nil end
follows_list?()
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 80 def follows_list? @follows_list end
in_list?()
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 76 def in_list? @block_separator[-1] == '+' end
list_level(kin = :list)
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 72 def list_level kin = :list @list_level[kin] end
replace_line(line)
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 112 def replace_line line @body.pop @body << line nil end
start_block()
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 35 def start_block @follows_list = false @body << @block_separator[-1] unless empty? nil end
start_delimited_block(delimiter)
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 41 def start_delimited_block delimiter @follows_list = false @body << (@block_delimiter = delimiter.length == 1 ? delimiter * 4 : delimiter) @nesting_stack << [(@body.pop @body.length), @block_delimiter, @block_separator, @list_level] @block_separator = [''] @list_level = { list: 0, dlist: 0 } nil end
start_list(compound, kin)
click to toggle source
Q: perhaps do_in_list that takes a block?
# File lib/kramdown-asciidoc/writer.rb, line 57 def start_list compound, kin # Q: can this be further optimized? @body << '' if in_list? ? compound : !empty? @block_separator << '+' @list_level[kin] += 1 nil end
to_s()
click to toggle source
# File lib/kramdown-asciidoc/writer.rb, line 126 def to_s header = @prologue.dup header << %(= #{@doctitle}) if @doctitle @attributes.sort.each do |name, val| header << (val.empty? ? %(:#{name}:) : %(:#{name}: #{val})) end unless @attributes.empty? (header.empty? ? @body : (header + (@body.empty? ? [] : [''] + @body))).join LF end