class Rabbit::Parser::Wiki::RabbitOutput
Attributes
Public Class Methods
Source
# File lib/rabbit/parser/wiki/output.rb, line 39 def initialize(canvas) @canvas = canvas end
Public Instance Methods
Source
# File lib/rabbit/parser/wiki/output.rb, line 309 def block_plugin(src) return unless @parent result = evaluate_block_plugin(src) return if result == :no_element @parent << (result || text("{{#{src}}}")) end
Source
# File lib/rabbit/parser/wiki/output.rb, line 278 def block_preformatted(contents, info) return unless @parent lang = info ? info.downcase : nil result = nil if lang result = Ext::Rouge.highlight(lang, contents, @canvas.logger) end if result @parent << result else preformatted(text(contents)) end end
Source
# File lib/rabbit/parser/wiki/output.rb, line 272 def blockquote_close return unless @parent @parent = @parent.parent end
Source
# File lib/rabbit/parser/wiki/output.rb, line 264 def blockquote_open return unless @parent block_quote = BlockQuote.new @parent << block_quote @parent = block_quote end
Source
# File lib/rabbit/parser/wiki/output.rb, line 66 def container(_for=nil) [] end
Source
# File lib/rabbit/parser/wiki/output.rb, line 70 def current_body @slides.last.body end
Source
# File lib/rabbit/parser/wiki/output.rb, line 341 def del(item) DeletedText.new(item) end
Source
# File lib/rabbit/parser/wiki/output.rb, line 186 def dlist_close return unless @parent list = @parent @parent = list.parent @parent << list end
Source
# File lib/rabbit/parser/wiki/output.rb, line 194 def dlist_item(dt, dd) if @slide_property_mode and @target_slide name = dt.collect {|element| element.text}.join value = dd.collect {|element| element.text}.join @target_slide[Parser.normalize_property_name(name)] = value.strip else return unless @parent desc_term = DescriptionTerm.new(Paragraph.new(dt.flatten)) desc_content = DescriptionContent.new(Paragraph.new(dd.flatten)) @parent << DescriptionListItem.new(desc_term, desc_content) end end
Source
# File lib/rabbit/parser/wiki/output.rb, line 178 def dlist_open return unless @parent list = DescriptionList.new list.parent = @parent @parent = list end
Source
# File lib/rabbit/parser/wiki/output.rb, line 337 def em(item) Emphasis.new(item) end
Source
# File lib/rabbit/parser/wiki/output.rb, line 59 def finish @slides.each do |slide| @canvas << slide end burn_out_pause_targets end
Source
# File lib/rabbit/parser/wiki/output.rb, line 78 def headline(level, title) @slide_property_mode = false case level when 1 slide = nil if @slides.empty? @title_slide = true slide = TitleSlide.new(Title.new(title)) @parent = slide else @title_slide = false slide = Element::Slide.new(HeadLine.new(title)) body = Body.new slide << body @parent = body end @foot_texts << [] @slides << slide when 2 @slide_property_mode = true @parent, @target_slide = nil, @slides.last else @parent = nil end end
Procedures
Source
# File lib/rabbit/parser/wiki/output.rb, line 104 def hrule @canvas.logger.warn(_("horizontal rule is unsupported")) if @parent end
Source
# File lib/rabbit/parser/wiki/output.rb, line 322 def hyperlink(uri, title) ref = ReferText.new(title) ref.to = uri ref end
Functions
Source
# File lib/rabbit/parser/wiki/output.rb, line 329 def image_hyperlink(uri, alt=nil) Ext::Image.make_image(@canvas, uri, "caption" => alt) || Text.new(uri) end
inline image is not supported yet…
Source
# File lib/rabbit/parser/wiki/output.rb, line 349 def inline_plugin(src) evaluate_inline_plugin(src) || text("{{#{src}}}") end
Source
# File lib/rabbit/parser/wiki/output.rb, line 136 def list_close(type) @enum_order_stack.pop if type == "ol" @list_type_stack.pop return unless @parent @parent = @parent.parent @parent = @parent.parent unless @list_type_stack.empty? end
Source
# File lib/rabbit/parser/wiki/output.rb, line 114 def list_open(type) @enum_order_stack << 1 if type == "ol" @list_type_stack << type return unless @parent case type when "ul" list = ItemList.new when "ol" list = EnumList.new else unsupported_list_type(type) end if @list_type_stack.size > 1 @parent.elements.last << list else @parent << list end @parent = list end
Source
# File lib/rabbit/parser/wiki/output.rb, line 151 def listitem(item) return unless @parent list_item = nil item = item.flatten paragraph = Paragraph.new(item) type = @list_type_stack.last case type when "ul" list_item = ItemListItem.new(paragraph) @parent << list_item when "ol" list_item = EnumListItem.new(paragraph) list_item.order = @enum_order_stack.last @enum_order_stack[-1] += 1 @parent << list_item else unsupported_list_type end return unless paragraph.have_wait_tag? paragraph.default_visible = true paragraph.clear_theme register_pause(list_item) end
Source
# File lib/rabbit/parser/wiki/output.rb, line 301 def paragraph(contents) return unless @parent paragraph = Paragraph.new(contents.flatten) register_pause(paragraph) if paragraph.have_wait_tag? @parent << paragraph end
Source
# File lib/rabbit/parser/wiki/output.rb, line 295 def preformatted(contents) return unless @parent @parent << PreformattedBlock.new(PreformattedText.new(contents)) end
Source
# File lib/rabbit/parser/wiki/output.rb, line 43 def reset @title_slide = false @slides = [] @parent = nil @index = {} @slide_property_mode = false @target_slide = nil @enum_order_stack = [] @list_type_stack = [] @foot_texts = [] end
Source
# File lib/rabbit/parser/wiki/output.rb, line 333 def strong(item) Emphasis.new(Emphasis.new(item)) end
Source
# File lib/rabbit/parser/wiki/output.rb, line 222 def table_close return unless @parent @table << @table_head if @have_table_header @table << @table_body if @have_table_body @parent = @table.parent end
Source
# File lib/rabbit/parser/wiki/output.rb, line 256 def table_data(item, rs, cs) return unless @parent @have_table_body = true @table_body << @parent if @parent.parent.nil? @parent << TableCell.new(item) end
Source
# File lib/rabbit/parser/wiki/output.rb, line 244 def table_head(item, rs, cs) return unless @parent @have_table_header = true @table_head << @parent if @parent.parent.nil? header = TableHeader.new(item) def header.default_align Pango::Alignment::CENTER end @parent << header end
Source
# File lib/rabbit/parser/wiki/output.rb, line 208 def table_open return unless @parent @table = Table.new @parent << @table @parent = @table @table_head = TableHead.new @table_body = TableBody.new @have_table_header = false @have_table_body = false end
Source
# File lib/rabbit/parser/wiki/output.rb, line 238 def table_record_close return unless @parent @parent = @parent.parent end
Source
# File lib/rabbit/parser/wiki/output.rb, line 231 def table_record_open return unless @parent @parent = TableRow.new @table_record_type = nil end
Source
# File lib/rabbit/parser/wiki/output.rb, line 345 def text(str) Text.new(Ext::Escape.escape_meta_character(str)) end
Private Instance Methods
Source
# File lib/rabbit/parser/wiki/output.rb, line 367 def evaluate_block_plugin(src) BlockPlugin.new(self).instance_eval(src, "(block plugin)") rescue ParseError raise rescue @canvas.logger.warn($!) nil end
Source
# File lib/rabbit/parser/wiki/output.rb, line 358 def evaluate_inline_plugin(src) InlinePlugin.new(self).instance_eval(src, "(inline plugin)") rescue ParseError raise rescue @canvas.logger.warn($!) nil end
Source
# File lib/rabbit/parser/wiki/output.rb, line 354 def unsupported_list_type(type) @canvas.logger.warn(_("unsupported list type: %s") % type) end