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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 10e8c08c6fae1921d928b0a261c986b5269f7b70
4
- data.tar.gz: 678157a87f4a822b764f05eee862fd20376b73dd
3
+ metadata.gz: 74bc927ef6f3af9381ef7897d35b00d805927aa8
4
+ data.tar.gz: 08908c377f6f0868cdeb479a80e3847d252c6ef8
5
5
  SHA512:
6
- metadata.gz: da65af9a87b9e16ad0092902aaaca1a85cf440fa7db0b90e197b104dca6aa9405f1ca79cdfc296039096942580306d85f2db7bc9b4babac0fd356d3cd8f2e49e
7
- data.tar.gz: 2e7dabf97b5dab2883123eb49d47cc2cd86b9e10009ecae501c35125a487d9b89e3df299392bc87f96e13ff2b0469cf7f834d1b2f05b78aac7087c1566e258f3
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 where, label
38
- @where = String.new where
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 :where
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 +@where+ and +@label+.
68
+ # Hash organizing active chunks by +@filename+ and +@label+.
69
69
  @@hash =
70
- Hash.new do |hash, where|
71
- hash[where] =
70
+ Hash.new do |hash, filename|
71
+ hash[filename] =
72
72
  Hash.new do |hash, label|
73
- hash[label] = Chunk.new where, label
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 |where, hash|
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.where == @where or chunk.share?)
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, "*.zrc")
453
- zrc_globs.push File.join(zrc_root, "*/*.zrc")
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
- where = path_from zrc_root, path
462
- where = File.join doc_root, where.chomp(".zrc").concat(".html")
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[where] =
465
- Parse.page_elems where, input
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 |where, parse|
469
- blaze where
470
- write where, <<PARSE
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 where = File.join(src_root, chunk.target)
486
- write where, chunk
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, where|
42
- hash[where] = Markup.new
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, where|
53
- hash[where] =
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, where|
66
- hash[where] =
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 where, label
89
- @where = where
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.where == @where or chunk.share?)
96
- return "#{Env.docs_path(@where)}\##{chunk.id(1)}"
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.where)}\##{@chunk.id(@index)}"
115
+ return "#{Env.docs_path(@chunk.filename)}\##{@chunk.id(@index)}"
112
116
  end
113
117
  end
114
118
 
115
- def self.line_elems where, input
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(where, text))
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[where][name], "title"
167
- attrs["href"] = HashAttr.new @@links[where][name], "href"
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(where, text))
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(where, sscan[2])
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(where, sscan[1]))
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(where, sscan[1]))
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(where, sscan[1]))
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(where, sscan[1]))
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
- def self.page_elems where, input
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(where, text))
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(where, text))
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[where][name]["title"] = sscan2[1]
253
- when sscan2.skip(/"((?:[^\\"]*(?:\\.)*)*)"/u) then @@links[where][name]["title"] = sscan2[1]
254
- when sscan2.skip(/\p{Graph}+/u) then @@links[where][name]["href"] = sscan2[0]
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[where][name]["width"] = sscan2[1]
265
- when sscan2.skip(/h=(\d+)/u) then @@images[where][name]["height"] = sscan2[1]
266
- when sscan2.skip(/\p{Graph}+/u) then @@images[where][name]["src"] = sscan2[0]
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[where][name], "src"
292
- attrs["width"] = HashAttr.new @@images[where][name], "width"
293
- attrs["height"] = HashAttr.new @@images[where][name], "height"
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[where][String.new(sscan[1]).unescape("]")]
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(where, chunk.label)),
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(where, label))
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(where, block, HICPP)))
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(where, text)
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(where, text)
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(where, text)
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(where, text))
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(where, text))
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(where, text))
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(where, text)
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(where, term)))
435
- list.add_elems(Markup.new("dd").add_elems(page_elems(where, text)))
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(where, text))
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
- def self.highlight where, input, table
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(where, label))
469
- .add_elems(line_elems(where, label)))
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.14
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-16 00:00:00.000000000 Z
11
+ date: 2018-02-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: mgradysaunders@gmail.com