asciimath 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +16 -0
- data/.travis.yml +16 -0
- data/CHANGELOG.adoc +12 -1
- data/README.adoc +39 -0
- data/asciimath.gemspec +1 -3
- data/dump_symbol_table.rb +46 -0
- data/lib/asciimath/latex.rb +33 -19
- data/lib/asciimath/markup.rb +2 -1
- data/lib/asciimath/parser.rb +13 -12
- data/lib/asciimath/version.rb +1 -1
- data/spec/ast.rb +1 -1
- data/spec/customisation_spec.rb +28 -0
- data/spec/parser_spec.rb +8 -1
- metadata +9 -4
- data/Gemfile.lock +0 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4492ccf2978a02b79bf6d5a70a23871fd33db6893e4a90b1b159db3b4d7b8b3
|
4
|
+
data.tar.gz: 43fbc1d2bba388ca359e0e908e0118b22189479cc05bf4a9882cb6459b4c6488
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 60c01de3ce18dd8eec2ff1a1fa559da2e0de840e08b59686ab3d1ff913a02f2656f2d8ceee1106657ae99bf9de2fdb2f80eeef1f71cc604845541d9d503f7bed
|
7
|
+
data.tar.gz: 62e0c29f76f709c53b040260dee1e36dce9af4c8737822297ea9d1908b2c72ade763d236c36266c411ce8f7330fbf397d4f0877ac2d5fc80d9064c40920bcbee
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
language: ruby
|
2
|
+
cache:
|
3
|
+
apt: true
|
4
|
+
directories:
|
5
|
+
- vendor/bundle
|
6
|
+
- $HOME/.cache/pip
|
7
|
+
rvm:
|
8
|
+
- 2.3
|
9
|
+
- 2.4
|
10
|
+
- 2.5
|
11
|
+
- jruby
|
12
|
+
- truffleruby
|
13
|
+
before_install:
|
14
|
+
- type bundle || gem install bundler --version '~> 1.0'
|
15
|
+
install:
|
16
|
+
- bundle install --path vendor/bundle --jobs=3 --retry=3
|
data/CHANGELOG.adoc
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
= Asciimath Changelog
|
2
2
|
|
3
|
+
== 2.0.1
|
4
|
+
|
5
|
+
Enhancements::
|
6
|
+
|
7
|
+
* Issue #40: add `ker` as standard symbol (@GarkGarcia)
|
8
|
+
* Issue #46: allow customisation of the parsing and rendering symbol tables (@GarkGarcia)
|
9
|
+
|
10
|
+
Bug fixes::
|
11
|
+
|
12
|
+
* Issue #48: fix parsing of single column matrices (@ronaldtse)
|
13
|
+
|
3
14
|
== 2.0.0
|
4
15
|
|
5
16
|
Enhancements::
|
@@ -72,4 +83,4 @@ Enhancements::
|
|
72
83
|
|
73
84
|
Initial release::
|
74
85
|
|
75
|
-
* An AsciiMath parser and MathML converter written in Ruby
|
86
|
+
* An AsciiMath parser and MathML converter written in Ruby
|
data/README.adoc
CHANGED
@@ -87,6 +87,45 @@ asciimath latex "an asciimath string"
|
|
87
87
|
|
88
88
|
This command will print out the generated code on stdout.
|
89
89
|
|
90
|
+
## Extentions and Customization
|
91
|
+
|
92
|
+
The parser can be extended by passing a custum tokenization table:
|
93
|
+
|
94
|
+
[source, ruby]
|
95
|
+
----
|
96
|
+
my_tokens_table = AsciiMath::SymbolTableBuilder.new
|
97
|
+
AsciiMath::Parser.add_default_parser_symbols(my_tokens_table)
|
98
|
+
my_tokens_table.add('mysymbol', :mysymbol, :symbol)
|
99
|
+
|
100
|
+
AsciiMath::parse("a + mysymbol + b", my_tokens_table.build)
|
101
|
+
----
|
102
|
+
|
103
|
+
Furthermore, the behaviour of the tokenizer be customized by altering the value
|
104
|
+
associated with a token in `AsciiMath::Tokenizer::DEFAULT_PARSE_SYMBOL_TABLE`:
|
105
|
+
|
106
|
+
[source, ruby]
|
107
|
+
----
|
108
|
+
my_tokens_table = AsciiMath::SymbolTableBuilder.new
|
109
|
+
AsciiMath::Parser.add_default_parser_symbols(my_tokens_table)
|
110
|
+
my_tokens_table.add('alpha', :beta, :symbol)
|
111
|
+
|
112
|
+
# Now "alpha + beta" is equivalent to "beta + beta"
|
113
|
+
AsciiMath::parse("alpha + beta", my_tokens_table.build)
|
114
|
+
----
|
115
|
+
|
116
|
+
The same behaviour applies to each individual render (`MathMLBuilder`,
|
117
|
+
`HTMLBuilder` and `LatexBuilder`). By adding entries to a rendere's rendering
|
118
|
+
table (or modifying exisisting entries), users can customize it's output:
|
119
|
+
|
120
|
+
[source, ruby]
|
121
|
+
----
|
122
|
+
my_rendering_table = AsciiMath::SymbolTableBuilder.new
|
123
|
+
AsciiMath::MarkupBuilder.add_default_display_symbols(my_rendering_table)
|
124
|
+
my_rendering_table.add('alpha', '\u03b2', :identifier)
|
125
|
+
|
126
|
+
# Now "alpha + beta" is equivalent to "beta + beta"
|
127
|
+
AsciiMath::parse("alpha + beta").to_mathml(my_rendering_table.build)
|
128
|
+
----
|
90
129
|
|
91
130
|
## Notes on the HTML Output
|
92
131
|
|
data/asciimath.gemspec
CHANGED
@@ -3,7 +3,6 @@ lib = File.expand_path('../lib', __FILE__)
|
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
4
|
|
5
5
|
require 'asciimath/version'
|
6
|
-
require 'rake/file_list'
|
7
6
|
|
8
7
|
Gem::Specification.new do |spec|
|
9
8
|
spec.name = "asciimath"
|
@@ -15,8 +14,7 @@ Gem::Specification.new do |spec|
|
|
15
14
|
spec.homepage = ""
|
16
15
|
spec.license = "MIT"
|
17
16
|
|
18
|
-
spec.files =
|
19
|
-
.exclude('dump_symbol_table.rb')
|
17
|
+
spec.files = `git ls-files -z`.split("\x0")
|
20
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
21
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
22
20
|
spec.require_paths = ["lib"]
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require_relative 'lib/asciimath'
|
2
|
+
|
3
|
+
def escape_adoc(adoc)
|
4
|
+
case adoc
|
5
|
+
when nil
|
6
|
+
''
|
7
|
+
when '+'
|
8
|
+
adoc
|
9
|
+
else
|
10
|
+
"++#{adoc.gsub('|', '\\|')}++"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
puts "|==="
|
15
|
+
puts '|AsciiMath |Symbol |MathML Value |LaTeX Value'
|
16
|
+
puts
|
17
|
+
|
18
|
+
AsciiMath::Parser::DEFAULT_PARSER_SYMBOL_TABLE.each_pair do |asciimath, value|
|
19
|
+
sym = value[:value]
|
20
|
+
unless sym.is_a?(Symbol)
|
21
|
+
next
|
22
|
+
end
|
23
|
+
|
24
|
+
mathml = AsciiMath::MathMLBuilder::DEFAULT_DISPLAY_SYMBOL_TABLE[sym]
|
25
|
+
|
26
|
+
if mathml
|
27
|
+
val = mathml[:value]
|
28
|
+
else
|
29
|
+
val = "Missing!!!!!"
|
30
|
+
end
|
31
|
+
|
32
|
+
latex = AsciiMath::LatexBuilder::SYMBOLS[sym] || "\\#{sym.to_s}"
|
33
|
+
|
34
|
+
codepoint = ""
|
35
|
+
if val.is_a?(String)
|
36
|
+
codepoint = val.codepoints.map do |cp|
|
37
|
+
cpstr = sprintf('U+%04X', cp)
|
38
|
+
"https://codepoints.net/#{cpstr}[#{cpstr}]"
|
39
|
+
end.join(' ')
|
40
|
+
end
|
41
|
+
|
42
|
+
puts "|#{escape_adoc(asciimath)} |:#{sym.to_s} |#{escape_adoc(val.to_s)} (#{codepoint}) |#{escape_adoc(latex)}"
|
43
|
+
end
|
44
|
+
|
45
|
+
puts "|==="
|
46
|
+
puts
|
data/lib/asciimath/latex.rb
CHANGED
@@ -2,8 +2,11 @@ require_relative 'ast'
|
|
2
2
|
|
3
3
|
module AsciiMath
|
4
4
|
class LatexBuilder
|
5
|
-
|
5
|
+
attr_reader :symbol_table
|
6
|
+
|
7
|
+
def initialize(symbol_table = nil)
|
6
8
|
@latex = ''
|
9
|
+
@symbol_table = symbol_table.nil? ? DEFAULT_DISPLAY_SYMBOL_TABLE : symbol_table
|
7
10
|
end
|
8
11
|
|
9
12
|
def to_s
|
@@ -14,12 +17,8 @@ module AsciiMath
|
|
14
17
|
append(expression)
|
15
18
|
self
|
16
19
|
end
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
SPECIAL_CHARACTERS = [?&, ?%, ?$, ?#, ?_, ?{, ?}, ?~, ?^, ?[, ?]].map(&:ord)
|
21
|
-
|
22
|
-
SYMBOLS = {
|
20
|
+
|
21
|
+
DEFAULT_DISPLAY_SYMBOL_TABLE = {
|
23
22
|
:plus => ?+,
|
24
23
|
:minus => ?-,
|
25
24
|
:ast => ?*,
|
@@ -97,7 +96,11 @@ module AsciiMath
|
|
97
96
|
:bold_sans_serif => "\\mathsf",
|
98
97
|
:sans_serif_italic => "\\mathsf",
|
99
98
|
:sans_serif_bold_italic => "\\mathsf",
|
100
|
-
}
|
99
|
+
}.freeze
|
100
|
+
|
101
|
+
private
|
102
|
+
|
103
|
+
SPECIAL_CHARACTERS = [?&, ?%, ?$, ?#, ?_, ?{, ?}, ?~, ?^, ?[, ?]].map(&:ord)
|
101
104
|
|
102
105
|
COLOURS = {
|
103
106
|
[0xFF, 0xFF, 0xFF] => "white",
|
@@ -138,7 +141,7 @@ module AsciiMath
|
|
138
141
|
end
|
139
142
|
|
140
143
|
when AsciiMath::AST::Symbol
|
141
|
-
@latex <<
|
144
|
+
@latex << resolve_symbol(expression.value)
|
142
145
|
|
143
146
|
when AsciiMath::AST::Identifier
|
144
147
|
append_escaped(expression.value)
|
@@ -229,7 +232,7 @@ module AsciiMath
|
|
229
232
|
end
|
230
233
|
|
231
234
|
else
|
232
|
-
@latex <<
|
235
|
+
@latex << resolve_symbol(op)
|
233
236
|
|
234
237
|
curly do
|
235
238
|
append(expression.operand1)
|
@@ -259,7 +262,7 @@ module AsciiMath
|
|
259
262
|
end
|
260
263
|
|
261
264
|
def macro(macro, *args)
|
262
|
-
@latex <<
|
265
|
+
@latex << resolve_symbol(macro)
|
263
266
|
|
264
267
|
if args.length != 0
|
265
268
|
@latex << "["
|
@@ -284,9 +287,9 @@ module AsciiMath
|
|
284
287
|
|
285
288
|
if block_given?
|
286
289
|
if l || r
|
287
|
-
@latex << "\\left " <<
|
290
|
+
@latex << "\\left " << resolve_symbol(l) << " "
|
288
291
|
yield self
|
289
|
-
@latex << " \\right " <<
|
292
|
+
@latex << " \\right " << resolve_symbol(r)
|
290
293
|
else
|
291
294
|
yield self
|
292
295
|
end
|
@@ -294,12 +297,12 @@ module AsciiMath
|
|
294
297
|
needs_left_right = !is_small(content)
|
295
298
|
|
296
299
|
@latex << "\\left " if needs_left_right
|
297
|
-
@latex <<
|
300
|
+
@latex << resolve_symbol(l) << " " if l or needs_left_right
|
298
301
|
|
299
302
|
append(content)
|
300
303
|
|
301
304
|
@latex << " \\right" if needs_left_right
|
302
|
-
@latex << " " <<
|
305
|
+
@latex << " " << resolve_symbol(r) if r or needs_left_right
|
303
306
|
end
|
304
307
|
end
|
305
308
|
|
@@ -333,8 +336,19 @@ module AsciiMath
|
|
333
336
|
end
|
334
337
|
end
|
335
338
|
|
336
|
-
def
|
337
|
-
|
339
|
+
def resolve_symbol(s)
|
340
|
+
symbol = @symbol_table[s]
|
341
|
+
|
342
|
+
case symbol
|
343
|
+
when String
|
344
|
+
return symbol
|
345
|
+
when Hash
|
346
|
+
return symbol[:value]
|
347
|
+
when nil
|
348
|
+
return "\\#{s.to_s}"
|
349
|
+
else
|
350
|
+
raise "Invalid entry in symbol table"
|
351
|
+
end
|
338
352
|
end
|
339
353
|
|
340
354
|
def is_small(e)
|
@@ -379,8 +393,8 @@ module AsciiMath
|
|
379
393
|
end
|
380
394
|
|
381
395
|
class Expression
|
382
|
-
def to_latex
|
383
|
-
LatexBuilder.new().append_expression(ast).to_s
|
396
|
+
def to_latex(symbol_table = nil)
|
397
|
+
LatexBuilder.new(symbol_table).append_expression(ast).to_s
|
384
398
|
end
|
385
399
|
end
|
386
400
|
end
|
data/lib/asciimath/markup.rb
CHANGED
@@ -163,6 +163,7 @@ module AsciiMath
|
|
163
163
|
b.add(:Ln, 'Ln', :identifier)
|
164
164
|
b.add(:det, 'det', :identifier)
|
165
165
|
b.add(:dim, 'dim', :identifier)
|
166
|
+
b.add(:ker, 'ker', :identifier)
|
166
167
|
b.add(:mod, 'mod', :identifier)
|
167
168
|
b.add(:gcd, 'gcd', :identifier)
|
168
169
|
b.add(:lcm, 'lcm', :identifier)
|
@@ -475,4 +476,4 @@ module AsciiMath
|
|
475
476
|
end
|
476
477
|
end
|
477
478
|
end
|
478
|
-
end
|
479
|
+
end
|
data/lib/asciimath/parser.rb
CHANGED
@@ -385,6 +385,7 @@ module AsciiMath
|
|
385
385
|
b.add('Ln', :Ln, :symbol)
|
386
386
|
b.add('det', :det, :symbol)
|
387
387
|
b.add('dim', :dim, :symbol)
|
388
|
+
b.add('ker', :ker, :symbol)
|
388
389
|
b.add('mod', :mod, :symbol)
|
389
390
|
b.add('gcd', :gcd, :symbol)
|
390
391
|
b.add('lcm', :lcm, :symbol)
|
@@ -663,21 +664,21 @@ module AsciiMath
|
|
663
664
|
|
664
665
|
row_content = row.expression
|
665
666
|
unless row_content.is_a?(::AsciiMath::AST::Sequence)
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
667
|
+
[expression(row_content)]
|
668
|
+
else
|
669
|
+
row_content.each do |item|
|
670
|
+
if is_matrix_separator(item)
|
671
|
+
chunks << current_chunk
|
672
|
+
current_chunk = []
|
673
|
+
else
|
674
|
+
current_chunk << item
|
675
|
+
end
|
675
676
|
end
|
676
|
-
end
|
677
677
|
|
678
|
-
|
678
|
+
chunks << current_chunk
|
679
679
|
|
680
|
-
|
680
|
+
chunks.map { |c| c.length == 1 ? c[0] : expression(*c) }.to_a
|
681
|
+
end
|
681
682
|
end
|
682
683
|
|
683
684
|
return node unless rows.all? { |row| row.length == rows[0].length }
|
data/lib/asciimath/version.rb
CHANGED
data/spec/ast.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
require 'rspec'
|
3
|
+
require 'asciimath'
|
4
|
+
require_relative 'ast'
|
5
|
+
|
6
|
+
RSpec.configure do |c|
|
7
|
+
c.include ::AsciiMath::ASTHelper
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'AsciiMath::Parser', :variant => :ast do
|
11
|
+
it "should support custom symbols" do
|
12
|
+
my_tokens_table = AsciiMath::SymbolTableBuilder.new
|
13
|
+
AsciiMath::Parser.add_default_parser_symbols(my_tokens_table)
|
14
|
+
my_tokens_table.add('mysymbol', :mysymbol, :symbol)
|
15
|
+
|
16
|
+
parsed = AsciiMath::parse("a + mysymbol + b", my_tokens_table.build)
|
17
|
+
expect(parsed.ast).to eq(seq(identifier('a'), symbol('+'), ::AsciiMath::AST::Symbol.new(:mysymbol, 'mysymbol'), symbol('+'), identifier('b')))
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should support replacing standard symbols" do
|
21
|
+
my_tokens_table = AsciiMath::SymbolTableBuilder.new
|
22
|
+
AsciiMath::Parser.add_default_parser_symbols(my_tokens_table)
|
23
|
+
my_tokens_table.add('+', :foo, :symbol)
|
24
|
+
|
25
|
+
parsed = AsciiMath::parse("a + b", my_tokens_table.build)
|
26
|
+
expect(parsed.ast).to eq(seq(identifier('a'), ::AsciiMath::AST::Symbol.new(:foo, '+'), identifier('b')))
|
27
|
+
end
|
28
|
+
end
|
data/spec/parser_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#encoding: utf-8
|
2
2
|
require 'rspec'
|
3
3
|
require 'asciimath'
|
4
|
-
|
4
|
+
require_relative 'ast'
|
5
5
|
require 'nokogiri'
|
6
6
|
|
7
7
|
|
@@ -319,6 +319,13 @@ RSpec.shared_examples 'AsciiMath Examples' do
|
|
319
319
|
:latex => '\\sum_{n = 0}^\\infty a_n',
|
320
320
|
))
|
321
321
|
|
322
|
+
example('((1),(42))', &should_generate(
|
323
|
+
:ast => matrix([%w[1], %w[42]]),
|
324
|
+
:mathml => '<math><mrow><mo>(</mo><mtable><mtr><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>42</mn></mtd></mtr></mtable><mo>)</mo></mrow></math>',
|
325
|
+
:html => '<span class="math-inline"><span class="math-row"><span class="math-brace" style="font-size: 200%;">(</span><span class="math-matrix" style="grid-template-columns:repeat(1,1fr);grid-template-rows:repeat(2,1fr);"><span class="math-row"><span class="math-number">1</span></span><span class="math-row"><span class="math-number">42</span></span></span><span class="math-brace" style="font-size: 200%;">)</span></span></span>',
|
326
|
+
:latex => '\\left ( \\begin{matrix} 1 \\\\ 42 \\end{matrix} \\right )',
|
327
|
+
))
|
328
|
+
|
322
329
|
example('((1,2,3),(4,5,6),(7,8,9))', &should_generate(
|
323
330
|
:ast => matrix([%w[1 2 3], %w[4 5 6], %w[7 8 9]]),
|
324
331
|
:mathml => '<math><mrow><mo>(</mo><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>4</mn></mtd><mtd><mn>5</mn></mtd><mtd><mn>6</mn></mtd></mtr><mtr><mtd><mn>7</mn></mtd><mtd><mn>8</mn></mtd><mtd><mn>9</mn></mtd></mtr></mtable><mo>)</mo></mrow></math>',
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asciimath
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pepijn Van Eeckhoudt
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-06-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -76,15 +76,17 @@ executables:
|
|
76
76
|
extensions: []
|
77
77
|
extra_rdoc_files: []
|
78
78
|
files:
|
79
|
+
- ".gitignore"
|
80
|
+
- ".travis.yml"
|
79
81
|
- AST.adoc
|
80
82
|
- CHANGELOG.adoc
|
81
83
|
- Gemfile
|
82
|
-
- Gemfile.lock
|
83
84
|
- LICENSE.txt
|
84
85
|
- README.adoc
|
85
86
|
- Rakefile
|
86
87
|
- asciimath.gemspec
|
87
88
|
- bin/asciimath
|
89
|
+
- dump_symbol_table.rb
|
88
90
|
- lib/asciimath.rb
|
89
91
|
- lib/asciimath/ast.rb
|
90
92
|
- lib/asciimath/cli.rb
|
@@ -97,6 +99,7 @@ files:
|
|
97
99
|
- lib/asciimath/symbol_table.rb
|
98
100
|
- lib/asciimath/version.rb
|
99
101
|
- spec/ast.rb
|
102
|
+
- spec/customisation_spec.rb
|
100
103
|
- spec/parser_spec.rb
|
101
104
|
- spec/schema/mathml2/common/common-attribs.xsd
|
102
105
|
- spec/schema/mathml2/common/math.xsd
|
@@ -153,12 +156,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
156
|
- !ruby/object:Gem::Version
|
154
157
|
version: '0'
|
155
158
|
requirements: []
|
156
|
-
|
159
|
+
rubyforge_project:
|
160
|
+
rubygems_version: 2.7.6
|
157
161
|
signing_key:
|
158
162
|
specification_version: 4
|
159
163
|
summary: AsciiMath parser and converter
|
160
164
|
test_files:
|
161
165
|
- spec/ast.rb
|
166
|
+
- spec/customisation_spec.rb
|
162
167
|
- spec/parser_spec.rb
|
163
168
|
- spec/schema/mathml2/common/common-attribs.xsd
|
164
169
|
- spec/schema/mathml2/common/math.xsd
|
data/Gemfile.lock
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
asciimath (2.0.0.next1)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
diff-lcs (1.3)
|
10
|
-
mini_portile2 (2.4.0)
|
11
|
-
nokogiri (1.10.9)
|
12
|
-
mini_portile2 (~> 2.4.0)
|
13
|
-
rake (13.0.1)
|
14
|
-
rspec (3.9.0)
|
15
|
-
rspec-core (~> 3.9.0)
|
16
|
-
rspec-expectations (~> 3.9.0)
|
17
|
-
rspec-mocks (~> 3.9.0)
|
18
|
-
rspec-core (3.9.2)
|
19
|
-
rspec-support (~> 3.9.3)
|
20
|
-
rspec-expectations (3.9.1)
|
21
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
22
|
-
rspec-support (~> 3.9.0)
|
23
|
-
rspec-mocks (3.9.1)
|
24
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
25
|
-
rspec-support (~> 3.9.0)
|
26
|
-
rspec-support (3.9.3)
|
27
|
-
|
28
|
-
PLATFORMS
|
29
|
-
ruby
|
30
|
-
|
31
|
-
DEPENDENCIES
|
32
|
-
asciimath!
|
33
|
-
bundler (> 0)
|
34
|
-
nokogiri (~> 1.10.9)
|
35
|
-
rake (~> 13.0.0)
|
36
|
-
rspec (~> 3.9.0)
|
37
|
-
|
38
|
-
BUNDLED WITH
|
39
|
-
1.17.2
|