plurimath 0.8.7 → 0.8.9

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1,7 +1,8 @@
1
1
  require "erb"
2
2
  require "bundler/gem_tasks"
3
3
  require "rspec/core/rake_task"
4
- require 'opal/rspec/rake_task'
4
+ require "opal/rspec/rake_task"
5
+ require_relative "lib/plurimath"
5
6
 
6
7
  RSpec::Core::RakeTask.new(:spec)
7
8
 
@@ -14,4 +15,65 @@ rescue LoadError
14
15
  # script.
15
16
  end
16
17
 
18
+ DOC_FILES = {
19
+ "supported_parens_list.adoc" => :paren,
20
+ "supported_symbols_list.adoc" => :symbols,
21
+ }.freeze
22
+
23
+ DOC_FILES.each do |file_name, type|
24
+ file file_name => [] do
25
+ write_doc_file(file_name, type: type)
26
+ end
27
+ end
28
+
29
+ def write_doc_file(doc_file, type:)
30
+ File.open(doc_file, "a") do |file|
31
+ file.write(file_header)
32
+
33
+ Plurimath::Utility.send(:"#{type}_files").each do |symbol|
34
+ file_name = File.basename(symbol, ".rb")
35
+ klass = Plurimath::Utility.get_symbol_class(file_name)
36
+ next if klass::INPUT.empty?
37
+
38
+ file.write(documentation_content(file_name, klass))
39
+ end
40
+
41
+ file.write("|===")
42
+ end
43
+ end
44
+
45
+ def documentation_content(file_name, klass)
46
+ <<~DOCUMENTATION
47
+ | #{Plurimath::Utility.capitalize(file_name)}
48
+ | `#{Plurimath::Utility.hexcode_in_input(klass) || klass.input(:asciimath).first}`
49
+ #{input_for_formats(klass)}
50
+ DOCUMENTATION
51
+ end
52
+
53
+ def file_header
54
+ <<~HEADER
55
+ |===
56
+ | Math symbol name | Unicode character | AsciiMath | LaTeX | MathML | OMML | UnicodeMath
57
+
58
+ HEADER
59
+ end
60
+
61
+ def input_for_formats(klass)
62
+ %i[asciimath latex mathml omml unicodemath].map do |format|
63
+ <<~ROW
64
+ | #{format_input(format, klass)}
65
+ ROW
66
+ end.join("")
67
+ end
68
+
69
+ def format_input(format, klass)
70
+ klass.input(format).flatten.map do |s|
71
+ if [:latex, :unicodemath].include?(format)
72
+ "`\\#{s}`"
73
+ else
74
+ "`#{s}`"
75
+ end
76
+ end.join(", ").gsub(/\|/, "\\|")
77
+ end
78
+
17
79
  task :default => :spec
@@ -40,14 +40,16 @@ module Plurimath
40
40
 
41
41
  def digit_count_format(int, fraction, number)
42
42
  integer = int + "." + fraction
43
- float = integer.to_f
43
+ float = BigDecimal(integer)
44
44
  int_length = integer.length - 1
45
45
  @digit_count ||= int_length
46
46
  if int_length > @digit_count
47
47
  number_string = float.round(@digit_count - int.length)
48
- number_string.is_a?(Float) ? number_string.to_s.split(".").last : nil
48
+ @digit_count > int.length ? number_string.to_s("F").split(".").last : nil
49
49
  elsif int_length < @digit_count
50
- number += "0" * (@digit_count - int_length)
50
+ number + "0" * (@digit_count - int_length)
51
+ else
52
+ number
51
53
  end
52
54
  end
53
55
  end
@@ -8,7 +8,7 @@ require_relative "localized_number"
8
8
  module Plurimath
9
9
  module Formatter
10
10
  class NumericFormatter
11
- attr_accessor :locale, :localize_number, :localizer_symbols
11
+ attr_accessor :locale, :localize_number, :localizer_symbols, :twitter_cldr_reader
12
12
 
