schizm 0.0.14 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
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