mathematical 1.2.0 → 1.2.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/README.md +3 -3
- data/Rakefile +4 -0
- data/ext/mathematical/extconf.rb +9 -15
- data/ext/mathematical/mtex2MML/build/mtex2MML.h +73 -0
- data/ext/mathematical/mtex2MML/{src/deps → deps}/uthash/utarray.h +0 -0
- data/ext/mathematical/mtex2MML/{src/deps → deps}/uthash/uthash.h +0 -0
- data/ext/mathematical/mtex2MML/{src/deps → deps}/uthash/utlist.h +0 -0
- data/ext/mathematical/mtex2MML/{src/deps → deps}/uthash/utstring.h +0 -0
- data/ext/mathematical/mtex2MML/src/color_definitions.c +1 -1
- data/ext/mathematical/mtex2MML/src/lex.yy.c +1100 -1098
- data/ext/mathematical/mtex2MML/src/main.c +137 -0
- data/ext/mathematical/mtex2MML/src/mtex2MML.h +11 -1
- data/ext/mathematical/mtex2MML/src/parse_extras.c +2 -2
- data/ext/mathematical/mtex2MML/src/parse_extras.h +36 -36
- data/ext/mathematical/mtex2MML/src/string_extras.c +0 -6
- data/ext/mathematical/mtex2MML/src/string_extras.h +1 -1
- data/ext/mathematical/mtex2MML/src/y.tab.c +3904 -3583
- data/ext/mathematical/mtex2MML/tests/array.c +127 -0
- data/ext/mathematical/mtex2MML/tests/basic.c +85 -0
- data/ext/mathematical/mtex2MML/tests/clar.c +642 -0
- data/ext/mathematical/mtex2MML/tests/clar.h +163 -0
- data/ext/mathematical/mtex2MML/tests/clar/fixtures.h +38 -0
- data/ext/mathematical/mtex2MML/tests/clar/fs.h +333 -0
- data/ext/mathematical/mtex2MML/tests/clar/print.h +66 -0
- data/ext/mathematical/mtex2MML/tests/clar/sandbox.h +139 -0
- data/ext/mathematical/mtex2MML/tests/clar_test.h +20 -0
- data/ext/mathematical/mtex2MML/tests/cornercases.c +45 -0
- data/ext/mathematical/mtex2MML/tests/deps/file2str/file2str.c +64 -0
- data/ext/mathematical/mtex2MML/tests/deps/file2str/file2str.h +12 -0
- data/ext/mathematical/mtex2MML/tests/deps/trim/trim.c +24 -0
- data/ext/mathematical/mtex2MML/tests/deps/trim/trim.h +7 -0
- data/ext/mathematical/mtex2MML/tests/env.c +333 -0
- data/ext/mathematical/mtex2MML/tests/functions.c +45 -0
- data/ext/mathematical/mtex2MML/tests/helpers.c +27 -0
- data/ext/mathematical/mtex2MML/tests/helpers.h +8 -0
- data/ext/mathematical/mtex2MML/tests/main.c +35 -0
- data/ext/mathematical/mtex2MML/tests/maliciousness.c +82 -0
- data/ext/mathematical/mtex2MML/tests/mathjax.c +2030 -0
- data/ext/mathematical/mtex2MML/tests/numbered_equations.c +47 -0
- data/lib/mathematical.rb +3 -48
- data/lib/mathematical/validator.rb +52 -0
- data/lib/mathematical/version.rb +1 -1
- data/test/mathematical/basic_test.rb +7 -0
- data/test/mathematical/maliciousness_test.rb +26 -1
- data/test/mathematical/mathjax_test.rb +2 -2
- metadata +31 -7
- data/ext/mathematical/mtex2MML/ext/extconf.rb +0 -4
@@ -0,0 +1,47 @@
|
|
1
|
+
#include "clar.h"
|
2
|
+
#include "clar_test.h"
|
3
|
+
#include <stdio.h>
|
4
|
+
#include <string.h>
|
5
|
+
|
6
|
+
static char *fixture_tex;
|
7
|
+
static char *fixture_mml;
|
8
|
+
static char *result;
|
9
|
+
|
10
|
+
void test_numbered_equations__initialize(void)
|
11
|
+
{
|
12
|
+
global_test_counter++;
|
13
|
+
}
|
14
|
+
|
15
|
+
void test_numbered_equations__cleanup(void)
|
16
|
+
{
|
17
|
+
if (fixture_tex != NULL) {
|
18
|
+
free(fixture_tex);
|
19
|
+
}
|
20
|
+
|
21
|
+
if (fixture_mml != NULL) {
|
22
|
+
free(fixture_mml);
|
23
|
+
}
|
24
|
+
|
25
|
+
if (result != NULL) {
|
26
|
+
free(result);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
void test_numbered_equations__single_equation(void)
|
31
|
+
{
|
32
|
+
fixture_tex = read_fixture_tex("numbered_equations/single_equation.txt");
|
33
|
+
fixture_mml = read_fixture_mml("numbered_equations/single_equation.html");
|
34
|
+
result = mtex2MML_global_parse(fixture_tex, strlen(fixture_tex), 1);
|
35
|
+
|
36
|
+
cl_assert_equal_s(fixture_mml, result);
|
37
|
+
}
|
38
|
+
|
39
|
+
void test_numbered_equations__multiple_equations(void)
|
40
|
+
{
|
41
|
+
fixture_tex = read_fixture_tex("numbered_equations/multiple_equations.txt");
|
42
|
+
fixture_mml = read_fixture_mml("numbered_equations/multiple_equations.html");
|
43
|
+
mtex2MML_filter(fixture_tex, strlen(fixture_tex));
|
44
|
+
result = mtex2MML_output();
|
45
|
+
|
46
|
+
cl_assert_equal_s(fixture_mml, result);
|
47
|
+
}
|
data/lib/mathematical.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
require 'mathematical/mathematical'
|
2
2
|
|
3
3
|
require 'mathematical/corrections'
|
4
|
+
require 'mathematical/validator'
|
4
5
|
require 'mathematical/version'
|
5
6
|
|
6
7
|
require 'base64'
|
7
8
|
|
8
9
|
class Mathematical
|
9
10
|
include Corrections
|
10
|
-
|
11
|
-
FORMAT_TYPES = [:svg, :png, :mathml]
|
11
|
+
include Validator
|
12
12
|
|
13
13
|
DEFAULT_OPTS = {
|
14
14
|
:ppi => 72.0,
|
@@ -23,7 +23,7 @@ class Mathematical
|
|
23
23
|
def initialize(opts = {})
|
24
24
|
@config = DEFAULT_OPTS.merge(opts)
|
25
25
|
|
26
|
-
validate_config
|
26
|
+
validate_config(@config)
|
27
27
|
|
28
28
|
@config[:formatInt] = FORMAT_TYPES.index(@config[:format])
|
29
29
|
|
@@ -43,53 +43,8 @@ class Mathematical
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
-
def validate_content(maths)
|
47
|
-
if !maths.is_a?(String) && !maths.is_a?(Array)
|
48
|
-
fail(TypeError, 'input must be a string or an array!')
|
49
|
-
end
|
50
|
-
|
51
|
-
if maths.is_a? String
|
52
|
-
validate_string(maths)
|
53
|
-
else
|
54
|
-
validate_array(maths)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
46
|
private
|
59
47
|
|
60
|
-
def validate_config
|
61
|
-
fail(TypeError, 'maxsize must be an integer!') unless @config[:maxsize].is_a? Fixnum
|
62
|
-
fail(TypeError, 'maxsize cannot be less than 0!') if @config[:maxsize] < 0
|
63
|
-
fail(TypeError, 'format must be a symbol!') unless @config[:format].is_a? Symbol
|
64
|
-
fail(TypeError, "format type must be one of the following formats: #{FORMAT_TYPES.join(', ')}") unless FORMAT_TYPES.include?(@config[:format])
|
65
|
-
end
|
66
|
-
|
67
|
-
def validate_string(maths)
|
68
|
-
maths = maths.strip
|
69
|
-
unless valid_math_string(maths)
|
70
|
-
fail(ArgumentError, 'input must be in tex format (`$...$` or `$$...$$`)!')
|
71
|
-
end
|
72
|
-
|
73
|
-
maths
|
74
|
-
end
|
75
|
-
|
76
|
-
def validate_array(maths)
|
77
|
-
unless maths.all? { |m| m.is_a?(String) }
|
78
|
-
fail(ArgumentError, 'every element in array must be a string in tex format (`$...$` or `$$...$$`)!')
|
79
|
-
end
|
80
|
-
|
81
|
-
maths = maths.map(&:strip)
|
82
|
-
unless maths.all? { |m| valid_math_string(m) }
|
83
|
-
fail(ArgumentError, 'every element in array must be a string in tex format (`$...$` or `$$...$$`)!')
|
84
|
-
end
|
85
|
-
|
86
|
-
maths
|
87
|
-
end
|
88
|
-
|
89
|
-
def valid_math_string(maths)
|
90
|
-
maths =~ /\A\${1,2}/
|
91
|
-
end
|
92
|
-
|
93
48
|
def format_data(result_hash)
|
94
49
|
# we passed in an array of math, and found an unprocessable element
|
95
50
|
return result_hash if result_hash[:exception]
|
@@ -0,0 +1,52 @@
|
|
1
|
+
class Mathematical
|
2
|
+
module Validator
|
3
|
+
# explanation can be found at http://git.io/vJRBj
|
4
|
+
DOLLAR_MATCHER = /\A(?<!\\)(?:((?<!\$)\${1,2}(?!\$))(.*?(\g<1>)?.*?)(?<!\\)(?(1)(?<!\$)\1(?!\$)))\z/xm
|
5
|
+
|
6
|
+
FORMAT_TYPES = [:svg, :png, :mathml].freeze
|
7
|
+
|
8
|
+
def validate_config(config)
|
9
|
+
fail(TypeError, 'maxsize must be an integer!') unless config[:maxsize].is_a? Fixnum
|
10
|
+
fail(TypeError, 'maxsize cannot be less than 0!') if config[:maxsize] < 0
|
11
|
+
fail(TypeError, 'format must be a symbol!') unless config[:format].is_a? Symbol
|
12
|
+
fail(TypeError, "format type must be one of the following formats: #{FORMAT_TYPES.join(', ')}") unless FORMAT_TYPES.include?(config[:format])
|
13
|
+
end
|
14
|
+
|
15
|
+
def validate_content(maths)
|
16
|
+
if !maths.is_a?(String) && !maths.is_a?(Array)
|
17
|
+
fail(TypeError, 'input must be a string or an array!')
|
18
|
+
end
|
19
|
+
|
20
|
+
if maths.is_a? String
|
21
|
+
validate_string(maths)
|
22
|
+
else
|
23
|
+
validate_array(maths)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def validate_string(maths)
|
28
|
+
maths = maths.strip
|
29
|
+
unless valid_math_string(maths)
|
30
|
+
fail(ArgumentError, 'input must be in tex format (`$...$` or `$$...$$`)!')
|
31
|
+
end
|
32
|
+
|
33
|
+
maths
|
34
|
+
end
|
35
|
+
|
36
|
+
def validate_array(maths)
|
37
|
+
maths.map do |m|
|
38
|
+
unless m.is_a?(String)
|
39
|
+
fail(ArgumentError, 'every element in array must be a string in tex format (`$...$` or `$$...$$`)!')
|
40
|
+
end
|
41
|
+
validate_string(m)
|
42
|
+
end
|
43
|
+
|
44
|
+
maths
|
45
|
+
end
|
46
|
+
|
47
|
+
def valid_math_string(maths)
|
48
|
+
maths =~ DOLLAR_MATCHER
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
data/lib/mathematical/version.rb
CHANGED
@@ -13,4 +13,11 @@ class Mathematical::BasicTest < MiniTest::Test
|
|
13
13
|
assert_equal 1, output.scan(/<svg/).size, 'should only contain one svg'
|
14
14
|
end
|
15
15
|
|
16
|
+
def test_handles_line_breaks
|
17
|
+
s = "$$x\ny$$"
|
18
|
+
render = Mathematical.new
|
19
|
+
output = render.render(s)[:data]
|
20
|
+
assert_equal 1, output.scan(/<svg/).size, 'should only contain one svg'
|
21
|
+
end
|
22
|
+
|
16
23
|
end
|
@@ -73,6 +73,26 @@ class Mathematical::MaliciousnessTest < MiniTest::Test
|
|
73
73
|
Mathematical.new.render('No dollars')
|
74
74
|
end
|
75
75
|
|
76
|
+
assert_raises ArgumentError do
|
77
|
+
Mathematical.new.render('$$x')
|
78
|
+
end
|
79
|
+
|
80
|
+
assert_raises ArgumentError do
|
81
|
+
Mathematical.new.render('x$$')
|
82
|
+
end
|
83
|
+
|
84
|
+
assert_raises ArgumentError do
|
85
|
+
Mathematical.new.render('$$x$')
|
86
|
+
end
|
87
|
+
|
88
|
+
assert_raises ArgumentError do
|
89
|
+
Mathematical.new.render('$x$$')
|
90
|
+
end
|
91
|
+
|
92
|
+
assert_raises ArgumentError do
|
93
|
+
Mathematical.new.render('blah blah $x$ blah')
|
94
|
+
end
|
95
|
+
|
76
96
|
assert_raises ArgumentError do
|
77
97
|
array = %w(foof poof)
|
78
98
|
Mathematical.new.render(array)
|
@@ -82,13 +102,18 @@ class Mathematical::MaliciousnessTest < MiniTest::Test
|
|
82
102
|
array = ['$foof$', nil, '$poof$']
|
83
103
|
Mathematical.new.render(array)
|
84
104
|
end
|
105
|
+
|
106
|
+
assert_raises ArgumentError do
|
107
|
+
array = ['$x$', 4]
|
108
|
+
Mathematical.new.render(array)
|
109
|
+
end
|
85
110
|
end
|
86
111
|
|
87
112
|
def test_it_returns_unmodified_string_for_max_parsing
|
88
113
|
render = Mathematical.new
|
89
114
|
output = nil
|
90
115
|
# Much like above, this fails in mtx2MML, but should do nothing here
|
91
|
-
text = '$\Huge \sqrt\sqrt\sqrt\sqrt\sqrt\sqrt\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}'
|
116
|
+
text = '$\Huge \sqrt\sqrt\sqrt\sqrt\sqrt\sqrt\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}$'
|
92
117
|
output = render.render(text)
|
93
118
|
assert_equal output[:data], text
|
94
119
|
assert_equal output[:exception].class, Mathematical::ParseError
|
@@ -5,11 +5,11 @@ class Mathematical::MathJaxTest < MiniTest::Test
|
|
5
5
|
|
6
6
|
render_svg = Mathematical.new
|
7
7
|
|
8
|
-
MATHJAX_TEST_TEST_DIR = File.join('ext', 'mathematical', 'mtex2MML', '
|
8
|
+
MATHJAX_TEST_TEST_DIR = File.join('ext', 'mathematical', 'mtex2MML', 'tests', 'fixtures', 'MathJax')
|
9
9
|
MATHJAX_TEST_TEX_DIR = File.join(MATHJAX_TEST_TEST_DIR, 'LaTeXToMathML-tex')
|
10
10
|
|
11
11
|
SKIPPED = []
|
12
|
-
Dir["#{MATHJAX_TEST_TEX_DIR}/**/*.
|
12
|
+
Dir["#{MATHJAX_TEST_TEX_DIR}/**/*.txt"].each do |tex|
|
13
13
|
define_method "test_#{tex}" do
|
14
14
|
tex_contents = File.read(tex)
|
15
15
|
data = render_svg.render(tex_contents)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mathematical
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Garen Torikian
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -338,13 +338,14 @@ files:
|
|
338
338
|
- ext/mathematical/lasem_overrides.h
|
339
339
|
- ext/mathematical/mathematical.c
|
340
340
|
- ext/mathematical/mathematical.h
|
341
|
-
- ext/mathematical/mtex2MML/
|
341
|
+
- ext/mathematical/mtex2MML/build/mtex2MML.h
|
342
|
+
- ext/mathematical/mtex2MML/deps/uthash/utarray.h
|
343
|
+
- ext/mathematical/mtex2MML/deps/uthash/uthash.h
|
344
|
+
- ext/mathematical/mtex2MML/deps/uthash/utlist.h
|
345
|
+
- ext/mathematical/mtex2MML/deps/uthash/utstring.h
|
342
346
|
- ext/mathematical/mtex2MML/src/color_definitions.c
|
343
|
-
- ext/mathematical/mtex2MML/src/deps/uthash/utarray.h
|
344
|
-
- ext/mathematical/mtex2MML/src/deps/uthash/uthash.h
|
345
|
-
- ext/mathematical/mtex2MML/src/deps/uthash/utlist.h
|
346
|
-
- ext/mathematical/mtex2MML/src/deps/uthash/utstring.h
|
347
347
|
- ext/mathematical/mtex2MML/src/lex.yy.c
|
348
|
+
- ext/mathematical/mtex2MML/src/main.c
|
348
349
|
- ext/mathematical/mtex2MML/src/mtex2MML.h
|
349
350
|
- ext/mathematical/mtex2MML/src/parse_extras.c
|
350
351
|
- ext/mathematical/mtex2MML/src/parse_extras.h
|
@@ -352,8 +353,31 @@ files:
|
|
352
353
|
- ext/mathematical/mtex2MML/src/string_extras.h
|
353
354
|
- ext/mathematical/mtex2MML/src/y.tab.c
|
354
355
|
- ext/mathematical/mtex2MML/src/y.tab.h
|
356
|
+
- ext/mathematical/mtex2MML/tests/array.c
|
357
|
+
- ext/mathematical/mtex2MML/tests/basic.c
|
358
|
+
- ext/mathematical/mtex2MML/tests/clar.c
|
359
|
+
- ext/mathematical/mtex2MML/tests/clar.h
|
360
|
+
- ext/mathematical/mtex2MML/tests/clar/fixtures.h
|
361
|
+
- ext/mathematical/mtex2MML/tests/clar/fs.h
|
362
|
+
- ext/mathematical/mtex2MML/tests/clar/print.h
|
363
|
+
- ext/mathematical/mtex2MML/tests/clar/sandbox.h
|
364
|
+
- ext/mathematical/mtex2MML/tests/clar_test.h
|
365
|
+
- ext/mathematical/mtex2MML/tests/cornercases.c
|
366
|
+
- ext/mathematical/mtex2MML/tests/deps/file2str/file2str.c
|
367
|
+
- ext/mathematical/mtex2MML/tests/deps/file2str/file2str.h
|
368
|
+
- ext/mathematical/mtex2MML/tests/deps/trim/trim.c
|
369
|
+
- ext/mathematical/mtex2MML/tests/deps/trim/trim.h
|
370
|
+
- ext/mathematical/mtex2MML/tests/env.c
|
371
|
+
- ext/mathematical/mtex2MML/tests/functions.c
|
372
|
+
- ext/mathematical/mtex2MML/tests/helpers.c
|
373
|
+
- ext/mathematical/mtex2MML/tests/helpers.h
|
374
|
+
- ext/mathematical/mtex2MML/tests/main.c
|
375
|
+
- ext/mathematical/mtex2MML/tests/maliciousness.c
|
376
|
+
- ext/mathematical/mtex2MML/tests/mathjax.c
|
377
|
+
- ext/mathematical/mtex2MML/tests/numbered_equations.c
|
355
378
|
- lib/mathematical.rb
|
356
379
|
- lib/mathematical/corrections.rb
|
380
|
+
- lib/mathematical/validator.rb
|
357
381
|
- lib/mathematical/version.rb
|
358
382
|
- mathematical.gemspec
|
359
383
|
- test/mathematical/basic_test.rb
|