zotica 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/source/zotica/builder.rb +141 -149
- data/source/zotica/parser.rb +82 -84
- data/source/zotica/resource/style/math.scss +6 -0
- data/source/zotica.rb +11 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 46424f38382db4c95bd3a2a11ea8a51702749b173031b9c3a5ea34db5236e410
|
4
|
+
data.tar.gz: e31907a1bbe6768ab69fd8341e461c94f0889bdb78616ec5fbc77bb858c2252a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e0f6c7468c73604664eca91f23c8a9e9ac26edde468b20c0dadaee5ed1c32682478cdc688d58ef37cc6e17914eee1897b312ad73c344b0be5c88a06a659e3a5
|
7
|
+
data.tar.gz: 9c5a39b83b6c6d39650836d89915b26f5f09713f03b9c7c85627f5fef310a52decaaacd55c2456e3f34e49d5baa46d0dec904afaf4133d31e841d2d3e424c5ef
|
data/source/zotica/builder.rb
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
3
|
|
4
|
-
|
5
|
-
require 'pp'
|
6
|
-
require 'rexml/document'
|
7
|
-
require 'sassc'
|
8
|
-
require 'ttfunk'
|
9
|
-
include REXML
|
10
|
-
|
11
|
-
|
12
|
-
module ZoticaBuilder
|
4
|
+
module Zenithal::ZoticaBuilder
|
13
5
|
|
14
6
|
DATA_PATH = "resource/math.json"
|
15
7
|
COMMON_STYLE_PATH = "resource/style/math.scss"
|
@@ -36,7 +28,7 @@ module ZoticaBuilder
|
|
36
28
|
|
37
29
|
def apply_options(nodes, options)
|
38
30
|
nodes.each do |node|
|
39
|
-
if node.is_a?(Element) && options[:role]
|
31
|
+
if node.is_a?(REXML::Element) && options[:role]
|
40
32
|
classes = node["class"].split(" ") - ROLES
|
41
33
|
classes << options[:role]
|
42
34
|
node["class"] = classes.join(" ")
|
@@ -62,9 +54,9 @@ module ZoticaBuilder
|
|
62
54
|
end
|
63
55
|
|
64
56
|
def build_number(text, options = {})
|
65
|
-
this = Nodes[]
|
57
|
+
this = REXML::Nodes[]
|
66
58
|
element = nil
|
67
|
-
this << Element.build("math-n") do |this|
|
59
|
+
this << REXML::Element.build("math-n") do |this|
|
68
60
|
this << ~text
|
69
61
|
element = this
|
70
62
|
end
|
@@ -84,10 +76,10 @@ module ZoticaBuilder
|
|
84
76
|
end
|
85
77
|
|
86
78
|
def build_identifier(text, types, options = {})
|
87
|
-
this = Nodes[]
|
79
|
+
this = REXML::Nodes[]
|
88
80
|
element = nil
|
89
81
|
font_type = (types.include?("alt")) ? "math" : "main"
|
90
|
-
this << Element.build("math-i") do |this|
|
82
|
+
this << REXML::Element.build("math-i") do |this|
|
91
83
|
this["class"] = types.join(" ")
|
92
84
|
this["data-cont"] = text
|
93
85
|
this << ~text
|
@@ -104,10 +96,10 @@ module ZoticaBuilder
|
|
104
96
|
end
|
105
97
|
|
106
98
|
def build_operator(symbol, types, options = {}, &block)
|
107
|
-
this = Nodes[]
|
99
|
+
this = REXML::Nodes[]
|
108
100
|
element = nil
|
109
101
|
font_type = (types.include?("txt")) ? "main" : "math"
|
110
|
-
this << Element.build("math-o") do |this|
|
102
|
+
this << REXML::Element.build("math-o") do |this|
|
111
103
|
this["class"] = types.join(" ")
|
112
104
|
this << ~symbol
|
113
105
|
element = this
|
@@ -136,8 +128,8 @@ module ZoticaBuilder
|
|
136
128
|
end
|
137
129
|
|
138
130
|
def build_strut(type, options = {})
|
139
|
-
this = Nodes[]
|
140
|
-
this << Element.build("math-strut") do |this|
|
131
|
+
this = REXML::Nodes[]
|
132
|
+
this << REXML::Element.build("math-strut") do |this|
|
141
133
|
if type == "upper" || type == "dupper"
|
142
134
|
this["style"] += "margin-bottom: -0.5em;"
|
143
135
|
elsif type == "dlower" || type == "dfull"
|
@@ -154,7 +146,7 @@ module ZoticaBuilder
|
|
154
146
|
top_margin = options[:fonts]&.dig(:main, "72", 1) || DEFAULT_FONTS.dig(:main, "72", 1)
|
155
147
|
this["style"] += "margin-top: #{top_margin}em;"
|
156
148
|
end
|
157
|
-
this << Element.build("math-text") do |this|
|
149
|
+
this << REXML::Element.build("math-text") do |this|
|
158
150
|
this["style"] += "line-height: 1;"
|
159
151
|
this << ~" "
|
160
152
|
end
|
@@ -164,24 +156,24 @@ module ZoticaBuilder
|
|
164
156
|
end
|
165
157
|
|
166
158
|
def build_subsuper(options = {}, &block)
|
167
|
-
this = Nodes[]
|
159
|
+
this = REXML::Nodes[]
|
168
160
|
base_element, sub_element, super_element, left_sub_element, left_super_element = nil
|
169
161
|
main_element = nil
|
170
|
-
this << Element.build("math-subsup") do |this|
|
162
|
+
this << REXML::Element.build("math-subsup") do |this|
|
171
163
|
main_element = this
|
172
|
-
this << Element.build("math-lsub") do |this|
|
164
|
+
this << REXML::Element.build("math-lsub") do |this|
|
173
165
|
left_sub_element = this
|
174
166
|
end
|
175
|
-
this << Element.build("math-lsup") do |this|
|
167
|
+
this << REXML::Element.build("math-lsup") do |this|
|
176
168
|
left_super_element = this
|
177
169
|
end
|
178
|
-
this << Element.build("math-base") do |this|
|
170
|
+
this << REXML::Element.build("math-base") do |this|
|
179
171
|
base_element = this
|
180
172
|
end
|
181
|
-
this << Element.build("math-sub") do |this|
|
173
|
+
this << REXML::Element.build("math-sub") do |this|
|
182
174
|
sub_element = this
|
183
175
|
end
|
184
|
-
this << Element.build("math-sup") do |this|
|
176
|
+
this << REXML::Element.build("math-sup") do |this|
|
185
177
|
super_element = this
|
186
178
|
end
|
187
179
|
end
|
@@ -208,19 +200,19 @@ module ZoticaBuilder
|
|
208
200
|
end
|
209
201
|
|
210
202
|
def build_underover(options = {}, &block)
|
211
|
-
this = Nodes[]
|
203
|
+
this = REXML::Nodes[]
|
212
204
|
base_element, under_element, over_element = nil
|
213
205
|
main_element = nil
|
214
|
-
this << Element.build("math-underover") do |this|
|
206
|
+
this << REXML::Element.build("math-underover") do |this|
|
215
207
|
main_element = this
|
216
|
-
this << Element.build("math-over") do |this|
|
208
|
+
this << REXML::Element.build("math-over") do |this|
|
217
209
|
over_element = this
|
218
210
|
end
|
219
|
-
this << Element.build("math-basewrap") do |this|
|
220
|
-
this << Element.build("math-base") do |this|
|
211
|
+
this << REXML::Element.build("math-basewrap") do |this|
|
212
|
+
this << REXML::Element.build("math-base") do |this|
|
221
213
|
base_element = this
|
222
214
|
end
|
223
|
-
this << Element.build("math-under") do |this|
|
215
|
+
this << REXML::Element.build("math-under") do |this|
|
224
216
|
under_element = this
|
225
217
|
end
|
226
218
|
end
|
@@ -242,15 +234,15 @@ module ZoticaBuilder
|
|
242
234
|
end
|
243
235
|
|
244
236
|
def build_fraction(options = {}, &block)
|
245
|
-
this = Nodes[]
|
237
|
+
this = REXML::Nodes[]
|
246
238
|
numerator_element, denominator_element = nil
|
247
|
-
this << Element.build("math-frac") do |this|
|
248
|
-
this << Element.build("math-num") do |this|
|
239
|
+
this << REXML::Element.build("math-frac") do |this|
|
240
|
+
this << REXML::Element.build("math-num") do |this|
|
249
241
|
numerator_element = this
|
250
242
|
end
|
251
|
-
this << Element.build("math-denwrap") do |this|
|
252
|
-
this << Element.new("math-line")
|
253
|
-
this << Element.build("math-den") do |this|
|
243
|
+
this << REXML::Element.build("math-denwrap") do |this|
|
244
|
+
this << REXML::Element.new("math-line")
|
245
|
+
this << REXML::Element.build("math-den") do |this|
|
254
246
|
denominator_element = this
|
255
247
|
end
|
256
248
|
end
|
@@ -273,22 +265,22 @@ module ZoticaBuilder
|
|
273
265
|
end
|
274
266
|
|
275
267
|
def build_radical(symbol, modify, options = {}, &block)
|
276
|
-
this = Nodes[]
|
268
|
+
this = REXML::Nodes[]
|
277
269
|
content_element, index_element = nil
|
278
|
-
this << Element.build("math-rad") do |this|
|
270
|
+
this << REXML::Element.build("math-rad") do |this|
|
279
271
|
if modify
|
280
272
|
this["class"] = "mod"
|
281
273
|
end
|
282
|
-
this << Element.build("math-index") do |this|
|
274
|
+
this << REXML::Element.build("math-index") do |this|
|
283
275
|
index_element = this
|
284
276
|
end
|
285
|
-
this << Element.build("math-sqrt") do |this|
|
286
|
-
this << Element.build("math-surd") do |this|
|
287
|
-
this << Element.build("math-o") do |this|
|
288
|
-
this << Text.new(symbol, true, nil, false)
|
277
|
+
this << REXML::Element.build("math-sqrt") do |this|
|
278
|
+
this << REXML::Element.build("math-surd") do |this|
|
279
|
+
this << REXML::Element.build("math-o") do |this|
|
280
|
+
this << REXML::Text.new(symbol, true, nil, false)
|
289
281
|
end
|
290
282
|
end
|
291
|
-
this << Element.build("math-cont") do |this|
|
283
|
+
this << REXML::Element.build("math-cont") do |this|
|
292
284
|
content_element = this
|
293
285
|
end
|
294
286
|
end
|
@@ -313,26 +305,26 @@ module ZoticaBuilder
|
|
313
305
|
end
|
314
306
|
|
315
307
|
def build_fence(left_kind, right_kind, left_symbol, right_symbol, modify, options = {}, &block)
|
316
|
-
this = Nodes[]
|
308
|
+
this = REXML::Nodes[]
|
317
309
|
content_element = nil
|
318
|
-
this << Element.build("math-fence") do |this|
|
310
|
+
this << REXML::Element.build("math-fence") do |this|
|
319
311
|
this["class"] = "par"
|
320
312
|
if modify
|
321
313
|
this["class"] = [*this["class"].split(" "), "mod"].join(" ")
|
322
314
|
this["data-left"] = left_kind
|
323
315
|
this["data-right"] = right_kind
|
324
316
|
end
|
325
|
-
this << Element.build("math-left") do |this|
|
326
|
-
this << Element.build("math-o") do |this|
|
327
|
-
this << Text.new(left_symbol, true, nil, false)
|
317
|
+
this << REXML::Element.build("math-left") do |this|
|
318
|
+
this << REXML::Element.build("math-o") do |this|
|
319
|
+
this << REXML::Text.new(left_symbol, true, nil, false)
|
328
320
|
end
|
329
321
|
end
|
330
|
-
this << Element.build("math-cont") do |this|
|
322
|
+
this << REXML::Element.build("math-cont") do |this|
|
331
323
|
content_element = this
|
332
324
|
end
|
333
|
-
this << Element.build("math-right") do |this|
|
334
|
-
this << Element.build("math-o") do |this|
|
335
|
-
this << Text.new(right_symbol, true, nil, false)
|
325
|
+
this << REXML::Element.build("math-right") do |this|
|
326
|
+
this << REXML::Element.build("math-o") do |this|
|
327
|
+
this << REXML::Text.new(right_symbol, true, nil, false)
|
336
328
|
end
|
337
329
|
end
|
338
330
|
end
|
@@ -342,9 +334,9 @@ module ZoticaBuilder
|
|
342
334
|
end
|
343
335
|
|
344
336
|
def build_set(left_kind, right_kind, center_kind, left_symbol, right_symbol, center_symbol, modify, options = {}, &block)
|
345
|
-
this = Nodes[]
|
337
|
+
this = REXML::Nodes[]
|
346
338
|
left_element, right_element = nil
|
347
|
-
this << Element.build("math-fence") do |this|
|
339
|
+
this << REXML::Element.build("math-fence") do |this|
|
348
340
|
this["class"] = "par"
|
349
341
|
if modify
|
350
342
|
this["class"] = [*this["class"].split(" "), "mod"].join(" ")
|
@@ -352,26 +344,26 @@ module ZoticaBuilder
|
|
352
344
|
this["data-right"] = right_kind
|
353
345
|
this["data-center"] = center_kind
|
354
346
|
end
|
355
|
-
this << Element.build("math-left") do |this|
|
356
|
-
this << Element.build("math-o") do |this|
|
357
|
-
this << Text.new(left_symbol, true, nil, false)
|
347
|
+
this << REXML::Element.build("math-left") do |this|
|
348
|
+
this << REXML::Element.build("math-o") do |this|
|
349
|
+
this << REXML::Text.new(left_symbol, true, nil, false)
|
358
350
|
end
|
359
351
|
end
|
360
|
-
this << Element.build("math-cont") do |this|
|
352
|
+
this << REXML::Element.build("math-cont") do |this|
|
361
353
|
left_element = this
|
362
354
|
end
|
363
|
-
this << Element.build("math-center") do |this|
|
355
|
+
this << REXML::Element.build("math-center") do |this|
|
364
356
|
this["class"] = "cpar"
|
365
|
-
this << Element.build("math-o") do |this|
|
366
|
-
this << Text.new(right_symbol, true, nil, false)
|
357
|
+
this << REXML::Element.build("math-o") do |this|
|
358
|
+
this << REXML::Text.new(right_symbol, true, nil, false)
|
367
359
|
end
|
368
360
|
end
|
369
|
-
this << Element.build("math-cont") do |this|
|
361
|
+
this << REXML::Element.build("math-cont") do |this|
|
370
362
|
right_element = this
|
371
363
|
end
|
372
|
-
this << Element.build("math-right") do |this|
|
373
|
-
this << Element.build("math-o") do |this|
|
374
|
-
this << Text.new(right_symbol, true, nil, false)
|
364
|
+
this << REXML::Element.build("math-right") do |this|
|
365
|
+
this << REXML::Element.build("math-o") do |this|
|
366
|
+
this << REXML::Text.new(right_symbol, true, nil, false)
|
375
367
|
end
|
376
368
|
end
|
377
369
|
end
|
@@ -387,27 +379,27 @@ module ZoticaBuilder
|
|
387
379
|
end
|
388
380
|
|
389
381
|
def build_integral(symbol, size, options = {}, &block)
|
390
|
-
this = Nodes[]
|
382
|
+
this = REXML::Nodes[]
|
391
383
|
base_element, sub_element, super_element = nil
|
392
|
-
this << Element.build("math-subsup") do |this|
|
384
|
+
this << REXML::Element.build("math-subsup") do |this|
|
393
385
|
this["class"] = "int"
|
394
386
|
unless size == "lrg"
|
395
387
|
this["class"] = [*this["class"].split(" "), size].join(" ")
|
396
388
|
end
|
397
|
-
this << Element.build("math-base") do |this|
|
389
|
+
this << REXML::Element.build("math-base") do |this|
|
398
390
|
base_element = this
|
399
|
-
this << Element.build("math-o") do |this|
|
391
|
+
this << REXML::Element.build("math-o") do |this|
|
400
392
|
this["class"] = "int"
|
401
393
|
unless size == "lrg"
|
402
394
|
this["class"] = [*this["class"].split(" "), size].join(" ")
|
403
395
|
end
|
404
|
-
this << Text.new(symbol, true, nil, false)
|
396
|
+
this << REXML::Text.new(symbol, true, nil, false)
|
405
397
|
end
|
406
398
|
end
|
407
|
-
this << Element.build("math-sub") do |this|
|
399
|
+
this << REXML::Element.build("math-sub") do |this|
|
408
400
|
sub_element = this
|
409
401
|
end
|
410
|
-
this << Element.build("math-sup") do |this|
|
402
|
+
this << REXML::Element.build("math-sup") do |this|
|
411
403
|
super_element = this
|
412
404
|
end
|
413
405
|
end
|
@@ -424,22 +416,22 @@ module ZoticaBuilder
|
|
424
416
|
end
|
425
417
|
|
426
418
|
def build_sum(symbol, size, options = {}, &block)
|
427
|
-
this = Nodes[]
|
419
|
+
this = REXML::Nodes[]
|
428
420
|
if size == "lrg"
|
429
421
|
under_element, over_element = nil
|
430
|
-
this << Element.build("math-underover") do |this|
|
422
|
+
this << REXML::Element.build("math-underover") do |this|
|
431
423
|
this["class"] = "sum"
|
432
|
-
this << Element.build("math-over") do |this|
|
424
|
+
this << REXML::Element.build("math-over") do |this|
|
433
425
|
over_element = this
|
434
426
|
end
|
435
|
-
this << Element.build("math-basewrap") do |this|
|
436
|
-
this << Element.build("math-base") do |this|
|
437
|
-
this << Element.build("math-o") do |this|
|
427
|
+
this << REXML::Element.build("math-basewrap") do |this|
|
428
|
+
this << REXML::Element.build("math-base") do |this|
|
429
|
+
this << REXML::Element.build("math-o") do |this|
|
438
430
|
this["class"] = "sum"
|
439
|
-
this << Text.new(symbol, true, nil, false)
|
431
|
+
this << REXML::Text.new(symbol, true, nil, false)
|
440
432
|
end
|
441
433
|
end
|
442
|
-
this << Element.build("math-under") do |this|
|
434
|
+
this << REXML::Element.build("math-under") do |this|
|
443
435
|
under_element = this
|
444
436
|
end
|
445
437
|
end
|
@@ -449,19 +441,19 @@ module ZoticaBuilder
|
|
449
441
|
modify_underover(under_element, over_element)
|
450
442
|
else
|
451
443
|
base_element, sub_element, super_element = nil
|
452
|
-
this << Element.build("math-subsup") do |this|
|
444
|
+
this << REXML::Element.build("math-subsup") do |this|
|
453
445
|
this["class"] = "sum inl"
|
454
|
-
this << Element.build("math-base") do |this|
|
446
|
+
this << REXML::Element.build("math-base") do |this|
|
455
447
|
base_element = this
|
456
|
-
this << Element.build("math-o") do |this|
|
448
|
+
this << REXML::Element.build("math-o") do |this|
|
457
449
|
this["class"] = "sum inl"
|
458
|
-
this << Text.new(symbol, true, nil, false)
|
450
|
+
this << REXML::Text.new(symbol, true, nil, false)
|
459
451
|
end
|
460
452
|
end
|
461
|
-
this << Element.build("math-sub") do |this|
|
453
|
+
this << REXML::Element.build("math-sub") do |this|
|
462
454
|
sub_element = this
|
463
455
|
end
|
464
|
-
this << Element.build("math-sup") do |this|
|
456
|
+
this << REXML::Element.build("math-sup") do |this|
|
465
457
|
super_element = this
|
466
458
|
end
|
467
459
|
end
|
@@ -473,31 +465,31 @@ module ZoticaBuilder
|
|
473
465
|
end
|
474
466
|
|
475
467
|
def build_accent(under_symbol, over_symbol, options = {}, &block)
|
476
|
-
this = Nodes[]
|
468
|
+
this = REXML::Nodes[]
|
477
469
|
base_element, under_element, over_element = nil
|
478
470
|
main_element = nil
|
479
|
-
this << Element.build("math-underover") do |this|
|
471
|
+
this << REXML::Element.build("math-underover") do |this|
|
480
472
|
main_element = this
|
481
473
|
this["class"] = "acc"
|
482
|
-
this << Element.build("math-over") do |this|
|
474
|
+
this << REXML::Element.build("math-over") do |this|
|
483
475
|
over_element = this
|
484
476
|
if over_symbol
|
485
|
-
this << Element.build("math-o") do |this|
|
477
|
+
this << REXML::Element.build("math-o") do |this|
|
486
478
|
this["class"] = "acc"
|
487
|
-
this << Text.new(over_symbol, true, nil, false)
|
479
|
+
this << REXML::Text.new(over_symbol, true, nil, false)
|
488
480
|
end
|
489
481
|
end
|
490
482
|
end
|
491
|
-
this << Element.build("math-basewrap") do |this|
|
492
|
-
this << Element.build("math-base") do |this|
|
483
|
+
this << REXML::Element.build("math-basewrap") do |this|
|
484
|
+
this << REXML::Element.build("math-base") do |this|
|
493
485
|
base_element = this
|
494
486
|
end
|
495
|
-
this << Element.build("math-under") do |this|
|
487
|
+
this << REXML::Element.build("math-under") do |this|
|
496
488
|
under_element = this
|
497
489
|
if under_symbol
|
498
|
-
this << Element.build("math-o") do |this|
|
490
|
+
this << REXML::Element.build("math-o") do |this|
|
499
491
|
this["class"] = "acc"
|
500
|
-
this << Text.new(under_symbol, true, nil, false)
|
492
|
+
this << REXML::Text.new(under_symbol, true, nil, false)
|
501
493
|
end
|
502
494
|
end
|
503
495
|
end
|
@@ -540,34 +532,34 @@ module ZoticaBuilder
|
|
540
532
|
end
|
541
533
|
|
542
534
|
def build_wide(kind, under_symbol, over_symbol, modify, options = {}, &block)
|
543
|
-
this = Nodes[]
|
535
|
+
this = REXML::Nodes[]
|
544
536
|
base_element, under_element, over_element = nil
|
545
537
|
main_element = nil
|
546
|
-
this << Element.build("math-underover") do |this|
|
538
|
+
this << REXML::Element.build("math-underover") do |this|
|
547
539
|
this["class"] = "wid"
|
548
540
|
if modify
|
549
541
|
this["class"] = [*this["class"].split(" "), "mod"].join(" ")
|
550
542
|
this["data-kind"] = kind
|
551
543
|
end
|
552
544
|
main_element = this
|
553
|
-
this << Element.build("math-over") do |this|
|
545
|
+
this << REXML::Element.build("math-over") do |this|
|
554
546
|
if over_symbol
|
555
|
-
this << Element.build("math-o") do |this|
|
547
|
+
this << REXML::Element.build("math-o") do |this|
|
556
548
|
this["class"] = "wid"
|
557
|
-
this << Text.new(over_symbol, true, nil, false)
|
549
|
+
this << REXML::Text.new(over_symbol, true, nil, false)
|
558
550
|
end
|
559
551
|
end
|
560
552
|
over_element = this
|
561
553
|
end
|
562
|
-
this << Element.build("math-basewrap") do |this|
|
563
|
-
this << Element.build("math-base") do |this|
|
554
|
+
this << REXML::Element.build("math-basewrap") do |this|
|
555
|
+
this << REXML::Element.build("math-base") do |this|
|
564
556
|
base_element = this
|
565
557
|
end
|
566
|
-
this << Element.build("math-under") do |this|
|
558
|
+
this << REXML::Element.build("math-under") do |this|
|
567
559
|
if under_symbol
|
568
|
-
this << Element.build("math-o") do |this|
|
560
|
+
this << REXML::Element.build("math-o") do |this|
|
569
561
|
this["class"] = "wid"
|
570
|
-
this << Text.new(under_symbol, true, nil, false)
|
562
|
+
this << REXML::Text.new(under_symbol, true, nil, false)
|
571
563
|
end
|
572
564
|
end
|
573
565
|
under_element = this
|
@@ -582,9 +574,9 @@ module ZoticaBuilder
|
|
582
574
|
end
|
583
575
|
|
584
576
|
def build_table(type, align_config, raw, options = {}, &block)
|
585
|
-
this = Nodes[]
|
577
|
+
this = REXML::Nodes[]
|
586
578
|
table_element = nil
|
587
|
-
this << Element.build("math-table") do |this|
|
579
|
+
this << REXML::Element.build("math-table") do |this|
|
588
580
|
this["class"] = type
|
589
581
|
table_element = this
|
590
582
|
end
|
@@ -595,9 +587,9 @@ module ZoticaBuilder
|
|
595
587
|
end
|
596
588
|
|
597
589
|
def build_diagram(vertical_gaps_string, horizontal_gaps_string, options = {}, &block)
|
598
|
-
this = Nodes[]
|
590
|
+
this = REXML::Nodes[]
|
599
591
|
table_element = nil
|
600
|
-
this << Element.build("math-diagram") do |this|
|
592
|
+
this << REXML::Element.build("math-diagram") do |this|
|
601
593
|
if vertical_gaps_string
|
602
594
|
this["class"] = [*this["class"].split(" "), "vnon"].join(" ")
|
603
595
|
end
|
@@ -674,9 +666,9 @@ module ZoticaBuilder
|
|
674
666
|
end
|
675
667
|
|
676
668
|
def build_table_cell(options = {}, &block)
|
677
|
-
this = Nodes[]
|
669
|
+
this = REXML::Nodes[]
|
678
670
|
cell_element = nil
|
679
|
-
this << Element.build("math-cell") do |this|
|
671
|
+
this << REXML::Element.build("math-cell") do |this|
|
680
672
|
cell_element = this
|
681
673
|
end
|
682
674
|
apply_options(this, options)
|
@@ -685,13 +677,13 @@ module ZoticaBuilder
|
|
685
677
|
end
|
686
678
|
|
687
679
|
def build_diagram_vertex(name, options = {}, &block)
|
688
|
-
this = Nodes[]
|
680
|
+
this = REXML::Nodes[]
|
689
681
|
vertex_element = nil
|
690
|
-
this << Element.build("math-cellwrap") do |this|
|
682
|
+
this << REXML::Element.build("math-cellwrap") do |this|
|
691
683
|
if name
|
692
684
|
this["data-name"] = name
|
693
685
|
end
|
694
|
-
this << Element.build("math-cell") do |this|
|
686
|
+
this << REXML::Element.build("math-cell") do |this|
|
695
687
|
vertex_element = this
|
696
688
|
end
|
697
689
|
end
|
@@ -701,9 +693,9 @@ module ZoticaBuilder
|
|
701
693
|
end
|
702
694
|
|
703
695
|
def build_arrow(name, configs, options = {}, &block)
|
704
|
-
this = Nodes[]
|
696
|
+
this = REXML::Nodes[]
|
705
697
|
label_element = nil
|
706
|
-
this << Element.build("math-arrow") do |this|
|
698
|
+
this << REXML::Element.build("math-arrow") do |this|
|
707
699
|
this["data-start"] = configs[:start_config]
|
708
700
|
this["data-end"] = configs[:end_config]
|
709
701
|
if configs[:tip_kinds]
|
@@ -741,9 +733,9 @@ module ZoticaBuilder
|
|
741
733
|
end
|
742
734
|
|
743
735
|
def build_tree(options = {}, &block)
|
744
|
-
this = Nodes[]
|
736
|
+
this = REXML::Nodes[]
|
745
737
|
content_element = nil
|
746
|
-
this << Element.build("math-tree") do |this|
|
738
|
+
this << REXML::Element.build("math-tree") do |this|
|
747
739
|
content_element = this
|
748
740
|
end
|
749
741
|
apply_options(this, options)
|
@@ -764,8 +756,8 @@ module ZoticaBuilder
|
|
764
756
|
left_label_element = child.get_elements("math-sys-llabel").first
|
765
757
|
right_label_element = child.get_elements("math-sys-rlabel").first
|
766
758
|
antecedent_elements = stack.pop(number)
|
767
|
-
inference_element = Element.build("math-infer") do |this|
|
768
|
-
this << Element.build("math-label") do |this|
|
759
|
+
inference_element = REXML::Element.build("math-infer") do |this|
|
760
|
+
this << REXML::Element.build("math-label") do |this|
|
769
761
|
if left_label_element.to_a.empty?
|
770
762
|
this["class"] = "non"
|
771
763
|
end
|
@@ -773,22 +765,22 @@ module ZoticaBuilder
|
|
773
765
|
this << each_element
|
774
766
|
end
|
775
767
|
end
|
776
|
-
this << Element.build("math-step") do |this|
|
777
|
-
this << Element.build("math-ant") do |this|
|
768
|
+
this << REXML::Element.build("math-step") do |this|
|
769
|
+
this << REXML::Element.build("math-ant") do |this|
|
778
770
|
antecedent_elements.each do |antecedent_element|
|
779
771
|
this << antecedent_element
|
780
772
|
end
|
781
773
|
end
|
782
|
-
this << Element.build("math-conwrap") do |this|
|
783
|
-
this << Element.new("math-line")
|
784
|
-
this << Element.build("math-con") do |this|
|
774
|
+
this << REXML::Element.build("math-conwrap") do |this|
|
775
|
+
this << REXML::Element.new("math-line")
|
776
|
+
this << REXML::Element.build("math-con") do |this|
|
785
777
|
this << ZoticaBuilder.build_strut("upper").first
|
786
778
|
this << ZoticaBuilder.build_strut("dlower").first
|
787
779
|
this << child.get_elements("math-cont").first
|
788
780
|
end
|
789
781
|
end
|
790
782
|
end
|
791
|
-
this << Element.build("math-label") do |this|
|
783
|
+
this << REXML::Element.build("math-label") do |this|
|
792
784
|
if right_label_element.to_a.empty?
|
793
785
|
this["class"] = "non"
|
794
786
|
end
|
@@ -807,9 +799,9 @@ module ZoticaBuilder
|
|
807
799
|
end
|
808
800
|
|
809
801
|
def build_tree_axiom(options = {}, &block)
|
810
|
-
this = Nodes[]
|
802
|
+
this = REXML::Nodes[]
|
811
803
|
content_element = nil
|
812
|
-
this << Element.build("math-axiom") do |this|
|
804
|
+
this << REXML::Element.build("math-axiom") do |this|
|
813
805
|
content_element = this
|
814
806
|
end
|
815
807
|
apply_options(this, options)
|
@@ -818,17 +810,17 @@ module ZoticaBuilder
|
|
818
810
|
end
|
819
811
|
|
820
812
|
def build_tree_inference(number, options = {}, &block)
|
821
|
-
this = Nodes[]
|
813
|
+
this = REXML::Nodes[]
|
822
814
|
content_element, right_label_element, left_label_element = nil
|
823
|
-
this << Element.build("math-sys-infer") do |this|
|
815
|
+
this << REXML::Element.build("math-sys-infer") do |this|
|
824
816
|
this["data-num"] = number.to_s
|
825
|
-
this << Element.build("math-cont") do |this|
|
817
|
+
this << REXML::Element.build("math-cont") do |this|
|
826
818
|
content_element = this
|
827
819
|
end
|
828
|
-
this << Element.build("math-sys-rlabel") do |this|
|
820
|
+
this << REXML::Element.build("math-sys-rlabel") do |this|
|
829
821
|
right_label_element = this
|
830
822
|
end
|
831
|
-
this << Element.build("math-sys-llabel") do |this|
|
823
|
+
this << REXML::Element.build("math-sys-llabel") do |this|
|
832
824
|
left_label_element = this
|
833
825
|
end
|
834
826
|
end
|
@@ -838,9 +830,9 @@ module ZoticaBuilder
|
|
838
830
|
end
|
839
831
|
|
840
832
|
def build_group(transform_configs, options = {}, &block)
|
841
|
-
this = Nodes[]
|
833
|
+
this = REXML::Nodes[]
|
842
834
|
content_element = nil
|
843
|
-
this << Element.build("math-group") do |this|
|
835
|
+
this << REXML::Element.build("math-group") do |this|
|
844
836
|
transforms = []
|
845
837
|
if transform_configs[:rotate]
|
846
838
|
transforms << "rotate(#{transform_configs[:rotate]}deg)"
|
@@ -856,8 +848,8 @@ module ZoticaBuilder
|
|
856
848
|
end
|
857
849
|
|
858
850
|
def build_space(type, options = {})
|
859
|
-
this = Nodes[]
|
860
|
-
this << Element.build("math-space") do |this|
|
851
|
+
this = REXML::Nodes[]
|
852
|
+
this << REXML::Element.build("math-space") do |this|
|
861
853
|
this["class"] = type
|
862
854
|
end
|
863
855
|
apply_options(this, options)
|
@@ -865,9 +857,9 @@ module ZoticaBuilder
|
|
865
857
|
end
|
866
858
|
|
867
859
|
def build_phantom(type, options = {}, &block)
|
868
|
-
this = Nodes[]
|
860
|
+
this = REXML::Nodes[]
|
869
861
|
content_element = nil
|
870
|
-
this << Element.build("math-phantom") do |this|
|
862
|
+
this << REXML::Element.build("math-phantom") do |this|
|
871
863
|
this["class"] = ["lpres", "rpres"].join(" ")
|
872
864
|
unless type == "bth"
|
873
865
|
this["class"] = [*this["class"].split(" "), type].join(" ")
|
@@ -880,9 +872,9 @@ module ZoticaBuilder
|
|
880
872
|
end
|
881
873
|
|
882
874
|
def build_text(text, options = {}, &block)
|
883
|
-
this = Nodes[]
|
884
|
-
this << Element.build("math-text") do |this|
|
885
|
-
this << Text.new(text, true, nil, false)
|
875
|
+
this = REXML::Nodes[]
|
876
|
+
this << REXML::Element.build("math-text") do |this|
|
877
|
+
this << REXML::Text.new(text, true, nil, false)
|
886
878
|
end
|
887
879
|
apply_options(this, options)
|
888
880
|
return this
|
@@ -901,7 +893,7 @@ module ZoticaBuilder
|
|
901
893
|
def create_script_string
|
902
894
|
dir = File.expand_path("../" + SCRIPT_DIR, __FILE__)
|
903
895
|
string = "const DATA = "
|
904
|
-
string << JSON.generate(ZoticaBuilder::DATA.slice("radical", "fence", "wide", "shift", "arrow"))
|
896
|
+
string << JSON.generate(Zenithal::ZoticaBuilder::DATA.slice("radical", "fence", "wide", "shift", "arrow"))
|
905
897
|
string << ";\n"
|
906
898
|
string << File.read(dir + "/main.js")
|
907
899
|
string << "\n"
|
@@ -949,10 +941,10 @@ module ZoticaBuilder
|
|
949
941
|
main_font_path = File.expand_path("../" + DEFAULT_FONT_PATHS[:main], __FILE__)
|
950
942
|
math_font_path = File.expand_path("../" + DEFAULT_FONT_PATHS[:math], __FILE__)
|
951
943
|
File.open(main_font_path, "w") do |file|
|
952
|
-
file.write(ZoticaBuilder.create_font_string(:main))
|
944
|
+
file.write(Zenithal::ZoticaBuilder.create_font_string(:main))
|
953
945
|
end
|
954
946
|
File.open(math_font_path, "w") do |file|
|
955
|
-
file.write(ZoticaBuilder.create_font_string(:math))
|
947
|
+
file.write(Zenithal::ZoticaBuilder.create_font_string(:math))
|
956
948
|
end
|
957
949
|
end
|
958
950
|
|
data/source/zotica/parser.rb
CHANGED
@@ -1,14 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
3
|
|
4
|
-
|
5
|
-
require 'rexml/document'
|
6
|
-
include REXML
|
7
|
-
|
8
|
-
|
9
|
-
module ZoticaSingleParserMethod
|
10
|
-
|
11
|
-
DATA = ZoticaBuilder::DATA
|
4
|
+
module Zenithal::ZoticaSingleParserMethod
|
12
5
|
|
13
6
|
SPACE_ALTERNATIVES = {"sfun" => "afun", "sbin" => "abin", "srel" => "arel", "ssbin" => "asbin", "ssrel" => "asrel", "scas" => "acas", "quad" => "sgl", "qquad" => "dbl"}
|
14
7
|
PHANTOM_TYPES = {"ph" => "bth", "vph" => "ver", "hph" => "hor"}
|
@@ -17,7 +10,7 @@ module ZoticaSingleParserMethod
|
|
17
10
|
if @block
|
18
11
|
inner_element = parse_math_root
|
19
12
|
raw_nodes = @block.call(@attributes, [inner_element])
|
20
|
-
nodes = raw_nodes.inject(Nodes[], :<<)
|
13
|
+
nodes = raw_nodes.inject(REXML::Nodes[], :<<)
|
21
14
|
else
|
22
15
|
nodes = parse_math_root
|
23
16
|
end
|
@@ -27,7 +20,7 @@ module ZoticaSingleParserMethod
|
|
27
20
|
private
|
28
21
|
|
29
22
|
def create_math_element(name, attributes, children_list, options = {})
|
30
|
-
this = Nodes[]
|
23
|
+
this = REXML::Nodes[]
|
31
24
|
options[:role] = determine_role(attributes)
|
32
25
|
options[:class] = attributes["class"]
|
33
26
|
options[:fonts] = @fonts
|
@@ -81,7 +74,7 @@ module ZoticaSingleParserMethod
|
|
81
74
|
right_symbol = ZoticaBuilder.fetch_fence_symbol(right_kind, 1, stretch_level)
|
82
75
|
modify = !stretch_level
|
83
76
|
this << ZoticaBuilder.build_fence(left_kind, right_kind, left_symbol, right_symbol, modify, options) do |content_this|
|
84
|
-
content_this << children_list.fetch(0, Nodes[])
|
77
|
+
content_this << children_list.fetch(0, REXML::Nodes[])
|
85
78
|
end
|
86
79
|
when "set"
|
87
80
|
stretch_level = attributes["s"]
|
@@ -93,8 +86,8 @@ module ZoticaSingleParserMethod
|
|
93
86
|
center_symbol = ZoticaBuilder.fetch_fence_symbol(center_kind, 0, stretch_level)
|
94
87
|
modify = !stretch_level
|
95
88
|
this << ZoticaBuilder.build_set(left_kind, right_kind, center_kind, left_symbol, right_symbol, center_symbol, modify, options) do |left_this, right_this|
|
96
|
-
left_this << children_list.fetch(0, Nodes[])
|
97
|
-
right_this << children_list.fetch(1, Nodes[])
|
89
|
+
left_this << children_list.fetch(0, REXML::Nodes[])
|
90
|
+
right_this << children_list.fetch(1, REXML::Nodes[])
|
98
91
|
end
|
99
92
|
when DATA["fence"].method(:key?)
|
100
93
|
stretch_level = attributes["s"]
|
@@ -102,50 +95,50 @@ module ZoticaSingleParserMethod
|
|
102
95
|
right_symbol = ZoticaBuilder.fetch_fence_symbol(name, 1, stretch_level)
|
103
96
|
modify = !stretch_level
|
104
97
|
this << ZoticaBuilder.build_fence(name, name, left_symbol, right_symbol, modify, options) do |content_this|
|
105
|
-
content_this << children_list.fetch(0, Nodes[])
|
98
|
+
content_this << children_list.fetch(0, REXML::Nodes[])
|
106
99
|
end
|
107
100
|
when "intlike"
|
108
101
|
kind = attributes["k"] || "int"
|
109
102
|
size = (attributes["in"]) ? "inl" : "lrg"
|
110
103
|
symbol = ZoticaBuilder.fetch_integral_symbol(kind, size)
|
111
104
|
this << ZoticaBuilder.build_integral(symbol, size, options) do |sub_this, super_this|
|
112
|
-
sub_this << children_list.fetch(0, Nodes[])
|
113
|
-
super_this << children_list.fetch(1, Nodes[])
|
105
|
+
sub_this << children_list.fetch(0, REXML::Nodes[])
|
106
|
+
super_this << children_list.fetch(1, REXML::Nodes[])
|
114
107
|
end
|
115
108
|
when DATA["integral"].method(:key?)
|
116
109
|
size = (attributes["in"]) ? "inl" : "lrg"
|
117
110
|
symbol = ZoticaBuilder.fetch_integral_symbol(name, size)
|
118
111
|
this << ZoticaBuilder.build_integral(symbol, size, options) do |sub_this, super_this|
|
119
|
-
sub_this << children_list.fetch(0, Nodes[])
|
120
|
-
super_this << children_list.fetch(1, Nodes[])
|
112
|
+
sub_this << children_list.fetch(0, REXML::Nodes[])
|
113
|
+
super_this << children_list.fetch(1, REXML::Nodes[])
|
121
114
|
end
|
122
115
|
when "sumlike"
|
123
116
|
kind = attributes["k"] || "sum"
|
124
117
|
size = (attributes["in"]) ? "inl" : "lrg"
|
125
118
|
symbol = ZoticaBuilder.fetch_sum_symbol(kind, size)
|
126
119
|
this << ZoticaBuilder.build_sum(symbol, size, options) do |under_this, over_this|
|
127
|
-
under_this << children_list.fetch(0, Nodes[])
|
128
|
-
over_this << children_list.fetch(1, Nodes[])
|
120
|
+
under_this << children_list.fetch(0, REXML::Nodes[])
|
121
|
+
over_this << children_list.fetch(1, REXML::Nodes[])
|
129
122
|
end
|
130
123
|
when DATA["sum"].method(:key?)
|
131
124
|
size = (attributes["in"]) ? "inl" : "lrg"
|
132
125
|
symbol = ZoticaBuilder.fetch_sum_symbol(name, size)
|
133
126
|
this << ZoticaBuilder.build_sum(symbol, size, options) do |under_this, over_this|
|
134
|
-
under_this << children_list.fetch(0, Nodes[])
|
135
|
-
over_this << children_list.fetch(1, Nodes[])
|
127
|
+
under_this << children_list.fetch(0, REXML::Nodes[])
|
128
|
+
over_this << children_list.fetch(1, REXML::Nodes[])
|
136
129
|
end
|
137
130
|
when "accent"
|
138
131
|
kind = attributes["k"]
|
139
132
|
under_symbol = ZoticaBuilder.fetch_accent_symbol(kind, 0)
|
140
133
|
over_symbol = ZoticaBuilder.fetch_accent_symbol(kind, 1)
|
141
134
|
this << ZoticaBuilder.build_accent(under_symbol, over_symbol, options) do |base_this|
|
142
|
-
base_this << children_list.fetch(0, Nodes[])
|
135
|
+
base_this << children_list.fetch(0, REXML::Nodes[])
|
143
136
|
end
|
144
137
|
when DATA["accent"].method(:key?)
|
145
138
|
under_symbol = ZoticaBuilder.fetch_accent_symbol(name, 0)
|
146
139
|
over_symbol = ZoticaBuilder.fetch_accent_symbol(name, 1)
|
147
140
|
this << ZoticaBuilder.build_accent(under_symbol, over_symbol, options) do |base_this|
|
148
|
-
base_this << children_list.fetch(0, Nodes[])
|
141
|
+
base_this << children_list.fetch(0, REXML::Nodes[])
|
149
142
|
end
|
150
143
|
when "wide"
|
151
144
|
kind = attributes["k"]
|
@@ -154,7 +147,7 @@ module ZoticaSingleParserMethod
|
|
154
147
|
over_symbol = ZoticaBuilder.fetch_wide_symbol(kind, 1, stretch_level)
|
155
148
|
modify = !stretch_level
|
156
149
|
this << ZoticaBuilder.build_wide(kind, under_symbol, over_symbol, modify, options) do |base_this|
|
157
|
-
base_this << children_list.fetch(0, Nodes[])
|
150
|
+
base_this << children_list.fetch(0, REXML::Nodes[])
|
158
151
|
end
|
159
152
|
when DATA["wide"].method(:key?)
|
160
153
|
stretch_level = attributes["s"]
|
@@ -162,98 +155,98 @@ module ZoticaSingleParserMethod
|
|
162
155
|
over_symbol = ZoticaBuilder.fetch_wide_symbol(name, 1, stretch_level)
|
163
156
|
modify = !stretch_level
|
164
157
|
this << ZoticaBuilder.build_wide(name, under_symbol, over_symbol, modify, options) do |base_this|
|
165
|
-
base_this << children_list.fetch(0, Nodes[])
|
158
|
+
base_this << children_list.fetch(0, REXML::Nodes[])
|
166
159
|
end
|
167
160
|
when "multi"
|
168
161
|
this << ZoticaBuilder.build_subsuper(options) do |base_this, sub_this, super_this, left_sub_this, left_super_this|
|
169
|
-
base_this << children_list.fetch(0, Nodes[])
|
170
|
-
sub_this << children_list.fetch(1, Nodes[])
|
171
|
-
super_this << children_list.fetch(2, Nodes[])
|
172
|
-
left_sub_this << children_list.fetch(3, Nodes[])
|
173
|
-
left_super_this << children_list.fetch(4, Nodes[])
|
162
|
+
base_this << children_list.fetch(0, REXML::Nodes[])
|
163
|
+
sub_this << children_list.fetch(1, REXML::Nodes[])
|
164
|
+
super_this << children_list.fetch(2, REXML::Nodes[])
|
165
|
+
left_sub_this << children_list.fetch(3, REXML::Nodes[])
|
166
|
+
left_super_this << children_list.fetch(4, REXML::Nodes[])
|
174
167
|
end
|
175
168
|
when "sb"
|
176
169
|
this << ZoticaBuilder.build_subsuper(options) do |base_this, sub_this, super_this, left_sub_element, left_super_element|
|
177
|
-
base_this << children_list.fetch(0, Nodes[])
|
178
|
-
sub_this << children_list.fetch(1, Nodes[])
|
170
|
+
base_this << children_list.fetch(0, REXML::Nodes[])
|
171
|
+
sub_this << children_list.fetch(1, REXML::Nodes[])
|
179
172
|
end
|
180
173
|
when "sp"
|
181
174
|
this << ZoticaBuilder.build_subsuper(options) do |base_this, sub_this, super_this, left_sub_element, left_super_element|
|
182
|
-
base_this << children_list.fetch(0, Nodes[])
|
183
|
-
super_this << children_list.fetch(1, Nodes[])
|
175
|
+
base_this << children_list.fetch(0, REXML::Nodes[])
|
176
|
+
super_this << children_list.fetch(1, REXML::Nodes[])
|
184
177
|
end
|
185
178
|
when "sbsp"
|
186
179
|
this << ZoticaBuilder.build_subsuper(options) do |base_this, sub_this, super_this, left_sub_element, left_super_element|
|
187
|
-
base_this << children_list.fetch(0, Nodes[])
|
188
|
-
sub_this << children_list.fetch(1, Nodes[])
|
189
|
-
super_this << children_list.fetch(2, Nodes[])
|
180
|
+
base_this << children_list.fetch(0, REXML::Nodes[])
|
181
|
+
sub_this << children_list.fetch(1, REXML::Nodes[])
|
182
|
+
super_this << children_list.fetch(2, REXML::Nodes[])
|
190
183
|
end
|
191
184
|
when "unov"
|
192
185
|
this << ZoticaBuilder.build_underover(options) do |base_this, under_this, over_this|
|
193
|
-
base_this << children_list.fetch(0, Nodes[])
|
194
|
-
under_this << children_list.fetch(1, Nodes[])
|
195
|
-
over_this << children_list.fetch(2, Nodes[])
|
186
|
+
base_this << children_list.fetch(0, REXML::Nodes[])
|
187
|
+
under_this << children_list.fetch(1, REXML::Nodes[])
|
188
|
+
over_this << children_list.fetch(2, REXML::Nodes[])
|
196
189
|
end
|
197
190
|
when "un"
|
198
191
|
this << ZoticaBuilder.build_underover(options) do |base_this, under_this, over_this|
|
199
|
-
base_this << children_list.fetch(0, Nodes[])
|
200
|
-
under_this << children_list.fetch(1, Nodes[])
|
192
|
+
base_this << children_list.fetch(0, REXML::Nodes[])
|
193
|
+
under_this << children_list.fetch(1, REXML::Nodes[])
|
201
194
|
end
|
202
195
|
when "ov"
|
203
196
|
this << ZoticaBuilder.build_underover(options) do |base_this, under_this, over_this|
|
204
|
-
base_this << children_list.fetch(0, Nodes[])
|
205
|
-
over_this << children_list.fetch(1, Nodes[])
|
197
|
+
base_this << children_list.fetch(0, REXML::Nodes[])
|
198
|
+
over_this << children_list.fetch(1, REXML::Nodes[])
|
206
199
|
end
|
207
200
|
when "frac"
|
208
201
|
this << ZoticaBuilder.build_fraction(options) do |numerator_this, denominator_this|
|
209
|
-
numerator_this << children_list.fetch(0, Nodes[])
|
210
|
-
denominator_this << children_list.fetch(1, Nodes[])
|
202
|
+
numerator_this << children_list.fetch(0, REXML::Nodes[])
|
203
|
+
denominator_this << children_list.fetch(1, REXML::Nodes[])
|
211
204
|
end
|
212
205
|
when "sqrt"
|
213
206
|
stretch_level = attributes["s"]
|
214
207
|
symbol = ZoticaBuilder.fetch_radical_symbol(stretch_level)
|
215
208
|
modify = !stretch_level
|
216
209
|
this << ZoticaBuilder.build_radical(symbol, modify, options) do |content_this, index_this|
|
217
|
-
content_this << children_list.fetch(0, Nodes[])
|
218
|
-
index_this << children_list.fetch(1, Nodes[])
|
210
|
+
content_this << children_list.fetch(0, REXML::Nodes[])
|
211
|
+
index_this << children_list.fetch(1, REXML::Nodes[])
|
219
212
|
end
|
220
213
|
when "table"
|
221
214
|
type = attributes["t"]
|
222
215
|
align_config = attributes["align"]
|
223
216
|
raw = !!attributes["raw"]
|
224
217
|
this << ZoticaBuilder.build_table(type, align_config, raw, options) do |table_this|
|
225
|
-
table_this << children_list.fetch(0, Nodes[])
|
218
|
+
table_this << children_list.fetch(0, REXML::Nodes[])
|
226
219
|
end
|
227
220
|
when "array"
|
228
221
|
align_config = attributes["align"]
|
229
222
|
this << ZoticaBuilder.build_table("std", align_config, true, options) do |table_this|
|
230
|
-
table_this << children_list.fetch(0, Nodes[])
|
223
|
+
table_this << children_list.fetch(0, REXML::Nodes[])
|
231
224
|
end
|
232
225
|
when "stack"
|
233
226
|
this << ZoticaBuilder.build_table("stk", nil, true, options) do |table_this|
|
234
|
-
table_this << children_list.fetch(0, Nodes[])
|
227
|
+
table_this << children_list.fetch(0, REXML::Nodes[])
|
235
228
|
end
|
236
229
|
when "matrix"
|
237
230
|
this << ZoticaBuilder.build_table("mat", nil, false, options) do |table_this|
|
238
|
-
table_this << children_list.fetch(0, Nodes[])
|
231
|
+
table_this << children_list.fetch(0, REXML::Nodes[])
|
239
232
|
end
|
240
233
|
when "case"
|
241
234
|
left_symbol = ZoticaBuilder.fetch_fence_symbol("brace", 0, nil)
|
242
235
|
right_symbol = ZoticaBuilder.fetch_fence_symbol("none", 1, nil)
|
243
236
|
this << ZoticaBuilder.build_fence("brace", "none", left_symbol, right_symbol, true, options) do |this|
|
244
237
|
this << ZoticaBuilder.build_table("cas", "ll", false) do |table_this|
|
245
|
-
table_this << children_list.fetch(0, Nodes[])
|
238
|
+
table_this << children_list.fetch(0, REXML::Nodes[])
|
246
239
|
end
|
247
240
|
end
|
248
241
|
when "diag"
|
249
242
|
vertical_gaps_string = attributes["ver"]
|
250
243
|
horizontal_gaps_string = attributes["hor"]
|
251
244
|
this << ZoticaBuilder.build_diagram(vertical_gaps_string, horizontal_gaps_string, options) do |table_this|
|
252
|
-
table_this << children_list.fetch(0, Nodes[])
|
245
|
+
table_this << children_list.fetch(0, REXML::Nodes[])
|
253
246
|
end
|
254
247
|
when "c"
|
255
248
|
this << ZoticaBuilder.build_table_cell(options) do |cell_this|
|
256
|
-
cell_this << children_list.fetch(0, Nodes[])
|
249
|
+
cell_this << children_list.fetch(0, REXML::Nodes[])
|
257
250
|
end
|
258
251
|
when "cc"
|
259
252
|
children_list.each do |children|
|
@@ -261,11 +254,11 @@ module ZoticaSingleParserMethod
|
|
261
254
|
cell_this << children
|
262
255
|
end
|
263
256
|
end
|
264
|
-
this << Element.new("math-sys-br")
|
257
|
+
this << REXML::Element.new("math-sys-br")
|
265
258
|
when "v"
|
266
259
|
vertex_name = attributes["name"]
|
267
260
|
this << ZoticaBuilder.build_diagram_vertex(vertex_name, options) do |vertex_this|
|
268
|
-
vertex_this << children_list.fetch(0, Nodes[])
|
261
|
+
vertex_this << children_list.fetch(0, REXML::Nodes[])
|
269
262
|
end
|
270
263
|
when "vv"
|
271
264
|
children_list.each do |children|
|
@@ -273,7 +266,7 @@ module ZoticaSingleParserMethod
|
|
273
266
|
vertex_this << children
|
274
267
|
end
|
275
268
|
end
|
276
|
-
this << Element.new("math-sys-br")
|
269
|
+
this << REXML::Element.new("math-sys-br")
|
277
270
|
when "ar"
|
278
271
|
configs = {}
|
279
272
|
configs[:start_config] = attributes["s"]
|
@@ -288,35 +281,35 @@ module ZoticaSingleParserMethod
|
|
288
281
|
configs[:mark] = attributes["mark"]
|
289
282
|
arrow_name = attributes["name"]
|
290
283
|
this << ZoticaBuilder.build_arrow(arrow_name, configs, options) do |label_this|
|
291
|
-
label_this << children_list.fetch(0, Nodes[])
|
284
|
+
label_this << children_list.fetch(0, REXML::Nodes[])
|
292
285
|
end
|
293
286
|
when "tree"
|
294
287
|
this << ZoticaBuilder.build_tree(options) do |content_this|
|
295
|
-
content_this << children_list.fetch(0, Nodes[])
|
288
|
+
content_this << children_list.fetch(0, REXML::Nodes[])
|
296
289
|
end
|
297
290
|
when "axm"
|
298
291
|
this << ZoticaBuilder.build_tree_axiom(options) do |content_this|
|
299
|
-
content_this << children_list.fetch(0, Nodes[])
|
292
|
+
content_this << children_list.fetch(0, REXML::Nodes[])
|
300
293
|
end
|
301
294
|
when "infr"
|
302
295
|
number = attributes["n"].to_i
|
303
296
|
this << ZoticaBuilder.build_tree_inference(number, options) do |content_this, right_label_this, left_label_this|
|
304
|
-
content_this << children_list.fetch(0, Nodes[])
|
305
|
-
right_label_this << children_list.fetch(1, Nodes[])
|
306
|
-
left_label_this << children_list.fetch(2, Nodes[])
|
297
|
+
content_this << children_list.fetch(0, REXML::Nodes[])
|
298
|
+
right_label_this << children_list.fetch(1, REXML::Nodes[])
|
299
|
+
left_label_this << children_list.fetch(2, REXML::Nodes[])
|
307
300
|
end
|
308
301
|
when "br"
|
309
|
-
this << Element.new("math-sys-br")
|
302
|
+
this << REXML::Element.new("math-sys-br")
|
310
303
|
when "g"
|
311
304
|
transform_configs = {}
|
312
305
|
transform_configs[:rotate] = attributes["rotate"]
|
313
306
|
this << ZoticaBuilder.build_group(transform_configs, options) do |content_this|
|
314
|
-
content_this << children_list.fetch(0, Nodes[])
|
307
|
+
content_this << children_list.fetch(0, REXML::Nodes[])
|
315
308
|
end
|
316
309
|
when "ph", "vph", "hph"
|
317
310
|
type = PHANTOM_TYPES[name] || attributes["t"] || "bth"
|
318
311
|
this << ZoticaBuilder.build_phantom(type, options) do |content_this|
|
319
|
-
content_this << children_list.fetch(0, Nodes[])
|
312
|
+
content_this << children_list.fetch(0, REXML::Nodes[])
|
320
313
|
end
|
321
314
|
when "s"
|
322
315
|
type = attributes["t"] || "medium"
|
@@ -325,18 +318,18 @@ module ZoticaSingleParserMethod
|
|
325
318
|
type = SPACE_ALTERNATIVES[name]
|
326
319
|
this << ZoticaBuilder.build_space(type, options)
|
327
320
|
else
|
328
|
-
this << Element.build(name) do |this|
|
321
|
+
this << REXML::Element.build(name) do |this|
|
329
322
|
attributes.each do |key, value|
|
330
323
|
this[key] = value
|
331
324
|
end
|
332
|
-
this << children_list.fetch(0, Nodes[])
|
325
|
+
this << children_list.fetch(0, REXML::Nodes[])
|
333
326
|
end
|
334
327
|
end
|
335
328
|
return this
|
336
329
|
end
|
337
330
|
|
338
331
|
def create_math_text(text, options = {})
|
339
|
-
this = Nodes[]
|
332
|
+
this = REXML::Nodes[]
|
340
333
|
options[:fonts] = @fonts
|
341
334
|
text.each_char do |char|
|
342
335
|
if char =~ /\p{Number}/
|
@@ -367,7 +360,7 @@ module ZoticaSingleParserMethod
|
|
367
360
|
end
|
368
361
|
|
369
362
|
def parse_math_root
|
370
|
-
element = Element.new("math-root")
|
363
|
+
element = REXML::Element.new("math-root")
|
371
364
|
children = parse_nodes({})
|
372
365
|
if @exact
|
373
366
|
parse_eof
|
@@ -427,12 +420,17 @@ module ZoticaSingleParserMethod
|
|
427
420
|
return escape
|
428
421
|
end
|
429
422
|
|
423
|
+
ZoticaBuilder = Zenithal::ZoticaBuilder
|
424
|
+
|
425
|
+
DATA = ZoticaBuilder::DATA
|
426
|
+
DEFAULT_FONTS = ZoticaBuilder::DEFAULT_FONTS
|
427
|
+
|
430
428
|
end
|
431
429
|
|
432
430
|
|
433
|
-
class ZoticaSingleParser < ZenithalParser
|
431
|
+
class Zenithal::ZoticaSingleParser < Zenithal::ZenithalParser
|
434
432
|
|
435
|
-
include ZoticaSingleParserMethod
|
433
|
+
include Zenithal::ZoticaSingleParserMethod
|
436
434
|
|
437
435
|
attr_accessor :exact
|
438
436
|
attr_accessor :fonts
|
@@ -459,7 +457,7 @@ class ZoticaSingleParser < ZenithalParser
|
|
459
457
|
end
|
460
458
|
|
461
459
|
|
462
|
-
class ZoticaParser < ZenithalParser
|
460
|
+
class Zenithal::ZoticaParser < Zenithal::ZenithalParser
|
463
461
|
|
464
462
|
def initialize(source)
|
465
463
|
super(source)
|
@@ -477,7 +475,7 @@ class ZoticaParser < ZenithalParser
|
|
477
475
|
def register_math_macro(name, &block)
|
478
476
|
outer_self = self
|
479
477
|
register_plugin(name) do |attributes|
|
480
|
-
parser = ZoticaSingleParser.new(@source)
|
478
|
+
parser = Zenithal::ZoticaSingleParser.new(@source)
|
481
479
|
@raw_macro_names.each do |raw_macro_name|
|
482
480
|
parser.register_plugin(raw_macro_name) do |_|
|
483
481
|
raw_parser = outer_self.clone
|
@@ -522,14 +520,14 @@ class ZoticaParser < ZenithalParser
|
|
522
520
|
|
523
521
|
def register_resource_macro(name)
|
524
522
|
register_macro(name) do |attributes, children_list|
|
525
|
-
style_string = ZoticaBuilder.create_style_string(attributes["font-url"])
|
526
|
-
script_string = ZoticaBuilder.create_script_string
|
527
|
-
nodes = Nodes[]
|
528
|
-
nodes << Element.build("style") do |element|
|
529
|
-
element << Text.new(style_string, true, nil, true)
|
530
|
-
end
|
531
|
-
nodes << Element.build("script") do |element|
|
532
|
-
element << CData.new(script_string)
|
523
|
+
style_string = Zenithal::ZoticaBuilder.create_style_string(attributes["font-url"])
|
524
|
+
script_string = Zenithal::ZoticaBuilder.create_script_string
|
525
|
+
nodes = REXML::Nodes[]
|
526
|
+
nodes << REXML::Element.build("style") do |element|
|
527
|
+
element << REXML::Text.new(style_string, true, nil, true)
|
528
|
+
end
|
529
|
+
nodes << REXML::Element.build("script") do |element|
|
530
|
+
element << REXML::CData.new(script_string)
|
533
531
|
end
|
534
532
|
next nodes
|
535
533
|
end
|
data/source/zotica.rb
CHANGED
@@ -1,14 +1,19 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
3
|
|
4
|
-
|
4
|
+
module Zenithal
|
5
5
|
|
6
|
+
ZOTICA_VERSION = "1.0.1"
|
7
|
+
ZOTICA_VERSION_ARRAY = VERSION.split(/\./).map(&:to_i)
|
6
8
|
|
7
|
-
|
9
|
+
end
|
8
10
|
|
9
|
-
ZOTICA_VERSION = "1.0.0"
|
10
11
|
|
11
|
-
|
12
|
-
|
12
|
+
require 'json'
|
13
|
+
require 'rexml/document'
|
14
|
+
require 'sassc'
|
15
|
+
require 'ttfunk'
|
16
|
+
require 'zenml'
|
13
17
|
|
14
|
-
|
18
|
+
require_relative 'zotica/builder'
|
19
|
+
require_relative 'zotica/parser'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zotica
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ziphil
|
8
8
|
autorequire:
|
9
9
|
bindir: exec
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: zenml
|