asciidoctor 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of asciidoctor might be problematic. Click here for more details.
- data/README.asciidoc +11 -2
- data/asciidoctor.gemspec +3 -2
- data/lib/asciidoctor.rb +95 -62
- data/lib/asciidoctor/abstract_block.rb +7 -5
- data/lib/asciidoctor/abstract_node.rb +63 -15
- data/lib/asciidoctor/attribute_list.rb +3 -1
- data/lib/asciidoctor/backends/base_template.rb +17 -7
- data/lib/asciidoctor/backends/docbook45.rb +182 -150
- data/lib/asciidoctor/backends/html5.rb +138 -110
- data/lib/asciidoctor/block.rb +21 -18
- data/lib/asciidoctor/callouts.rb +3 -1
- data/lib/asciidoctor/cli/invoker.rb +3 -3
- data/lib/asciidoctor/cli/options.rb +6 -6
- data/lib/asciidoctor/debug.rb +7 -6
- data/lib/asciidoctor/document.rb +197 -25
- data/lib/asciidoctor/errors.rb +1 -1
- data/lib/asciidoctor/helpers.rb +29 -0
- data/lib/asciidoctor/inline.rb +11 -4
- data/lib/asciidoctor/lexer.rb +338 -182
- data/lib/asciidoctor/list_item.rb +14 -12
- data/lib/asciidoctor/reader.rb +423 -206
- data/lib/asciidoctor/renderer.rb +59 -15
- data/lib/asciidoctor/section.rb +7 -4
- data/lib/asciidoctor/substituters.rb +536 -511
- data/lib/asciidoctor/table.rb +473 -472
- data/lib/asciidoctor/version.rb +1 -1
- data/man/asciidoctor.1 +23 -14
- data/man/asciidoctor.ad +13 -7
- data/test/attributes_test.rb +42 -8
- data/test/blocks_test.rb +161 -1
- data/test/document_test.rb +134 -16
- data/test/invoker_test.rb +14 -6
- data/test/lexer_test.rb +45 -18
- data/test/lists_test.rb +79 -0
- data/test/paragraphs_test.rb +9 -1
- data/test/reader_test.rb +456 -19
- data/test/sections_test.rb +19 -0
- data/test/substitutions_test.rb +14 -12
- data/test/tables_test.rb +10 -10
- metadata +3 -5
data/README.asciidoc
CHANGED
@@ -75,13 +75,13 @@ To invoke it, simply execute:
|
|
75
75
|
|
76
76
|
This will use the built-in defaults for options and create a new file
|
77
77
|
in the same directory as the input file, with the same base name, but
|
78
|
-
with the .html
|
78
|
+
with the .html extension.
|
79
79
|
|
80
80
|
There are many other options available and full help is provided via:
|
81
81
|
|
82
82
|
asciidoctor --help
|
83
83
|
|
84
|
-
|
84
|
+
or in the http://asciidoctor.org/man/asciidoctor[man page].
|
85
85
|
|
86
86
|
There is also an `asciidoctor-safe` command, which turns on safe mode
|
87
87
|
by default, preventing access to files outside the parent directory of
|
@@ -279,6 +279,15 @@ providing patches in a timely fashion. If critical issues for a
|
|
279
279
|
particular implementation exist at the time of a major release,
|
280
280
|
support for that Ruby version may be dropped.
|
281
281
|
|
282
|
+
== Authors
|
283
|
+
|
284
|
+
*Asciidoctor* was written by Ryan Waldron, Dan Allen and
|
285
|
+
https://github.com/asciidoctor/asciidoctor/graphs/contributors[other
|
286
|
+
contributors].
|
287
|
+
|
288
|
+
*AsciiDoc* was written by Stuart Rackham and has received
|
289
|
+
contributions from many other individuals.
|
290
|
+
|
282
291
|
== Copyright
|
283
292
|
|
284
293
|
Copyright (C) 2012 Ryan Waldron.
|
data/asciidoctor.gemspec
CHANGED
@@ -13,8 +13,8 @@ Gem::Specification.new do |s|
|
|
13
13
|
## If your rubyforge_project name is different, then edit it and comment out
|
14
14
|
## the sub! line in the Rakefile
|
15
15
|
s.name = 'asciidoctor'
|
16
|
-
s.version = '0.1.
|
17
|
-
s.date = '2013-02-
|
16
|
+
s.version = '0.1.1'
|
17
|
+
s.date = '2013-02-26'
|
18
18
|
s.rubyforge_project = 'asciidoctor'
|
19
19
|
|
20
20
|
## Make sure your summary is short. The description may be as long
|
@@ -82,6 +82,7 @@ Gem::Specification.new do |s|
|
|
82
82
|
lib/asciidoctor/debug.rb
|
83
83
|
lib/asciidoctor/document.rb
|
84
84
|
lib/asciidoctor/errors.rb
|
85
|
+
lib/asciidoctor/helpers.rb
|
85
86
|
lib/asciidoctor/inline.rb
|
86
87
|
lib/asciidoctor/lexer.rb
|
87
88
|
lib/asciidoctor/list_item.rb
|
data/lib/asciidoctor.rb
CHANGED
@@ -113,6 +113,26 @@ module Asciidoctor
|
|
113
113
|
'markdown' => '.md'
|
114
114
|
}
|
115
115
|
|
116
|
+
DELIMITED_BLOCKS = {
|
117
|
+
'--' => :open,
|
118
|
+
'----' => :listing,
|
119
|
+
'....' => :literal,
|
120
|
+
'====' => :example,
|
121
|
+
'****' => :sidebar,
|
122
|
+
'____' => :quote,
|
123
|
+
'++++' => :pass,
|
124
|
+
'|===' => :table,
|
125
|
+
'!===' => :table,
|
126
|
+
'////' => :comment,
|
127
|
+
'```' => :fenced_code,
|
128
|
+
'~~~' => :fenced_code
|
129
|
+
}
|
130
|
+
|
131
|
+
BREAK_LINES = {
|
132
|
+
%q{'''} => :ruler,
|
133
|
+
'<<<' => :page_break
|
134
|
+
}
|
135
|
+
|
116
136
|
LIST_CONTEXTS = [:ulist, :olist, :dlist, :colist]
|
117
137
|
|
118
138
|
NESTABLE_LIST_CONTEXTS = [:ulist, :olist, :dlist]
|
@@ -120,7 +140,7 @@ module Asciidoctor
|
|
120
140
|
ORDERED_LIST_STYLES = [:arabic, :loweralpha, :lowerroman, :upperalpha, :upperroman]
|
121
141
|
|
122
142
|
ORDERED_LIST_MARKER_PATTERNS = {
|
123
|
-
:arabic => /\d+[
|
143
|
+
:arabic => /\d+[.>]/,
|
124
144
|
:loweralpha => /[a-z]\./,
|
125
145
|
:upperalpha => /[A-Z]\./,
|
126
146
|
:lowerroman => /[ivx]+\)/,
|
@@ -129,6 +149,9 @@ module Asciidoctor
|
|
129
149
|
|
130
150
|
LIST_CONTINUATION = '+'
|
131
151
|
|
152
|
+
LINE_BREAK = ' +'
|
153
|
+
|
154
|
+
# NOTE allows for empty space in line as it could be left by the template engine
|
132
155
|
BLANK_LINES_PATTERN = /^\s*\n/
|
133
156
|
|
134
157
|
LINE_FEED_ENTITY = ' ' # or 

|
@@ -142,10 +165,10 @@ module Asciidoctor
|
|
142
165
|
# [enclosed text here] or [enclosed [text\] here]
|
143
166
|
REGEXP = {
|
144
167
|
# [[Foo]]
|
145
|
-
:anchor => /^\[\[([^\[\]]+)\]\]
|
168
|
+
:anchor => /^\[\[([^\[\]]+)\]\]$/,
|
146
169
|
|
147
170
|
# Foowhatevs [[Bar]]
|
148
|
-
:anchor_embedded => /^(.*?)\s*\[\[([^\[\]]+)\]\]
|
171
|
+
:anchor_embedded => /^(.*?)\s*\[\[([^\[\]]+)\]\]$/,
|
149
172
|
|
150
173
|
# [[ref]] (anywhere inline)
|
151
174
|
:anchor_macro => /\\?\[\[([\w":].*?)\]\]/,
|
@@ -153,14 +176,12 @@ module Asciidoctor
|
|
153
176
|
# matches any block delimiter:
|
154
177
|
# open, listing, example, literal, comment, quote, sidebar, passthrough, table
|
155
178
|
# NOTE position the most common blocks towards the front of the pattern
|
156
|
-
:any_blk => %r{^(
|
157
|
-
|
158
|
-
# optimization when scanning lines for blocks
|
159
|
-
# NOTE accessing the first element before calling ord is first Ruby 1.8.7 compat
|
160
|
-
:any_blk_ord => %w(- = . / _ * + | !).map {|c| c[0].ord },
|
179
|
+
:any_blk => %r{^(?:--|(?:-|\.|=|\*|_|\+|/){4,}|[\|!]={3,}|(?:`|~){3,}.*)$},
|
161
180
|
|
162
181
|
# :foo: bar
|
163
|
-
:
|
182
|
+
# :Author: Dan
|
183
|
+
# :numbered!:
|
184
|
+
:attr_entry => /^:(\w.*?):(?:[[:blank:]]+(.*))?$/,
|
164
185
|
|
165
186
|
# {name?value}
|
166
187
|
:attr_conditional => /^\s*\{([^\?]+)\?\s*([^\}]+)\s*\}/,
|
@@ -173,7 +194,7 @@ module Asciidoctor
|
|
173
194
|
:attr_continue => /^[[:blank:]]*(.*)[[:blank:]]\+[[:blank:]]*$/,
|
174
195
|
|
175
196
|
# :foo!:
|
176
|
-
:attr_delete => /^:([^:]+)
|
197
|
+
:attr_delete => /^:([^:]+)!:$/,
|
177
198
|
|
178
199
|
# An attribute list above a block element
|
179
200
|
#
|
@@ -185,20 +206,20 @@ module Asciidoctor
|
|
185
206
|
# [{lead}]
|
186
207
|
:blk_attr_list => /^\[([\w\{].*)\]$/,
|
187
208
|
|
188
|
-
# attribute list or
|
209
|
+
# block attribute list or block id (bulk query)
|
189
210
|
:attr_line => /^\[([\w\{].*|\[[^\[\]]+\])\]$/,
|
190
211
|
|
191
212
|
# attribute reference
|
192
213
|
# {foo}
|
193
214
|
# {counter:pcount:1}
|
194
|
-
:attr_ref => /(\\?)\{(\w
|
215
|
+
:attr_ref => /(\\?)\{(\w+(?:[\-:]\w+)*)(\\?)\}/,
|
195
216
|
|
196
217
|
# The author info line the appears immediately following the document title
|
197
218
|
# John Doe <john@anonymous.com>
|
198
|
-
:author_info => /^\s*(\w[\w\-'
|
219
|
+
:author_info => /^\s*(\w[\w\-'.]*)(?: +(\w[\w\-'.]*))?(?: +(\w[\w\-'.]*))?(?: +<([^>]+)>)?$/,
|
199
220
|
|
200
221
|
# [[[Foo]]] (anywhere inline)
|
201
|
-
:biblio_macro => /\\?\[\[\[([\w:][\w
|
222
|
+
:biblio_macro => /\\?\[\[\[([\w:][\w:.-]*?)\]\]\]/,
|
202
223
|
|
203
224
|
# callout reference inside literal text
|
204
225
|
# <1>
|
@@ -213,10 +234,10 @@ module Asciidoctor
|
|
213
234
|
# ////
|
214
235
|
# comment block
|
215
236
|
# ////
|
216
|
-
:comment_blk => %r{^/{4,}
|
237
|
+
:comment_blk => %r{^/{4,}$},
|
217
238
|
|
218
239
|
# // (and then whatever)
|
219
|
-
:comment => %r{^//([^/]
|
240
|
+
:comment => %r{^//(?:[^/]|$)},
|
220
241
|
|
221
242
|
# one,two
|
222
243
|
# one, two
|
@@ -243,7 +264,7 @@ module Asciidoctor
|
|
243
264
|
';;' => /^\s*(.*)(;;)(?:[[:blank:]]+(.*))?$/
|
244
265
|
},
|
245
266
|
# ====
|
246
|
-
|
267
|
+
#:example => /^={4,}$/,
|
247
268
|
|
248
269
|
# footnote:[text]
|
249
270
|
# footnoteref:[id,text]
|
@@ -251,7 +272,7 @@ module Asciidoctor
|
|
251
272
|
:footnote_macro => /\\?(footnote|footnoteref):\[((?:\\\]|[^\]])*?)\]/m,
|
252
273
|
|
253
274
|
# image::filename.png[Caption]
|
254
|
-
:image_blk => /^image::(\S+?)\[(.*?)\]
|
275
|
+
:image_blk => /^image::(\S+?)\[(.*?)\]$/,
|
255
276
|
|
256
277
|
# image:filename.png[Alt Text]
|
257
278
|
:image_macro => /\\?image:([^\[]+)(?:\[([^\]]*)\])/,
|
@@ -274,27 +295,27 @@ module Asciidoctor
|
|
274
295
|
# + (would not match because there's no space before +)
|
275
296
|
# + (would match and capture '')
|
276
297
|
# Foo + (would and capture 'Foo')
|
277
|
-
:line_break => /^(.*)[[:blank:]]
|
298
|
+
:line_break => /^(.*)[[:blank:]]\+$/,
|
278
299
|
|
279
300
|
# inline link and some inline link macro
|
280
301
|
# FIXME revisit!
|
281
|
-
:link_inline => %r{(^|link:|\s|>|<|[\(\)\[\]])(\\?https
|
302
|
+
:link_inline => %r{(^|link:|\s|>|<|[\(\)\[\]])(\\?(?:https?|ftp)://[^\s\[<]*[^\s.\)\[<])(?:\[((?:\\\]|[^\]])*?)\])?},
|
282
303
|
|
283
304
|
# inline link macro
|
284
305
|
# link:path[label]
|
285
306
|
:link_macro => /\\?link:([^\s\[]+)(?:\[((?:\\\]|[^\]])*?)\])/,
|
286
307
|
|
287
308
|
# ----
|
288
|
-
|
309
|
+
#:listing => /^\-{4,}$/,
|
289
310
|
|
290
311
|
# ....
|
291
|
-
|
312
|
+
#:literal => /^\.{4,}$/,
|
292
313
|
|
293
314
|
# <TAB>Foo or one-or-more-spaces-or-tabs then whatever
|
294
315
|
:lit_par => /^([[:blank:]]+.*)$/,
|
295
316
|
|
296
317
|
# --
|
297
|
-
|
318
|
+
#:open_blk => /^\-\-$/,
|
298
319
|
|
299
320
|
# . Foo (up to 5 consecutive dots)
|
300
321
|
# 1. Foo (arabic, default)
|
@@ -304,8 +325,12 @@ module Asciidoctor
|
|
304
325
|
# I. Foo (upperroman)
|
305
326
|
:olist => /^\s*(\d+\.|[a-z]\.|[ivx]+\)|\.{1,5}) +(.*)$/i,
|
306
327
|
|
328
|
+
# ''' (ruler)
|
329
|
+
# <<< (pagebreak)
|
330
|
+
:break_line => /^('|<){3,}$/,
|
331
|
+
|
307
332
|
# ++++
|
308
|
-
|
333
|
+
#:pass => /^\+{4,}$/,
|
309
334
|
|
310
335
|
# inline passthrough macros
|
311
336
|
# +++text+++
|
@@ -325,33 +350,36 @@ module Asciidoctor
|
|
325
350
|
:pass_placeholder => /\x0(\d+)\x0/,
|
326
351
|
|
327
352
|
# ____
|
328
|
-
|
353
|
+
#:quote => /^_{4,}$/,
|
329
354
|
|
330
355
|
# The document revision info line the appears immediately following the
|
331
356
|
# document title author info line, if present
|
332
357
|
# v1.0, 2013-01-01: Ring in the new year release
|
333
|
-
:revision_info =>
|
358
|
+
:revision_info => /^(?:\D*(.*?),)?(?:\s*(?!:)(.*?))(?:\s*(?!^):\s*(.*))?$/,
|
334
359
|
|
335
360
|
# '''
|
336
|
-
|
361
|
+
#:ruler => /^'{3,}$/,
|
337
362
|
|
338
363
|
# ****
|
339
|
-
|
364
|
+
#:sidebar_blk => /^\*{4,}$/,
|
340
365
|
|
341
366
|
# \' within a word
|
342
367
|
:single_quote_esc => /(\w)\\'(\w)/,
|
343
368
|
# an alternative if our backend generated single-quoted html/xml attributes
|
344
369
|
#:single_quote_esc => /(\w|=)\\'(\w)/,
|
345
370
|
|
371
|
+
# used for sanitizing attribute names
|
372
|
+
:illegal_attr_name_chars => /[^\w\-]/,
|
373
|
+
|
346
374
|
# |===
|
347
375
|
# |table
|
348
376
|
# |===
|
349
|
-
|
377
|
+
#:table => /^\|={3,}$/,
|
350
378
|
|
351
379
|
# !===
|
352
380
|
# !table
|
353
381
|
# !===
|
354
|
-
|
382
|
+
#:table_nested => /^!={3,}$/,
|
355
383
|
|
356
384
|
# 1*h,2*,^3e
|
357
385
|
:table_colspec => /^(?:(\d+)\*)?([<^>](?:\.[<^>]?)?|(?:[<^>]?\.)?[<^>])?(\d+)?([a-z])?$/,
|
@@ -364,7 +392,11 @@ module Asciidoctor
|
|
364
392
|
},
|
365
393
|
|
366
394
|
# .Foo but not . Foo or ..Foo
|
367
|
-
:blk_title => /^\.([^\s
|
395
|
+
:blk_title => /^\.([^\s.].*)$/,
|
396
|
+
|
397
|
+
:dbl_quoted => /^("|)(.*)\1$/,
|
398
|
+
|
399
|
+
:m_dbl_quoted => /^("|)(.*)\1$/m,
|
368
400
|
|
369
401
|
# == Foo
|
370
402
|
# ^ yields a level 2 title
|
@@ -379,13 +411,13 @@ module Asciidoctor
|
|
379
411
|
# match[1] is the delimiter, whose length determines the level
|
380
412
|
# match[2] is the title itself
|
381
413
|
# match[3] is an inline anchor, which becomes the section id
|
382
|
-
:section_title => /^(={1,5})\s+(\S.*?)
|
414
|
+
:section_title => /^(={1,5})\s+(\S.*?)(?:\s*\[\[([^\[]+)\]\])?(?:\s+\1)?$/,
|
383
415
|
|
384
416
|
# does not begin with a dot and has at least one alphanumeric character
|
385
|
-
:section_name => /^((?=.*\w+.*)[
|
417
|
+
:section_name => /^((?=.*\w+.*)[^.].*?)$/,
|
386
418
|
|
387
419
|
# ====== || ------ || ~~~~~~ || ^^^^^^ || ++++++
|
388
|
-
:section_underline => /^([=\-~^\+])
|
420
|
+
:section_underline => /^([=\-~^\+])+$/,
|
389
421
|
|
390
422
|
# * Foo (up to 5 consecutive asterisks)
|
391
423
|
# - Foo
|
@@ -398,14 +430,25 @@ module Asciidoctor
|
|
398
430
|
|
399
431
|
# ifdef::basebackend-html[]
|
400
432
|
# ifndef::theme[]
|
401
|
-
|
402
|
-
|
433
|
+
# ifeval::["{asciidoctor-version}" >= "0.1.0"]
|
434
|
+
# ifdef::asciidoctor[Asciidoctor!]
|
403
435
|
# endif::theme[]
|
404
436
|
# endif::basebackend-html[]
|
405
|
-
|
437
|
+
# endif::[]
|
438
|
+
:ifdef_macro => /^[\\]?(ifdef|ifndef|ifeval|endif)::(\S*?(?:([,\+])\S+?)?)\[(.+)?\]$/,
|
439
|
+
|
440
|
+
# "{asciidoctor-version}" >= "0.1.0"
|
441
|
+
:eval_expr => /^(\S.*?)[[:blank:]]*(==|!=|<=|>=|<|>)[[:blank:]]*(\S.*)$/,
|
442
|
+
# ...or if we want to be more strict up front about what's on each side
|
443
|
+
#:eval_expr => /^(true|false|("|'|)\{\w+(?:\-\w+)*\}\2|("|')[^\3]*\3|\-?\d+(?:\.\d+)*)[[:blank:]]*(==|!=|<=|>=|<|>)[[:blank:]]*(true|false|("|'|)\{\w+(?:\-\w+)*\}\6|("|')[^\7]*\7|\-?\d+(?:\.\d+)*)$/,
|
406
444
|
|
407
445
|
# include::chapter1.ad[]
|
408
|
-
:include_macro => /^\\?include::([^\[]+)\[\]
|
446
|
+
:include_macro => /^\\?include::([^\[]+)\[\]$/,
|
447
|
+
|
448
|
+
# http://domain
|
449
|
+
# https://domain
|
450
|
+
# data:info
|
451
|
+
:uri_sniff => /^[[:alpha:]][[:alnum:].+-]*:/i
|
409
452
|
}
|
410
453
|
|
411
454
|
ADMONITION_STYLES = ['NOTE', 'TIP', 'IMPORTANT', 'WARNING', 'CAUTION']
|
@@ -508,7 +551,7 @@ module Asciidoctor
|
|
508
551
|
# (TM)
|
509
552
|
[/(^|[^\\])\(TM\)/, '\1™'],
|
510
553
|
# foo -- bar
|
511
|
-
[/(^|\n| )-- /, ' — '],
|
554
|
+
[/(^|\n| )--( |\n|$)/, ' — '],
|
512
555
|
# foo--bar
|
513
556
|
[/(\w)--(?=\w)/, '\1—'],
|
514
557
|
# ellipsis
|
@@ -654,7 +697,7 @@ module Asciidoctor
|
|
654
697
|
|
655
698
|
if !File.directory? to_dir
|
656
699
|
if mkdirs
|
657
|
-
require_library 'fileutils'
|
700
|
+
Helpers.require_library 'fileutils'
|
658
701
|
FileUtils.mkdir_p to_dir
|
659
702
|
else
|
660
703
|
raise IOError, "target directory does not exist: #{to_dir}"
|
@@ -684,29 +727,18 @@ module Asciidoctor
|
|
684
727
|
Asciidoctor.render(File.new(filename), options, &block)
|
685
728
|
end
|
686
729
|
|
687
|
-
#
|
688
|
-
#
|
689
|
-
#
|
690
|
-
#
|
691
|
-
#
|
692
|
-
#
|
693
|
-
#
|
694
|
-
def self.require_library(name)
|
695
|
-
if Thread.list.size > 1
|
696
|
-
main_script = "#{name}.rb"
|
697
|
-
main_script_path_segment = "/#{name}.rb"
|
698
|
-
if !$LOADED_FEATURES.detect {|p| p == main_script || p.end_with?(main_script_path_segment) }.nil?
|
699
|
-
return false
|
700
|
-
else
|
701
|
-
warn "WARN: asciidoctor is autoloading '#{name}' in threaded environment. " +
|
702
|
-
"The use of an explicit require '#{name}' statement is recommended."
|
703
|
-
end
|
704
|
-
end
|
705
|
-
require name
|
706
|
-
end
|
730
|
+
# NOTE still contemplating this method
|
731
|
+
#def self.parse_document_header(input, options = {})
|
732
|
+
# document = Document.new [], options
|
733
|
+
# reader = Reader.new input, document, true
|
734
|
+
# Lexer.parse_document_header reader, document
|
735
|
+
# document
|
736
|
+
#end
|
707
737
|
|
708
738
|
# modules
|
739
|
+
require 'asciidoctor/debug'
|
709
740
|
require 'asciidoctor/substituters'
|
741
|
+
require 'asciidoctor/helpers'
|
710
742
|
|
711
743
|
# abstract classes
|
712
744
|
require 'asciidoctor/abstract_node'
|
@@ -717,9 +749,8 @@ module Asciidoctor
|
|
717
749
|
require 'asciidoctor/backends/base_template'
|
718
750
|
require 'asciidoctor/block'
|
719
751
|
require 'asciidoctor/callouts'
|
720
|
-
require 'asciidoctor/debug'
|
721
752
|
require 'asciidoctor/document'
|
722
|
-
require 'asciidoctor/errors'
|
753
|
+
#require 'asciidoctor/errors'
|
723
754
|
require 'asciidoctor/inline'
|
724
755
|
require 'asciidoctor/lexer'
|
725
756
|
require 'asciidoctor/list_item'
|
@@ -727,5 +758,7 @@ module Asciidoctor
|
|
727
758
|
require 'asciidoctor/renderer'
|
728
759
|
require 'asciidoctor/section'
|
729
760
|
require 'asciidoctor/table'
|
761
|
+
|
762
|
+
# info
|
730
763
|
require 'asciidoctor/version'
|
731
764
|
end
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
module Asciidoctor
|
2
|
+
class AbstractBlock < AbstractNode
|
2
3
|
# Public: Get the Array of Asciidoctor::AbstractBlock sub-blocks for this block
|
3
4
|
attr_reader :blocks
|
4
5
|
|
@@ -15,7 +16,7 @@ class Asciidoctor::AbstractBlock < Asciidoctor::AbstractNode
|
|
15
16
|
@title = nil
|
16
17
|
if context == :document
|
17
18
|
@level = 0
|
18
|
-
elsif !parent.nil? && !self.is_a?(
|
19
|
+
elsif !parent.nil? && !self.is_a?(Section)
|
19
20
|
@level = parent.level
|
20
21
|
else
|
21
22
|
@level = nil
|
@@ -94,7 +95,7 @@ class Asciidoctor::AbstractBlock < Asciidoctor::AbstractNode
|
|
94
95
|
#
|
95
96
|
# Returns nothing.
|
96
97
|
def <<(block)
|
97
|
-
if block.is_a?(
|
98
|
+
if block.is_a?(Section)
|
98
99
|
assign_index(block)
|
99
100
|
end
|
100
101
|
@blocks << block
|
@@ -183,7 +184,7 @@ class Asciidoctor::AbstractBlock < Asciidoctor::AbstractNode
|
|
183
184
|
# returns an Array of Section objects
|
184
185
|
def sections
|
185
186
|
@blocks.inject([]) {|collector, block|
|
186
|
-
collector << block if block.is_a?(
|
187
|
+
collector << block if block.is_a?(Section)
|
187
188
|
collector
|
188
189
|
}
|
189
190
|
end
|
@@ -209,10 +210,11 @@ class Asciidoctor::AbstractBlock < Asciidoctor::AbstractNode
|
|
209
210
|
def reindex_sections
|
210
211
|
@next_section_index = 0
|
211
212
|
@blocks.each {|block|
|
212
|
-
if block.is_a?(
|
213
|
+
if block.is_a?(Section)
|
213
214
|
assign_index(block)
|
214
215
|
block.reindex_sections
|
215
216
|
end
|
216
217
|
}
|
217
218
|
end
|
218
219
|
end
|
220
|
+
end
|