Class: Rabbit::Parser::Wiki::RabbitOutput
- Inherits:
-
Object
- Object
- Rabbit::Parser::Wiki::RabbitOutput
show all
- Includes:
- Element, PauseSupport
- Defined in:
- lib/rabbit/parser/wiki/output.rb
Defined Under Namespace
Classes: BlockPlugin, InlinePlugin
Instance Attribute Summary collapse
Instance Method Summary
collapse
#burn_out_pause_targets, #pause_targets, #register_pause, #unregister_pause
Constructor Details
Returns a new instance of RabbitOutput.
40
41
42
|
# File 'lib/rabbit/parser/wiki/output.rb', line 40
def initialize(canvas)
@canvas = canvas
end
|
Instance Attribute Details
#canvas ⇒ Object
Returns the value of attribute canvas.
39
40
41
|
# File 'lib/rabbit/parser/wiki/output.rb', line 39
def canvas
@canvas
end
|
Instance Method Details
#block_plugin(src) ⇒ Object
310
311
312
313
314
315
316
|
# File 'lib/rabbit/parser/wiki/output.rb', line 310
def block_plugin(src)
return unless @parent
result = evaluate_block_plugin(src)
return if result == :no_element
@parent << (result || text("{{#{src}}}"))
end
|
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
|
# File 'lib/rabbit/parser/wiki/output.rb', line 279
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
|
#blockquote_close ⇒ Object
273
274
275
276
277
|
# File 'lib/rabbit/parser/wiki/output.rb', line 273
def blockquote_close
return unless @parent
@parent = @parent.parent
end
|
#blockquote_open ⇒ Object
265
266
267
268
269
270
271
|
# File 'lib/rabbit/parser/wiki/output.rb', line 265
def blockquote_open
return unless @parent
block_quote = BlockQuote.new
@parent << block_quote
@parent = block_quote
end
|
#container(_for = nil) ⇒ Object
67
68
69
|
# File 'lib/rabbit/parser/wiki/output.rb', line 67
def container(_for=nil)
[]
end
|
#current_body ⇒ Object
71
72
73
|
# File 'lib/rabbit/parser/wiki/output.rb', line 71
def current_body
@slides.last.body
end
|
#del(item) ⇒ Object
342
343
344
|
# File 'lib/rabbit/parser/wiki/output.rb', line 342
def del(item)
DeletedText.new(item)
end
|
#dlist_close ⇒ Object
187
188
189
190
191
192
193
|
# File 'lib/rabbit/parser/wiki/output.rb', line 187
def dlist_close
return unless @parent
list = @parent
@parent = list.parent
@parent << list
end
|
#dlist_item(dt, dd) ⇒ Object
#dlist_open ⇒ Object
179
180
181
182
183
184
185
|
# File 'lib/rabbit/parser/wiki/output.rb', line 179
def dlist_open
return unless @parent
list = DescriptionList.new
list.parent = @parent
@parent = list
end
|
#em(item) ⇒ Object
338
339
340
|
# File 'lib/rabbit/parser/wiki/output.rb', line 338
def em(item)
Emphasis.new(item)
end
|
#finish ⇒ Object
60
61
62
63
64
65
|
# File 'lib/rabbit/parser/wiki/output.rb', line 60
def finish
@slides.each do |slide|
@canvas << slide
end
burn_out_pause_targets
end
|
#headline(level, title) ⇒ Object
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
# File 'lib/rabbit/parser/wiki/output.rb', line 79
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
|
#hrule ⇒ Object
105
106
107
|
# File 'lib/rabbit/parser/wiki/output.rb', line 105
def hrule
@canvas.logger.warn(_("horizontal rule is unsupported")) if @parent
end
|
#hyperlink(uri, title) ⇒ Object
323
324
325
326
327
|
# File 'lib/rabbit/parser/wiki/output.rb', line 323
def hyperlink(uri, title)
ref = ReferText.new(title)
ref.to = uri
ref
end
|
#image_hyperlink(uri, alt = nil) ⇒ Object
inline image is not supported yet…
330
331
332
|
# File 'lib/rabbit/parser/wiki/output.rb', line 330
def image_hyperlink(uri, alt=nil)
Ext::Image.make_image(@canvas, uri, "caption" => alt) || Text.new(uri)
end
|
#inline_plugin(src) ⇒ Object
350
351
352
|
# File 'lib/rabbit/parser/wiki/output.rb', line 350
def inline_plugin(src)
evaluate_inline_plugin(src) || text("{{#{src}}}")
end
|
#list_begin ⇒ Object
109
110
|
# File 'lib/rabbit/parser/wiki/output.rb', line 109
def list_begin
end
|
#list_close(type) ⇒ Object
137
138
139
140
141
142
143
144
|
# File 'lib/rabbit/parser/wiki/output.rb', line 137
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
|
#list_end ⇒ Object
112
113
|
# File 'lib/rabbit/parser/wiki/output.rb', line 112
def list_end
end
|
#list_open(type) ⇒ Object
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
# File 'lib/rabbit/parser/wiki/output.rb', line 115
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
|
#listitem(item) ⇒ Object
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
|
# File 'lib/rabbit/parser/wiki/output.rb', line 152
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
|
#listitem_close ⇒ Object
149
150
|
# File 'lib/rabbit/parser/wiki/output.rb', line 149
def listitem_close
end
|
#listitem_open ⇒ Object
146
147
|
# File 'lib/rabbit/parser/wiki/output.rb', line 146
def listitem_open
end
|
#paragraph(contents) ⇒ Object
302
303
304
305
306
307
308
|
# File 'lib/rabbit/parser/wiki/output.rb', line 302
def paragraph(contents)
return unless @parent
paragraph = Paragraph.new(contents.flatten)
register_pause(paragraph) if paragraph.have_wait_tag?
@parent << paragraph
end
|
#reset ⇒ Object
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/rabbit/parser/wiki/output.rb', line 44
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
|
#strong(item) ⇒ Object
334
335
336
|
# File 'lib/rabbit/parser/wiki/output.rb', line 334
def strong(item)
Emphasis.new(Emphasis.new(item))
end
|
#table_close ⇒ Object
223
224
225
226
227
228
229
230
|
# File 'lib/rabbit/parser/wiki/output.rb', line 223
def table_close
return unless @parent
@table << @table_head if @have_table_header
@table << @table_body if @have_table_body
@parent = @table.parent
end
|
#table_data(item, rs, cs) ⇒ Object
257
258
259
260
261
262
263
|
# File 'lib/rabbit/parser/wiki/output.rb', line 257
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
|
#table_head(item, rs, cs) ⇒ Object
245
246
247
248
249
250
251
252
253
254
255
|
# File 'lib/rabbit/parser/wiki/output.rb', line 245
def table_head(item, rs, cs)
return unless @parent
@have_table_header = true
@table_head << @parent if @parent.parent.nil?
= TableHeader.new(item)
def .default_align
Pango::Alignment::CENTER
end
@parent <<
end
|
#table_open ⇒ Object
209
210
211
212
213
214
215
216
217
218
219
220
221
|
# File 'lib/rabbit/parser/wiki/output.rb', line 209
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
|
#table_record_close ⇒ Object
239
240
241
242
243
|
# File 'lib/rabbit/parser/wiki/output.rb', line 239
def table_record_close
return unless @parent
@parent = @parent.parent
end
|
#table_record_open ⇒ Object
232
233
234
235
236
237
|
# File 'lib/rabbit/parser/wiki/output.rb', line 232
def table_record_open
return unless @parent
@parent = TableRow.new
@table_record_type = nil
end
|