schizm 0.0.14 → 0.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/schizm/chunk.rb +9 -9
- data/lib/schizm/env.rb +11 -11
- data/lib/schizm/markup.rb +8 -0
- data/lib/schizm/parse.rb +57 -50
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 74bc927ef6f3af9381ef7897d35b00d805927aa8
|
|
4
|
+
data.tar.gz: 08908c377f6f0868cdeb479a80e3847d252c6ef8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c2bac1ac664e4c772e1a313d5f0eb718cd689fe3f388fd44874f87916daf098789dbb5b2fc7be7ee8a8f8de0b0692d7134a4d9042030ef808afae52331f63338
|
|
7
|
+
data.tar.gz: 76e248942d8ee1806ad00897cde958c003b94031c0e583a79a4e06b72ab45aa3734b74d1a37405526e956ea662e8c55433c83d9f4acc9a3b1a5d97cc848d0f9d
|
data/lib/schizm/chunk.rb
CHANGED
|
@@ -34,8 +34,8 @@ module Schizm
|
|
|
34
34
|
# Structure to resolve chunks of source code.
|
|
35
35
|
class Chunk
|
|
36
36
|
|
|
37
|
-
def initialize
|
|
38
|
-
@
|
|
37
|
+
def initialize filename, label
|
|
38
|
+
@filename = String.new filename
|
|
39
39
|
@label = String.new label
|
|
40
40
|
@share = Env.var[:share] if Env.var? :share
|
|
41
41
|
@target = nil
|
|
@@ -44,7 +44,7 @@ class Chunk
|
|
|
44
44
|
@params = Hash.new
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
attr_reader :
|
|
47
|
+
attr_reader :filename
|
|
48
48
|
attr_reader :label
|
|
49
49
|
attr_accessor :share
|
|
50
50
|
attr_accessor :target
|
|
@@ -65,12 +65,12 @@ class Chunk
|
|
|
65
65
|
return true
|
|
66
66
|
end
|
|
67
67
|
|
|
68
|
-
# Hash organizing active chunks by +@
|
|
68
|
+
# Hash organizing active chunks by +@filename+ and +@label+.
|
|
69
69
|
@@hash =
|
|
70
|
-
Hash.new do |hash,
|
|
71
|
-
hash[
|
|
70
|
+
Hash.new do |hash, filename|
|
|
71
|
+
hash[filename] =
|
|
72
72
|
Hash.new do |hash, label|
|
|
73
|
-
hash[label] = Chunk.new
|
|
73
|
+
hash[label] = Chunk.new filename, label
|
|
74
74
|
end
|
|
75
75
|
end
|
|
76
76
|
|
|
@@ -81,7 +81,7 @@ class Chunk
|
|
|
81
81
|
|
|
82
82
|
# Hash iteration interface.
|
|
83
83
|
def self.each
|
|
84
|
-
@@hash.each do |
|
|
84
|
+
@@hash.each do |filename, hash|
|
|
85
85
|
hash.each do |label, chunk|
|
|
86
86
|
yield chunk
|
|
87
87
|
end
|
|
@@ -102,7 +102,7 @@ class Chunk
|
|
|
102
102
|
def find label
|
|
103
103
|
Chunk.each do |chunk|
|
|
104
104
|
if chunk.label == label and
|
|
105
|
-
(chunk.
|
|
105
|
+
(chunk.filename == @filename or chunk.share?)
|
|
106
106
|
return chunk
|
|
107
107
|
end
|
|
108
108
|
end
|
data/lib/schizm/env.rb
CHANGED
|
@@ -449,8 +449,8 @@ SASS
|
|
|
449
449
|
doc_root = var[:output_doc]
|
|
450
450
|
src_root = var[:output_src]
|
|
451
451
|
zrc_globs = []
|
|
452
|
-
zrc_globs.push File.join(zrc_root, "*.
|
|
453
|
-
zrc_globs.push File.join(zrc_root, "*/*.
|
|
452
|
+
zrc_globs.push File.join(zrc_root, "*.zm")
|
|
453
|
+
zrc_globs.push File.join(zrc_root, "*/*.zm")
|
|
454
454
|
zrc_paths = Dir.glob zrc_globs
|
|
455
455
|
raise "No input files." if zrc_paths.empty?
|
|
456
456
|
delete doc_root if var? :clean_doc
|
|
@@ -458,16 +458,16 @@ SASS
|
|
|
458
458
|
blaze doc_root
|
|
459
459
|
blaze src_root
|
|
460
460
|
zrc_paths.each do |path|
|
|
461
|
-
|
|
462
|
-
|
|
461
|
+
filename = path_from zrc_root, path
|
|
462
|
+
filename = File.join doc_root, filename.chomp(".zm").concat(".html")
|
|
463
463
|
input = File.read path
|
|
464
|
-
Parse.hash[
|
|
465
|
-
Parse.page_elems
|
|
464
|
+
Parse.hash[filename] =
|
|
465
|
+
Parse.page_elems filename, input
|
|
466
466
|
end
|
|
467
467
|
unless Env.var? :only_src
|
|
468
|
-
Parse.hash.each do |
|
|
469
|
-
blaze
|
|
470
|
-
write
|
|
468
|
+
Parse.hash.each do |filename, parse|
|
|
469
|
+
blaze filename
|
|
470
|
+
write filename, <<PARSE
|
|
471
471
|
---
|
|
472
472
|
layout: schizm
|
|
473
473
|
author: "#{author}"
|
|
@@ -482,8 +482,8 @@ PARSE
|
|
|
482
482
|
unless Env.var? :only_doc
|
|
483
483
|
Chunk.each do |chunk|
|
|
484
484
|
if chunk.target?
|
|
485
|
-
blaze
|
|
486
|
-
write
|
|
485
|
+
blaze filename = File.join(src_root, chunk.target)
|
|
486
|
+
write filename, chunk
|
|
487
487
|
end
|
|
488
488
|
end
|
|
489
489
|
end
|
data/lib/schizm/markup.rb
CHANGED
|
@@ -41,23 +41,28 @@ class Markup
|
|
|
41
41
|
attr_accessor :attrs
|
|
42
42
|
attr_accessor :elems
|
|
43
43
|
|
|
44
|
+
# Attribute accessor.
|
|
44
45
|
def [] key
|
|
45
46
|
return @attrs[key]
|
|
46
47
|
end
|
|
47
48
|
|
|
49
|
+
# Attribute accessor.
|
|
48
50
|
def []= key, value
|
|
49
51
|
return @attrs[key] = value
|
|
50
52
|
end
|
|
51
53
|
|
|
54
|
+
# Attribute +name+ or +nil+ if +name+ does not exist.
|
|
52
55
|
def get_attr name
|
|
53
56
|
return @attrs[name] if @attrs.has_key? name
|
|
54
57
|
return nil
|
|
55
58
|
end
|
|
56
59
|
|
|
60
|
+
# Wrapper for +@attrs.has_key?+.
|
|
57
61
|
def has_attr? name
|
|
58
62
|
return @attrs.has_key? name
|
|
59
63
|
end
|
|
60
64
|
|
|
65
|
+
# Add attributes from hash +pairs+.
|
|
61
66
|
def add_attrs pairs
|
|
62
67
|
pairs.each do |key, value|
|
|
63
68
|
@attrs[key] = value
|
|
@@ -65,6 +70,7 @@ class Markup
|
|
|
65
70
|
return self
|
|
66
71
|
end
|
|
67
72
|
|
|
73
|
+
# Add element(s).
|
|
68
74
|
def << param
|
|
69
75
|
case param
|
|
70
76
|
when nil
|
|
@@ -85,10 +91,12 @@ class Markup
|
|
|
85
91
|
return self
|
|
86
92
|
end
|
|
87
93
|
|
|
94
|
+
# Wrapper for +self << param+.
|
|
88
95
|
def add_elems param
|
|
89
96
|
return self << param
|
|
90
97
|
end
|
|
91
98
|
|
|
99
|
+
# Wrapper for +@elems.last+.
|
|
92
100
|
def last
|
|
93
101
|
return @elems.last
|
|
94
102
|
end
|
data/lib/schizm/parse.rb
CHANGED
|
@@ -38,8 +38,8 @@ module Parse
|
|
|
38
38
|
|
|
39
39
|
# Markup hash.
|
|
40
40
|
@@hash =
|
|
41
|
-
Hash.new do |hash,
|
|
42
|
-
hash[
|
|
41
|
+
Hash.new do |hash, filename|
|
|
42
|
+
hash[filename] = Markup.new
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
# Markup hash accessor.
|
|
@@ -49,8 +49,8 @@ module Parse
|
|
|
49
49
|
|
|
50
50
|
# Link hash.
|
|
51
51
|
@@links =
|
|
52
|
-
Hash.new do |hash,
|
|
53
|
-
hash[
|
|
52
|
+
Hash.new do |hash, filename|
|
|
53
|
+
hash[filename] =
|
|
54
54
|
Hash.new do |hash, entry|
|
|
55
55
|
hash[entry] = Hash.new
|
|
56
56
|
end
|
|
@@ -61,14 +61,16 @@ module Parse
|
|
|
61
61
|
return @@links
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
+
# Image hash.
|
|
64
65
|
@@images =
|
|
65
|
-
Hash.new do |hash,
|
|
66
|
-
hash[
|
|
66
|
+
Hash.new do |hash, filename|
|
|
67
|
+
hash[filename] =
|
|
67
68
|
Hash.new do |hash, entry|
|
|
68
69
|
hash[entry] = Hash.new
|
|
69
70
|
end
|
|
70
71
|
end
|
|
71
72
|
|
|
73
|
+
# Image hash accessor.
|
|
72
74
|
def self.images
|
|
73
75
|
return @@images
|
|
74
76
|
end
|
|
@@ -84,22 +86,24 @@ module Parse
|
|
|
84
86
|
end
|
|
85
87
|
end
|
|
86
88
|
|
|
89
|
+
# Chunk reference.
|
|
87
90
|
class ChunkRef
|
|
88
|
-
def initialize
|
|
89
|
-
@
|
|
91
|
+
def initialize filename, label
|
|
92
|
+
@filename = filename
|
|
90
93
|
@label = label
|
|
91
94
|
end
|
|
92
95
|
def to_s
|
|
93
96
|
Chunk.each do |chunk|
|
|
94
97
|
if chunk.label == @label and
|
|
95
|
-
(chunk.
|
|
96
|
-
return "#{Env.docs_path(@
|
|
98
|
+
(chunk.filename == @filename or chunk.share?)
|
|
99
|
+
return "#{Env.docs_path(@filename)}\##{chunk.id(1)}"
|
|
97
100
|
end
|
|
98
101
|
end
|
|
99
102
|
return ""
|
|
100
103
|
end
|
|
101
104
|
end
|
|
102
105
|
|
|
106
|
+
# Block reference.
|
|
103
107
|
class BlockRef
|
|
104
108
|
def initialize chunk, index
|
|
105
109
|
@chunk = chunk
|
|
@@ -108,11 +112,12 @@ module Parse
|
|
|
108
112
|
def to_s
|
|
109
113
|
return "" if @index < 1
|
|
110
114
|
return "" if @index > @chunk.blocks.size
|
|
111
|
-
return "#{Env.docs_path(@chunk.
|
|
115
|
+
return "#{Env.docs_path(@chunk.filename)}\##{@chunk.id(@index)}"
|
|
112
116
|
end
|
|
113
117
|
end
|
|
114
118
|
|
|
115
|
-
|
|
119
|
+
# Parse line elements.
|
|
120
|
+
def self.line_elems filename, input
|
|
116
121
|
elems = Markup.new
|
|
117
122
|
sscan = StringScanner.new input.strip
|
|
118
123
|
max_glyph = nil
|
|
@@ -156,18 +161,18 @@ module Parse
|
|
|
156
161
|
end
|
|
157
162
|
Markup.new("a")
|
|
158
163
|
.add_attrs(attrs)
|
|
159
|
-
.add_elems(line_elems(
|
|
164
|
+
.add_elems(line_elems(filename, text))
|
|
160
165
|
when sscan.skip(LINK_REF_BRACKS)
|
|
161
166
|
text =
|
|
162
167
|
name = String.new(sscan[1]).unescape("]")
|
|
163
168
|
name = String.new(sscan[2]).unescape("]") if sscan[2]
|
|
164
169
|
attrs = Hash.new
|
|
165
170
|
attrs["target"] = "_blank"
|
|
166
|
-
attrs["title"] = HashAttr.new @@links[
|
|
167
|
-
attrs["href"] = HashAttr.new @@links[
|
|
171
|
+
attrs["title"] = HashAttr.new @@links[filename][name], "title"
|
|
172
|
+
attrs["href"] = HashAttr.new @@links[filename][name], "href"
|
|
168
173
|
Markup.new("a")
|
|
169
174
|
.add_attrs(attrs)
|
|
170
|
-
.add_elems(line_elems(
|
|
175
|
+
.add_elems(line_elems(filename, text))
|
|
171
176
|
when sscan.skip(CENTER_MATH)
|
|
172
177
|
Markup.new("script")
|
|
173
178
|
.add_attrs(CENTER_MATH_ATTRS)
|
|
@@ -178,7 +183,7 @@ module Parse
|
|
|
178
183
|
.add_elems(String.new(sscan[1]).slim)
|
|
179
184
|
when sscan.skip(INLINE_EMPH)
|
|
180
185
|
depth = sscan[1].size
|
|
181
|
-
inner = line_elems(
|
|
186
|
+
inner = line_elems(filename, sscan[2])
|
|
182
187
|
case
|
|
183
188
|
when depth <= 1
|
|
184
189
|
Markup.new("em").add_elems(inner)
|
|
@@ -192,13 +197,13 @@ module Parse
|
|
|
192
197
|
Markup.new("code")
|
|
193
198
|
.add_elems(String.new(sscan[1]).unescape("`").html)
|
|
194
199
|
when sscan.skip(INLINE_SUP)
|
|
195
|
-
Markup.new("sup").add_elems(line_elems(
|
|
200
|
+
Markup.new("sup").add_elems(line_elems(filename, sscan[1]))
|
|
196
201
|
when sscan.skip(INLINE_SUB)
|
|
197
|
-
Markup.new("sub").add_elems(line_elems(
|
|
202
|
+
Markup.new("sub").add_elems(line_elems(filename, sscan[1]))
|
|
198
203
|
when sscan.skip(INLINE_INS)
|
|
199
|
-
Markup.new("ins").add_elems(line_elems(
|
|
204
|
+
Markup.new("ins").add_elems(line_elems(filename, sscan[1]))
|
|
200
205
|
when sscan.skip(INLINE_DEL)
|
|
201
|
-
Markup.new("del").add_elems(line_elems(
|
|
206
|
+
Markup.new("del").add_elems(line_elems(filename, sscan[1]))
|
|
202
207
|
when max_glyph_match.call
|
|
203
208
|
max_glyph[1]
|
|
204
209
|
when sscan.skip(/\w+|\S/)
|
|
@@ -208,7 +213,8 @@ module Parse
|
|
|
208
213
|
return elems
|
|
209
214
|
end
|
|
210
215
|
|
|
211
|
-
|
|
216
|
+
# Parse page elements.
|
|
217
|
+
def self.page_elems filename, input
|
|
212
218
|
elems = Markup.new
|
|
213
219
|
sscan = StringScanner.new(
|
|
214
220
|
String.new(input)
|
|
@@ -232,7 +238,7 @@ module Parse
|
|
|
232
238
|
when 4 then "h4"
|
|
233
239
|
when 5 then "h5"
|
|
234
240
|
when 6 then "h6"
|
|
235
|
-
end).add_elems(line_elems(
|
|
241
|
+
end).add_elems(line_elems(filename, text))
|
|
236
242
|
when sscan.skip(HEADING_SETEXT)
|
|
237
243
|
type = String.new sscan[2]
|
|
238
244
|
text = String.new sscan[1]
|
|
@@ -243,15 +249,15 @@ module Parse
|
|
|
243
249
|
when "-" then "h2"
|
|
244
250
|
end).add_attrs("id" => slug)
|
|
245
251
|
.add_attrs("class" => "title")
|
|
246
|
-
.add_elems(line_elems(
|
|
252
|
+
.add_elems(line_elems(filename, text))
|
|
247
253
|
when sscan.skip(LINK_DEF)
|
|
248
254
|
name = String.new(sscan[1]).unescape("]")
|
|
249
255
|
sscan2 = StringScanner.new(sscan[2])
|
|
250
256
|
until sscan2.eos?
|
|
251
257
|
case
|
|
252
|
-
when sscan2.skip(/'((?:[^\\']*(?:\\.)*)*)'/u) then @@links[
|
|
253
|
-
when sscan2.skip(/"((?:[^\\"]*(?:\\.)*)*)"/u) then @@links[
|
|
254
|
-
when sscan2.skip(/\p{Graph}+/u) then @@links[
|
|
258
|
+
when sscan2.skip(/'((?:[^\\']*(?:\\.)*)*)'/u) then @@links[filename][name]["title"] = sscan2[1]
|
|
259
|
+
when sscan2.skip(/"((?:[^\\"]*(?:\\.)*)*)"/u) then @@links[filename][name]["title"] = sscan2[1]
|
|
260
|
+
when sscan2.skip(/\p{Graph}+/u) then @@links[filename][name]["href"] = sscan2[0]
|
|
255
261
|
when sscan2.skip(/\p{Space}+/u) then nil
|
|
256
262
|
end
|
|
257
263
|
end
|
|
@@ -261,9 +267,9 @@ module Parse
|
|
|
261
267
|
sscan2 = StringScanner.new(sscan[2])
|
|
262
268
|
until sscan2.eos?
|
|
263
269
|
case
|
|
264
|
-
when sscan2.skip(/w=(\d+)/u) then @@images[
|
|
265
|
-
when sscan2.skip(/h=(\d+)/u) then @@images[
|
|
266
|
-
when sscan2.skip(/\p{Graph}+/u) then @@images[
|
|
270
|
+
when sscan2.skip(/w=(\d+)/u) then @@images[filename][name]["width"] = sscan2[1]
|
|
271
|
+
when sscan2.skip(/h=(\d+)/u) then @@images[filename][name]["height"] = sscan2[1]
|
|
272
|
+
when sscan2.skip(/\p{Graph}+/u) then @@images[filename][name]["src"] = sscan2[0]
|
|
267
273
|
when sscan2.skip(/\p{Space}+/u) then nil
|
|
268
274
|
end
|
|
269
275
|
end
|
|
@@ -288,13 +294,13 @@ module Parse
|
|
|
288
294
|
name = String.new(sscan[2]).unescape("]") if sscan[2]
|
|
289
295
|
attrs = Hash.new
|
|
290
296
|
attrs["alt"] = text
|
|
291
|
-
attrs["src"] = HashAttr.new @@images[
|
|
292
|
-
attrs["width"] = HashAttr.new @@images[
|
|
293
|
-
attrs["height"] = HashAttr.new @@images[
|
|
297
|
+
attrs["src"] = HashAttr.new @@images[filename][name], "src"
|
|
298
|
+
attrs["width"] = HashAttr.new @@images[filename][name], "width"
|
|
299
|
+
attrs["height"] = HashAttr.new @@images[filename][name], "height"
|
|
294
300
|
Markup.new("img").add_attrs(attrs)
|
|
295
301
|
when sscan.skip(/^#{CHUNK_LABEL}/u)
|
|
296
302
|
div = nil
|
|
297
|
-
chunk = Chunk.hash[
|
|
303
|
+
chunk = Chunk.hash[filename][String.new(sscan[1]).unescape("]")]
|
|
298
304
|
case
|
|
299
305
|
when sscan.skip(/[ ]*->[ ]*(.*?)\n/u)
|
|
300
306
|
chunk.target = sscan[1].strip
|
|
@@ -323,12 +329,12 @@ module Parse
|
|
|
323
329
|
.add_elems([
|
|
324
330
|
Markup.new("div")
|
|
325
331
|
.add_attrs("class" => "the-chunk")
|
|
326
|
-
.add_elems(line_elems(
|
|
332
|
+
.add_elems(line_elems(filename, chunk.label)),
|
|
327
333
|
case
|
|
328
334
|
when label
|
|
329
335
|
Markup.new("div")
|
|
330
336
|
.add_attrs("class" => "the-block")
|
|
331
|
-
.add_elems(line_elems(
|
|
337
|
+
.add_elems(line_elems(filename, label))
|
|
332
338
|
else nil
|
|
333
339
|
end
|
|
334
340
|
]),
|
|
@@ -342,7 +348,7 @@ module Parse
|
|
|
342
348
|
]),
|
|
343
349
|
Markup.new("div")
|
|
344
350
|
.add_attrs("class" => "panel-body")
|
|
345
|
-
.add_elems(Markup.new("pre").add_elems(highlight(
|
|
351
|
+
.add_elems(Markup.new("pre").add_elems(highlight(filename, block, HICPP)))
|
|
346
352
|
])
|
|
347
353
|
end
|
|
348
354
|
div
|
|
@@ -357,7 +363,7 @@ module Parse
|
|
|
357
363
|
.add_elems(
|
|
358
364
|
Markup.new("span")
|
|
359
365
|
.add_attrs("class" => "genericons-neue genericons-neue-info")),
|
|
360
|
-
page_elems(
|
|
366
|
+
page_elems(filename, text)
|
|
361
367
|
])
|
|
362
368
|
when sscan.skip(ENTER_ALERT)
|
|
363
369
|
text = sscan.scan_until END_INDENT
|
|
@@ -370,7 +376,7 @@ module Parse
|
|
|
370
376
|
.add_elems(
|
|
371
377
|
Markup.new("span")
|
|
372
378
|
.add_attrs("class" => "genericons-neue genericons-neue-notice")),
|
|
373
|
-
page_elems(
|
|
379
|
+
page_elems(filename, text)
|
|
374
380
|
])
|
|
375
381
|
when sscan.skip(ENTER_BUG)
|
|
376
382
|
text = sscan.scan_until END_INDENT
|
|
@@ -383,19 +389,19 @@ module Parse
|
|
|
383
389
|
.add_elems(
|
|
384
390
|
Markup.new("span")
|
|
385
391
|
.add_attrs("class" => "genericons-neue genericons-neue-bug")),
|
|
386
|
-
page_elems(
|
|
392
|
+
page_elems(filename, text)
|
|
387
393
|
])
|
|
388
394
|
when sscan.skip(ENTER_QUOTE)
|
|
389
395
|
text = sscan.scan_until END_INDENT
|
|
390
396
|
text = String.new(text).erase INDENT
|
|
391
397
|
Markup.new("blockquote")
|
|
392
|
-
.add_elems(page_elems(
|
|
398
|
+
.add_elems(page_elems(filename, text))
|
|
393
399
|
when (sscan.match? ENTER_OLIST)
|
|
394
400
|
list = Markup.new "ol"
|
|
395
401
|
while sscan.skip ENTER_OLIST
|
|
396
402
|
text = sscan.scan_until END_INDENT
|
|
397
403
|
text = String.new(text).erase INDENT
|
|
398
|
-
item = Markup.new("li").add_elems(page_elems(
|
|
404
|
+
item = Markup.new("li").add_elems(page_elems(filename, text))
|
|
399
405
|
list.add_elems item
|
|
400
406
|
sscan.skip EMPTY_LINES
|
|
401
407
|
end
|
|
@@ -405,7 +411,7 @@ module Parse
|
|
|
405
411
|
while sscan.skip ENTER_ULIST
|
|
406
412
|
text = sscan.scan_until END_INDENT
|
|
407
413
|
text = String.new(text).erase INDENT
|
|
408
|
-
item = Markup.new("li").add_elems(page_elems(
|
|
414
|
+
item = Markup.new("li").add_elems(page_elems(filename, text))
|
|
409
415
|
list.add_elems item
|
|
410
416
|
sscan.skip EMPTY_LINES
|
|
411
417
|
end
|
|
@@ -420,7 +426,7 @@ module Parse
|
|
|
420
426
|
item = Markup.new("li")
|
|
421
427
|
item.add_attrs("class" => "li-todo") if type[0] == " "
|
|
422
428
|
item.add_attrs("class" => "li-done") if type[0] != " "
|
|
423
|
-
item.add_elems page_elems(
|
|
429
|
+
item.add_elems page_elems(filename, text)
|
|
424
430
|
list.add_elems item
|
|
425
431
|
sscan.skip EMPTY_LINES
|
|
426
432
|
end
|
|
@@ -431,8 +437,8 @@ module Parse
|
|
|
431
437
|
term = sscan[1]
|
|
432
438
|
text = sscan.scan_until END_INDENT
|
|
433
439
|
text = String.new(text).erase INDENT
|
|
434
|
-
list.add_elems(Markup.new("dt").add_elems(line_elems(
|
|
435
|
-
list.add_elems(Markup.new("dd").add_elems(page_elems(
|
|
440
|
+
list.add_elems(Markup.new("dt").add_elems(line_elems(filename, term)))
|
|
441
|
+
list.add_elems(Markup.new("dd").add_elems(page_elems(filename, text)))
|
|
436
442
|
sscan.skip EMPTY_LINES
|
|
437
443
|
end
|
|
438
444
|
list
|
|
@@ -446,13 +452,14 @@ module Parse
|
|
|
446
452
|
when sscan.match?(ENTER_TEXT)
|
|
447
453
|
text = sscan.scan_until END_SIMPLE
|
|
448
454
|
text = String.new(text).erase EOB_MARKER
|
|
449
|
-
Markup.new("p").add_elems(line_elems(
|
|
455
|
+
Markup.new("p").add_elems(line_elems(filename, text))
|
|
450
456
|
end)
|
|
451
457
|
end
|
|
452
458
|
return elems
|
|
453
459
|
end
|
|
454
460
|
|
|
455
|
-
|
|
461
|
+
# Highlight source.
|
|
462
|
+
def self.highlight filename, input, table
|
|
456
463
|
elems = Markup.new
|
|
457
464
|
sscan = StringScanner.new input
|
|
458
465
|
until sscan.eos?
|
|
@@ -465,8 +472,8 @@ module Parse
|
|
|
465
472
|
elems.add_elems(
|
|
466
473
|
Markup.new("a")
|
|
467
474
|
.add_attrs("class" => "chunk")
|
|
468
|
-
.add_attrs("href" => ChunkRef.new(
|
|
469
|
-
.add_elems(line_elems(
|
|
475
|
+
.add_attrs("href" => ChunkRef.new(filename, label))
|
|
476
|
+
.add_elems(line_elems(filename, label)))
|
|
470
477
|
next
|
|
471
478
|
end
|
|
472
479
|
table.each do |entry|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: schizm
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.15
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- M. Grady Saunders
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-02-
|
|
11
|
+
date: 2018-02-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description:
|
|
14
14
|
email: mgradysaunders@gmail.com
|