13
13
  LOCALIZE_NUMBER_REGEX = %r{(?<group>[^#])?(?<groupdigits>#+0)(?<decimal>.)(?<fractdigits>#+)(?<fractgroup>[^#])?}
14
14
  SUPPORTED_NOTATIONS = %i[e scientific engineering].freeze
@@ -17,7 +17,7 @@ module Plurimath
17
17
  @locale = locale
18
18
  @localize_number = localize_number
19
19
  @localizer_symbols = localizer_symbols
20
- @twitter_cldr_reader = twitter_cldr_reader
20
+ @twitter_cldr_reader = twitter_cldr_reader_lookup
21
21
  end
22
22
 
23
23
  def localized_number(number_string, locale:, precision:, format:)
@@ -30,7 +30,7 @@ module Plurimath
30
30
 
31
31
  private
32
32
 
33
- def twitter_cldr_reader
33
+ def twitter_cldr_reader_lookup
34
34
  num = TwitterCldr::DataReaders::NumberDataReader.new(locale)
35
35
  num.symbols
36
36
  .merge!(@localizer_symbols)
@@ -23,6 +23,14 @@ module Plurimath
23
23
  )
24
24
  end
25
25
 
26
+ def twitter_cldr_reader(locale: @locale)
27
+ Formatter::NumericFormatter.new(
28
+ supported_locale(locale),
29
+ localize_number: localize_number,
30
+ localizer_symbols: localizer_symbols,
31
+ ).twitter_cldr_reader
32
+ end
33
+
26
34
  private
27
35
 
28
36
  def supported_locale(locale)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Plurimath
4
- VERSION = "0.8.7"
4
+ VERSION = "0.8.9"
5
5
  end
@@ -1,441 +1,196 @@
1
1
  |===
2
- | | AsciiMath | LaTeX | MathML | OMML | UnicodeMath | Presentation
2
+ | Math symbol name | Unicode character | AsciiMath | LaTeX | MathML | OMML | UnicodeMath
3
3
 
4
4
  | CloseParen
5
- l|
6
- :}
7
- &#x3017;
8
- __{end}
9
- l|
10
- &#x3017;
11
- __{end}
12
- __{:}}
13
- l|
14
- &#x3017;
15
- l|
16
- &#x3017;
17
- l|
18
- \\end
19
- &#x3017;
20
- __{:}}
21
5
  | `&#x3017;`
6
+ | `:}`, `&#x3017;`, `__{end}`
7
+ | `\&#x3017;`, `\__{end}`, `\__{:}}`
8
+ | `&#x3017;`
9
+ | `&#x3017;`
10
+ | `\end`, `\&#x3017;`, `\__{:}}`
22
11
 
23
12
  | Langle
