convert_a(element)
click to toggle source
def convert_a(element)
ref = ReferText.new(convert_container(element))
ref.to = element.attr['href']
ref
end
convert_blank(element)
click to toggle source
def convert_blank(element)
:no_element
end
convert_blockquote(element)
click to toggle source
def convert_blockquote(element)
BlockQuote.new(convert_container(element))
end
convert_br(element)
click to toggle source
def convert_br(element)
Text.new("\n")
end
convert_codeblock(element)
click to toggle source
def convert_codeblock(element)
content = element.value.chomp
lang = element.attr["lang"]
if lang
highlighted = Ext::CodeRay.highlight(lang, content, @canvas.logger)
return highlighted if highlighted
end
PreformattedBlock.new(PreformattedText.new(text(content)))
end
convert_codespan(element)
click to toggle source
def convert_codespan(element)
Code.new(Text.new(element.value))
end
convert_container(element)
click to toggle source
def convert_container(element)
elements = []
element.children.each do |child|
element = convert(child)
case element
when nil, :no_element
else
elements << element
end
end
elements
end
convert_dd(element)
click to toggle source
def convert_dd(element)
DescriptionContent.new(convert_container(element))
end
convert_dl(element)
click to toggle source
def convert_dl(element)
list = DescriptionList.new
term = nil
content = nil
convert_container(element).each do |item|
case item
when DescriptionTerm
list << DescriptionListItem.new(term, content) if term
term = item
when DescriptionContent
content = item
end
end
list << DescriptionListItem.new(term, content) if term
list
end
convert_dt(element)
click to toggle source
def convert_dt(element)
DescriptionTerm.new(Paragraph.new(convert_container(element)))
end
convert_em(element)
click to toggle source
def convert_em(element)
Emphasis.new(Emphasis.new(convert_container(element)))
end
convert_img(element)
click to toggle source
def convert_img(element)
options = element.attr.dup
uri = options.delete("src")
title = options.delete("title")
alt = options.delete("alt")
caption = title || alt
options["caption"] ||= caption if caption
if options["align"] == "right"
body = @slides.last.body
if body["background-image"]
raise ParseError,
_("multiple {:align='right'} " + "isn't supported.")
end
body["background-image"] = uri
options.each do |name, value|
name = name.to_s.gsub(/_/, '-')
body["background-image-#{name}"] = value
end
:no_element
else
image = Ext::Image.make_image(@canvas, uri, options)
image || text(alt || src)
end
end
convert_li(element)
click to toggle source
def convert_li(element)
ItemListItem.new(convert_container(element))
end
convert_math(element)
click to toggle source
def convert_math(element)
args = [@canvas, element.value]
Ext::Image.make_image_from_file(*args) do |src_file_path|
[Ext::TeX.make_image_by_LaTeX(src_file_path, {}, @canvas), {}]
end
end
convert_p(element)
click to toggle source
def convert_p(element)
if element.children.collect {|child| child.type} == [:img]
convert_container(element)[0]
else
if element.children.any? {|child| child.type == :img}
raise ParseError,
_("multiple ![alt]{image} in a paragraph isn't supported.")
else
Paragraph.new(convert_container(element))
end
end
end
convert_root(element)
click to toggle source
def convert_root(element)
target = nil
mode = :ignore
convert_container(element).each do |content|
case content
when :no_element
next
when nil
mode = :ignore
when Slide
target = content.body
@canvas << content
mode = :display
when TitleSlide
target = content
@canvas << content
mode = :display
when SlidePropertySetter, NoteSetter
target = content
mode = :property
else
case mode
when :display
target << content
when :property
target.apply(content)
end
end
end
end
convert_smart_quote(element)
click to toggle source
def convert_smart_quote(element)
Text.new(Parser::Ext::Entity::TABLE[element.value.to_s])
end
convert_strong(element)
click to toggle source
def convert_strong(element)
Emphasis.new(Emphasis.new(convert_container(element)))
end
convert_table(element)
click to toggle source
def convert_table(element)
table = Table.new
convert_container(element).each do |item|
table << item
end
table
end
convert_tbody(element)
click to toggle source
def convert_tbody(element)
TableBody.new(convert_container(element))
end
convert_td(element)
click to toggle source
def convert_td(element)
if @in_table_header
header = TableHeader.new(convert_container(element))
def header.default_align
Pango::Layout::ALIGN_CENTER
end
header
else
TableCell.new(convert_container(element))
end
end
convert_text(element)
click to toggle source
def convert_text(element)
text(element.value)
end
convert_thead(element)
click to toggle source
def convert_thead(element)
in_table_header do
TableHead.new(convert_container(element))
end
end
convert_tr(element)
click to toggle source
def convert_tr(element)
TableRow.new(convert_container(element))
end
convert_typographic_sym(element)
click to toggle source
def convert_typographic_sym(element)
Text.new(Parser::Ext::Entity::TABLE[element.value.to_s])
end
convert_ul(element)
click to toggle source
def convert_ul(element)
ItemList.new(convert_container(element))
end
text(content)
click to toggle source
def text(content)
Text.new(Parser::Ext::Escape.escape_meta_character(content))
end