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.
22
23
24
|
# File 'lib/rabbit/parser/wiki/output.rb', line 22
def initialize(canvas)
@canvas = canvas
end
|
Instance Attribute Details
#canvas ⇒ Object
Returns the value of attribute canvas.
21
22
23
|
# File 'lib/rabbit/parser/wiki/output.rb', line 21
def canvas
@canvas
end
|
Instance Method Details
#block_plugin(src) ⇒ Object
292
293
294
295
296
297
298
|
# File 'lib/rabbit/parser/wiki/output.rb', line 292
def block_plugin(src)
return unless @parent
result = evaluate_block_plugin(src)
return if result == :no_element
@parent << (result || text("{{#{src}}}"))
end
|
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
|
# File 'lib/rabbit/parser/wiki/output.rb', line 261
def block_preformatted(contents, info)
return unless @parent
lang = info ? info.downcase : nil
result = nil
if lang
result = Ext::CodeRay.highlight(lang, contents, @canvas.logger)
end
if result
@parent << result
else
preformatted(text(contents))
end
end
|
#blockquote_close ⇒ Object
255
256
257
258
259
|
# File 'lib/rabbit/parser/wiki/output.rb', line 255
def blockquote_close
return unless @parent
@parent = @parent.parent
end
|
#blockquote_open ⇒ Object
247
248
249
250
251
252
253
|
# File 'lib/rabbit/parser/wiki/output.rb', line 247
def blockquote_open
return unless @parent
block_quote = BlockQuote.new
@parent << block_quote
@parent = block_quote
end
|
#container(_for = nil) ⇒ Object
49
50
51
|
# File 'lib/rabbit/parser/wiki/output.rb', line 49
def container(_for=nil)
[]
end
|
#current_body ⇒ Object
53
54
55
|
# File 'lib/rabbit/parser/wiki/output.rb', line 53
def current_body
@slides.last.body
end
|
#del(item) ⇒ Object
324
325
326
|
# File 'lib/rabbit/parser/wiki/output.rb', line 324
def del(item)
DeletedText.new(item)
end
|
#dlist_close ⇒ Object
169
170
171
172
173
174
175
|
# File 'lib/rabbit/parser/wiki/output.rb', line 169
def dlist_close
return unless @parent
list = @parent
@parent = list.parent
@parent << list
end
|
#dlist_item(dt, dd) ⇒ Object
#dlist_open ⇒ Object
161
162
163
164
165
166
167
|
# File 'lib/rabbit/parser/wiki/output.rb', line 161
def dlist_open
return unless @parent
list = DescriptionList.new
list.parent = @parent
@parent = list
end
|
#em(item) ⇒ Object
320
321
322
|
# File 'lib/rabbit/parser/wiki/output.rb', line 320
def em(item)
Emphasis.new(item)
end
|
#finish ⇒ Object
42
43
44
45
46
47
|
# File 'lib/rabbit/parser/wiki/output.rb', line 42
def finish
@slides.each do |slide|
@canvas << slide
end
burn_out_pause_targets
end
|
#headline(level, title) ⇒ Object
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# File 'lib/rabbit/parser/wiki/output.rb', line 61
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 = 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
87
88
89
|
# File 'lib/rabbit/parser/wiki/output.rb', line 87
def hrule
@canvas.logger.warn(_("horizontal rule is unsupported")) if @parent
end
|
#hyperlink(uri, title) ⇒ Object
305
306
307
308
309
|
# File 'lib/rabbit/parser/wiki/output.rb', line 305
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…
312
313
314
|
# File 'lib/rabbit/parser/wiki/output.rb', line 312
def image_hyperlink(uri, alt=nil)
Ext::Image.make_image(@canvas, uri, "caption" => alt) || Text.new(uri)
end
|
#inline_plugin(src) ⇒ Object
332
333
334
|
# File 'lib/rabbit/parser/wiki/output.rb', line 332
def inline_plugin(src)
evaluate_inline_plugin(src) || text("{{#{src}}}")
end
|
#list_begin ⇒ Object
91
92
|
# File 'lib/rabbit/parser/wiki/output.rb', line 91
def list_begin
end
|
#list_close(type) ⇒ Object
119
120
121
122
123
124
125
126
|
# File 'lib/rabbit/parser/wiki/output.rb', line 119
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
94
95
|
# File 'lib/rabbit/parser/wiki/output.rb', line 94
def list_end
end
|
#list_open(type) ⇒ Object
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
# File 'lib/rabbit/parser/wiki/output.rb', line 97
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
# File 'lib/rabbit/parser/wiki/output.rb', line 134
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
131
132
|
# File 'lib/rabbit/parser/wiki/output.rb', line 131
def listitem_close
end
|
#listitem_open ⇒ Object
128
129
|
# File 'lib/rabbit/parser/wiki/output.rb', line 128
def listitem_open
end
|
#paragraph(contents) ⇒ Object
284
285
286
287
288
289
290
|
# File 'lib/rabbit/parser/wiki/output.rb', line 284
def paragraph(contents)
return unless @parent
paragraph = Paragraph.new(contents.flatten)
register_pause(paragraph) if paragraph.have_wait_tag?
@parent << paragraph
end
|
#reset ⇒ Object
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/rabbit/parser/wiki/output.rb', line 26
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
316
317
318
|
# File 'lib/rabbit/parser/wiki/output.rb', line 316
def strong(item)
Emphasis.new(Emphasis.new(item))
end
|
#table_close ⇒ Object
205
206
207
208
209
210
211
212
|
# File 'lib/rabbit/parser/wiki/output.rb', line 205
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
239
240
241
242
243
244
245
|
# File 'lib/rabbit/parser/wiki/output.rb', line 239
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
227
228
229
230
231
232
233
234
235
236
237
|
# File 'lib/rabbit/parser/wiki/output.rb', line 227
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::Layout::ALIGN_CENTER
end
@parent <<
end
|
#table_open ⇒ Object
191
192
193
194
195
196
197
198
199
200
201
202
203
|
# File 'lib/rabbit/parser/wiki/output.rb', line 191
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
221
222
223
224
225
|
# File 'lib/rabbit/parser/wiki/output.rb', line 221
def table_record_close
return unless @parent
@parent = @parent.parent
end
|
#table_record_open ⇒ Object
214
215
216
217
218
219
|
# File 'lib/rabbit/parser/wiki/output.rb', line 214
def table_record_open
return unless @parent
@parent = TableRow.new
@table_record_type = nil
end
|