24
- l|
25
- langle
26
- (:
27
- <<
28
- &#x2329;
29
- __{&#x27e8;}
30
- __{bra}
31
- l|
32
- \langle
33
- &#x2329;
34
- __{(:}
35
- __{<<}
36
- __{&#x27e8;}
37
- __{bra}
38
- l|
39
- &#x2329;
40
- &#x27e8;
41
- l|
42
- &#x2329;
43
- &#x27e8;
44
- l|
45
- &#x2329;
46
- &#x27e8;
47
- \\bra
48
- __{langle}
49
- __{(:}
50
- __{<<}
51
13
  | `&#x2329;`
14
+ | `langle`, `(:`, `<<`, `&#x2329;`, `__{&#x27e8;}`, `__{bra}`
15
+ | `\\langle`, `\&#x2329;`, `\__{(:}`, `\__{<<}`, `\__{&#x27e8;}`, `\__{bra}`
16
+ | `&#x2329;`, `&#x27e8;`
17
+ | `&#x2329;`, `&#x27e8;`
18
+ | `\&#x2329;`, `\&#x27e8;`, `\bra`, `\__{langle}`, `\__{(:}`, `\__{<<}`
52
19
 
53
20
  | Lbbrack
54
- l|
55
- &#x27e6;
56
- __{lbbrack}
57
- __{Lbrack}
58
- l|
59
- &#x27e6;
60
- __{lbbrack}
61
- __{Lbrack}
62
- l|
63
- &#x27e6;
64
- l|
65
- &#x27e6;
66
- l|
67
- &#x27e6;
68
- \\lbbrack
69
- \\Lbrack
70
21
  | `&#x27e6;`
22
+ | `&#x27e6;`, `__{lbbrack}`, `__{Lbrack}`
23
+ | `\&#x27e6;`, `\__{lbbrack}`, `\__{Lbrack}`
24
+ | `&#x27e6;`
25
+ | `&#x27e6;`
26
+ | `\&#x27e6;`, `\lbbrack`, `\Lbrack`
71
27
 
72
28
  | Lbrace
73
- l|
74
- &#x7b;
75
- __{lbrace}
76
- l|
77
- \lbrace
78
- &#x7b;
79
- l|
80
- &#x7b;
81
- l|
82
- &#x7b;
83
- l|
84
- &#x7b;
85
- \\lbrace
86
29
  | `&#x7b;`
30
+ | `&#x7b;`, `__{lbrace}`
31
+ | `\\lbrace`, `\&#x7b;`
32
+ | `&#x7b;`
33
+ | `&#x7b;`
34
+ | `\&#x7b;`, `\lbrace`
87
35
 
88
36
  | Lbrack
89
- l|
90
- &#x5b;
91
- __{lbrack}
92
- l|
93
- \lbrack
94
- &#x5b;
95
- l|
96
- &#x5b;
97
- l|
98
- &#x5b;
99
- l|
100
- &#x5b;
101
- \\lbrack
102
37
  | `&#x5b;`
38
+ | `&#x5b;`, `__{lbrack}`
39
+ | `\\lbrack`, `\&#x5b;`
40
+ | `&#x5b;`
41
+ | `&#x5b;`
42
+ | `\&#x5b;`, `\lbrack`
103
43
 
104
44
  | Lceil
105
- l|
106
- lceiling
107
- \|~
108
- &#x2308;
109
- __{lceil}
110
- l|
111
- \lceil
112
- &#x2308;
113
- __{lceiling}
114
- __{\|~}
115
- l|
116
- &#x2308;
117
- l|
118
- &#x2308;
119
- l|
120
- &#x2308;
121
- \\lceil
122
- __{lceiling}
123
- __{\|~}
124
45
  | `&#x2308;`
46
+ | `lceiling`, `\|~`, `&#x2308;`, `__{lceil}`
47
+ | `\\lceil`, `\&#x2308;`, `\__{lceiling}`, `\__{\|~}`
48
+ | `&#x2308;`
49
+ | `&#x2308;`
50
+ | `\&#x2308;`, `\lceil`, `\__{lceiling}`, `\__{\|~}`
125
51
 
126
52
  | Lcurly
127
- l|
128
- {
129
- l|
130
- \{
131
- l|
132
- {
133
- l|
134
- {
135
- l|
136
- {
137
53
  | `{`
54
+ | `{`
55
+ | `\\{`
56
+ | `{`
57
+ | `{`
58
+ | `\{`
138
59
 
139
60
  | Lfloor
140
- l|
141
- lfloor
142
- \|__
143
- &#x230a;
144
- l|
145
- \lfloor
146
- &#x230a;
147
- __{\|__}
148
- l|
149
- &#x230a;
150
- l|
151
- &#x230a;
152
- l|
153
- &#x230a;
154
- \\lfloor
155
- __{\|__}
156
61
  | `&#x230a;`
62
+ | `lfloor`, `\|__`, `&#x230a;`
63
+ | `\\lfloor`, `\&#x230a;`, `\__{\|__}`
64
+ | `&#x230a;`
65
+ | `&#x230a;`
66
+ | `\&#x230a;`, `\lfloor`, `\__{\|__}`
157
67
 
158
68
  | Lround
159
- l|
160
- (
161
- l|
162
- (
163
- l|
164
- (
165
- l|
166
- (
167
- l|
168
- (
169
69
  | `(`
70
+ | `(`
71
+ | `\(`
72
+ | `(`
73
+ | `(`
74
+ | `\(`
170
75
 
171
76
  | Lsquare
172
- l|
173
- [
174
- l|
175
- [
176
- l|
177
- [
178
- l|
179
- [
180
- l|
181
- [
182
77
  | `[`
78
+ | `[`
79
+ | `\[`
80
+ | `[`
81
+ | `[`
82
+ | `\[`
183
83
 
184
84
  | Norm
185
- l|
186
- &#x2016;
187
- __{Vert}
188
- __{norm}
189
- l|
190
- \Vert
191
- &#x2016;
192
- __{norm}
193
- l|
194
- &#x2016;
195
- l|
196
- &#x2016;
197
- l|
198
- \Vert
199
- \\Vert
200
- \\norm
201
- &#x2016;
202
85
  | `&#x2016;`
86
+ | `&#x2016;`, `__{Vert}`, `__{norm}`
87
+ | `\\Vert`, `\&#x2016;`, `\__{norm}`
88
+ | `&#x2016;`
89
+ | `&#x2016;`
90
+ | `\\Vert`, `\Vert`, `\norm`, `\&#x2016;`
203
91
 
204
92
  | OpenParen
205
- l|
206
- {:
207
- &#x3016;
208
- __{begin}
209
- l|
210
- &#x3016;
211
- __{begin}
212
- __{{:}
213
- l|
214
- &#x3016;
215
- l|
216
- &#x3016;
217
- l|
218
- \\begin
219
- &#x3016;
220
- __{{:}
221
93
  | `&#x3016;`
94
+ | `{:`, `&#x3016;`, `__{begin}`
95
+ | `\&#x3016;`, `\__{begin}`, `\__{{:}`
96
+ | `&#x3016;`
97
+ | `&#x3016;`
98
+ | `\begin`, `\&#x3016;`, `\__{{:}`
222
99
 
223
100
  | Rangle
224
- l|
225
- rangle
226
- :)
227
- >>
228
- &#x232a;
229
- &#x27e9;
230
- __{&#x27e9;}
231
- __{ket}
232
- l|
233
- \rangle
234
- &#x232a;
235
- &#x27e9;
236
- __{:)}
237
- __{>>}
238
- __{&#x27e9;}
239
- __{ket}
240
- l|
241
- &#x232a;
242
- &#x27e9;
243
- l|
244
- &#x232a;
245
- &#x27e9;
246
- l|
247
- &#x232a;
248
- &#x27e9;
249
- \\ket
250
- __{rangle}
251
- __{:)}
252
- __{>>}
253
- __{&#x27e9;}
254
101
  | `&#x232a;`
102
+ | `rangle`, `:)`, `>>`, `&#x232a;`, `&#x27e9;`, `__{&#x27e9;}`, `__{ket}`
103
+ | `\\rangle`, `\&#x232a;`, `\&#x27e9;`, `\__{:)}`, `\__{>>}`, `\__{&#x27e9;}`, `\__{ket}`
104
+ | `&#x232a;`, `&#x27e9;`
105
+ | `&#x232a;`, `&#x27e9;`
106
+ | `\&#x232a;`, `\&#x27e9;`, `\ket`, `\__{rangle}`, `\__{:)}`, `\__{>>}`, `\__{&#x27e9;}`
255
107
 
256
108
  | Rbbrack
257
- l|
258
- &#x27e7;
259
- __{rbbrack}
260
- __{Rbrack}
261
- l|
262
- &#x27e7;
263
- __{rbbrack}
264
- __{Rbrack}
265
- l|
266
- &#x27e7;
267
- l|
268
- &#x27e7;
269
- l|
270
- &#x27e7;
271
- \\rbbrack
272
- \\Rbrack
273
109
  | `&#x27e7;`
110
+ | `&#x27e7;`, `__{rbbrack}`, `__{Rbrack}`
111
+ | `\&#x27e7;`, `\__{rbbrack}`, `\__{Rbrack}`
112
+ | `&#x27e7;`
113
+ | `&#x27e7;`
114
+ | `\&#x27e7;`, `\rbbrack`, `\Rbrack`
274
115
 
275
116
  | Rbrace
276
- l|
277
- &#x7d;
278
- __{rbrace}
279
- l|
280
- \rbrace
281
- &#x7d;
282
- l|
283
- &#x7d;
284
- l|
285
- &#x7d;
286
- l|
287
- &#x7d;
288
- __{rbrace}
289
117
  | `&#x7d;`
118
+ | `&#x7d;`, `__{rbrace}`
119
+ | `\\rbrace`, `\&#x7d;`
120
+ | `&#x7d;`
121
+ | `&#x7d;`
122
+ | `\&#x7d;`, `\__{rbrace}`
290
123
 
291
124
  | Rbrack
292
- l|
293
- &#x5d;
294
- __{rbrack}
295
- l|
296
- \rbrack
297
- &#x5d;
298
- l|
299
- &#x5d;
300
- l|
301
- &#x5d;
302
- l|
303
- &#x5d;
304
- __{rbrack}
305
125
  | `&#x5d;`
126
+ | `&#x5d;`, `__{rbrack}`
127
+ | `\\rbrack`, `\&#x5d;`
128
+ | `&#x5d;`
129
+ | `&#x5d;`
130
+ | `\&#x5d;`, `\__{rbrack}`
306
131
 
307
132
  | Rceil
308
- l|
309
- rceiling
310
- ~\|
311
- &#x2309;
312
- __{rceil}
313
- l|
314
- \rceil
315
- &#x2309;
316
- __{rceiling}
317
- __{~\|}
318
- l|
319
- &#x2309;
320
- l|
321
- &#x2309;
322
- l|
323
- &#x2309;
324
- \\rceil
325
- __{rceiling}
326
- __{~\|}
327
133
  | `&#x2309;`
134
+ | `rceiling`, `~\|`, `&#x2309;`, `__{rceil}`
135
+ | `\\rceil`, `\&#x2309;`, `\__{rceiling}`, `\__{~\|}`
136
+ | `&#x2309;`
137
+ | `&#x2309;`
138
+ | `\&#x2309;`, `\rceil`, `\__{rceiling}`, `\__{~\|}`
328
139
 
329
140
  | Rcurly
330
- l|
331
- }
332
- l|
333
- \}
334
- l|
335
- }
336
- l|
337
- }
338
- l|
339
- }
340
141
  | `}`
142
+ | `}`
143
+ | `\\}`
144
+ | `}`
145
+ | `}`
146
+ | `\}`
341
147
 
342
148
  | Rfloor
343
- l|
344
- rfloor
345
- __\|
346
- &#x230b;
347
- l|
348
- \rfloor
349
- &#x230b;
350
- __{__\|}
351
- l|
352
- &#x230b;
353
- l|
354
- &#x230b;
355
- l|
356
- &#x230b;
357
- \\rfloor
358
- __{__\|}
359
149
  | `&#x230b;`
150
+ | `rfloor`, `__\|`, `&#x230b;`
151
+ | `\\rfloor`, `\&#x230b;`, `\__{__\|}`
152
+ | `&#x230b;`
153
+ | `&#x230b;`
154
+ | `\&#x230b;`, `\rfloor`, `\__{__\|}`
360
155
 
361
156
  | Rround
362
- l|
363
- )
364
- l|
365
- )
366
- l|
367
- )
368
- l|
369
- )
370
- l|
371
- )
372
157
  | `)`
158
+ | `)`
159
+ | `\)`
160
+ | `)`
161
+ | `)`
162
+ | `\)`
373
163
 
374
164
  | Rsquare
375
- l|
376
- ]
377
- l|
378
- ]
379
- l|
380
- ]
381
- l|
382
- ]
383
- l|
384
- ]
385
165
  | `]`
166
+ | `]`
167
+ | `\]`
168
+ | `]`
169
+ | `]`
170
+ | `\]`
386
171
 
387
172
  | UpcaseLangle
388
- l|
389
- &#x27ea;
390
- __{Langle}
391
- l|
392
- &#x27ea;
393
- __{Langle}
394
- l|
395
- &#x27ea;
396
- l|
397
- &#x27ea;
398
- l|
399
- &#x27ea;
400
- \\Langle
401
173
  | `&#x27ea;`
174
+ | `&#x27ea;`, `__{Langle}`
175
+ | `\&#x27ea;`, `\__{Langle}`
176
+ | `&#x27ea;`
177
+ | `&#x27ea;`
178
+ | `\&#x27ea;`, `\Langle`
402
179
 
403
180
  | UpcaseRangle
404
- l|
405
- &#x27eb;
406
- __{Langle}
407
- l|
408
- &#x27eb;
409
- __{Langle}
410
- l|
411
- &#x27eb;
412
- l|
413
- &#x27eb;
414
- l|
415
- &#x27eb;
416
- \\Langle
417
181
  | `&#x27eb;`
182
+ | `&#x27eb;`, `__{Langle}`
183
+ | `\&#x27eb;`, `\__{Langle}`
184
+ | `&#x27eb;`
185
+ | `&#x27eb;`
186
+ | `\&#x27eb;`, `\Langle`
418
187
 
419
188
  | Vert
420
- l|
421
- \|
422
- &#x7c;
423
- __{vert}
424
- l|
425
- \vert
426
- \|
427
- &#x7c;
428
- l|
429
- &#x7c;
430
- \|
431
- l|
432
- &#x7c;
433
- \|
434
- l|
435
- \vert
436
- &#x7c;
437
- \|
438
- __{\|}
439
189
  | `&#x7c;`
190
+ | `\|`, `&#x7c;`, `__{vert}`
191
+ | `\\vert`, `\\|`, `\&#x7c;`
192
+ | `&#x7c;`, `\|`
193
+ | `&#x7c;`, `\|`
194
+ | `\\vert`, `\&#x7c;`, `\\|`, `\__{\|}`
440
195
 
441
196
  |===