antelope 0.3.2 → 0.4.0

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.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +25 -25
  3. data/.rspec +3 -3
  4. data/.travis.yml +10 -10
  5. data/.yardopts +7 -7
  6. data/CONTRIBUTING.md +50 -38
  7. data/GENERATORS.md +180 -124
  8. data/Gemfile +7 -7
  9. data/LICENSE.txt +22 -22
  10. data/README.md +240 -104
  11. data/Rakefile +2 -2
  12. data/TODO.md +58 -58
  13. data/antelope.gemspec +29 -28
  14. data/bin/antelope +7 -7
  15. data/examples/deterministic.ace +35 -35
  16. data/examples/example.ace +52 -51
  17. data/examples/example.ace.err +192 -192
  18. data/examples/example.ace.inf +432 -432
  19. data/examples/example.ate +70 -70
  20. data/examples/example.ate.err +192 -192
  21. data/examples/example.ate.inf +432 -432
  22. data/examples/liquidscript.ace +233 -233
  23. data/examples/simple.ace +22 -22
  24. data/lib/antelope/ace/compiler.rb +334 -334
  25. data/lib/antelope/ace/errors.rb +30 -30
  26. data/lib/antelope/ace/scanner/argument.rb +57 -57
  27. data/lib/antelope/ace/scanner/first.rb +89 -89
  28. data/lib/antelope/ace/scanner/second.rb +178 -178
  29. data/lib/antelope/ace/scanner/third.rb +27 -27
  30. data/lib/antelope/ace/scanner.rb +144 -144
  31. data/lib/antelope/ace.rb +47 -47
  32. data/lib/antelope/cli.rb +60 -60
  33. data/lib/antelope/errors.rb +25 -25
  34. data/lib/antelope/generation/constructor/first.rb +86 -86
  35. data/lib/antelope/generation/constructor/follow.rb +105 -105
  36. data/lib/antelope/generation/constructor/nullable.rb +64 -64
  37. data/lib/antelope/generation/constructor.rb +127 -127
  38. data/lib/antelope/generation/errors.rb +17 -17
  39. data/lib/antelope/generation/null.rb +13 -13
  40. data/lib/antelope/generation/recognizer/rule.rb +216 -216
  41. data/lib/antelope/generation/recognizer/state.rb +129 -129
  42. data/lib/antelope/generation/recognizer.rb +177 -177
  43. data/lib/antelope/generation/tableizer.rb +176 -176
  44. data/lib/antelope/generation.rb +15 -15
  45. data/lib/antelope/generator/base/coerce.rb +115 -0
  46. data/lib/antelope/generator/base/extra.rb +50 -0
  47. data/lib/antelope/generator/base.rb +134 -264
  48. data/lib/antelope/generator/c.rb +11 -11
  49. data/lib/antelope/generator/c_header.rb +105 -105
  50. data/lib/antelope/generator/c_source.rb +39 -39
  51. data/lib/antelope/generator/error.rb +34 -34
  52. data/lib/antelope/generator/group.rb +60 -57
  53. data/lib/antelope/generator/html.rb +51 -51
  54. data/lib/antelope/generator/info.rb +47 -47
  55. data/lib/antelope/generator/null.rb +18 -18
  56. data/lib/antelope/generator/output.rb +17 -17
  57. data/lib/antelope/generator/ruby.rb +112 -79
  58. data/lib/antelope/generator/templates/c_header.ant +36 -36
  59. data/lib/antelope/generator/templates/c_source.ant +202 -202
  60. data/lib/antelope/generator/templates/error.erb +40 -0
  61. data/lib/antelope/generator/templates/html/antelope.css +53 -1
  62. data/lib/antelope/generator/templates/html/antelope.html +82 -1
  63. data/lib/antelope/generator/templates/html/antelope.js +9 -1
  64. data/lib/antelope/generator/templates/html/css.ant +53 -53
  65. data/lib/antelope/generator/templates/html/html.ant +82 -82
  66. data/lib/antelope/generator/templates/html/js.ant +9 -9
  67. data/lib/antelope/generator/templates/info.erb +61 -0
  68. data/lib/antelope/generator/templates/{ruby.ant → ruby.erb} +171 -178
  69. data/lib/antelope/generator.rb +62 -66
  70. data/lib/antelope/grammar/generation.rb +76 -76
  71. data/lib/antelope/grammar/loading.rb +84 -84
  72. data/lib/antelope/grammar/precedence.rb +59 -59
  73. data/lib/antelope/grammar/precedences.rb +64 -64
  74. data/lib/antelope/grammar/production.rb +56 -56
  75. data/lib/antelope/grammar/productions.rb +154 -154
  76. data/lib/antelope/grammar/symbols.rb +64 -64
  77. data/lib/antelope/grammar/token/epsilon.rb +23 -23
  78. data/lib/antelope/grammar/token/error.rb +24 -24
  79. data/lib/antelope/grammar/token/nonterminal.rb +15 -15
  80. data/lib/antelope/grammar/token/terminal.rb +15 -15
  81. data/lib/antelope/grammar/token.rb +231 -231
  82. data/lib/antelope/grammar.rb +68 -68
  83. data/lib/antelope/version.rb +6 -6
  84. data/lib/antelope.rb +18 -19
  85. data/optimizations.txt +42 -42
  86. data/spec/antelope/ace/compiler_spec.rb +60 -60
  87. data/spec/antelope/ace/scanner_spec.rb +27 -27
  88. data/spec/antelope/generation/constructor_spec.rb +131 -131
  89. data/spec/fixtures/simple.ace +22 -22
  90. data/spec/spec_helper.rb +39 -39
  91. data/spec/support/benchmark_helper.rb +5 -5
  92. data/spec/support/grammar_helper.rb +14 -14
  93. data/subl/Ace (Ruby).JSON-tmLanguage +94 -94
  94. data/subl/Ace (Ruby).tmLanguage +153 -153
  95. metadata +22 -11
  96. data/lib/antelope/generator/templates/error.ant +0 -34
  97. data/lib/antelope/generator/templates/info.ant +0 -53
  98. data/lib/antelope/template/compiler.rb +0 -78
  99. data/lib/antelope/template/errors.rb +0 -9
  100. data/lib/antelope/template/scanner.rb +0 -109
  101. data/lib/antelope/template.rb +0 -64
  102. data/spec/antelope/template_spec.rb +0 -50
data/optimizations.txt CHANGED
@@ -1,42 +1,42 @@
1
- lib/antelope/ace/grammar/precedences.rb
2
- Array#select.first is slower than Array#detect. Occured at lines: 31, 35.
3
- Using each_with_index is slower than while loop. Occured at lines: 51.
4
-
5
- lib/antelope/ace/grammar/productions.rb
6
- Using each_with_index is slower than while loop. Occured at lines: 71, 106.
7
-
8
- lib/antelope/ace/grammar/symbols.rb
9
- Hash#fetch with second argument is slower than Hash#fetch with block. Occured at lines: 17.
10
-
11
- lib/antelope/generation/constructor/first.rb
12
- Using each_with_index is slower than while loop. Occured at lines: 63.
13
-
14
- lib/antelope/generation/constructor/follow.rb
15
- Using each_with_index is slower than while loop. Occured at lines: 78.
16
-
17
- lib/antelope/generation/constructor.rb
18
- Using each_with_index is slower than while loop. Occured at lines: 71.
19
-
20
- lib/antelope/generation/recognizer/rule.rb
21
- Parallel assignment is slower than sequential assignment. Occured at lines: 77.
22
- Using each_with_index is slower than while loop. Occured at lines: 178.
23
-
24
- lib/antelope/generation/recognizer/state.rb
25
- Using each_with_index is slower than while loop. Occured at lines: 123.
26
-
27
- lib/antelope/generation/recognizer.rb
28
- Using each_with_index is slower than while loop. Occured at lines: 138.
29
-
30
- lib/antelope/generation/tableizer.rb
31
- Using each_with_index is slower than while loop. Occured at lines: 90, 138.
32
- Parallel assignment is slower than sequential assignment. Occured at lines: 99.
33
-
34
- lib/antelope/generator/base.rb
35
- Using each_with_index is slower than while loop. Occured at lines: 124.
36
-
37
- lib/antelope/generator/c_header.rb
38
- Using each_with_index is slower than while loop. Occured at lines: 91.
39
-
40
- lib/antelope/template/compiler.rb
41
- Don't rescue NoMethodError, rather check with respond_to?. Occured at lines: 40.
42
-
1
+ lib/antelope/ace/grammar/precedences.rb
2
+ Array#select.first is slower than Array#detect. Occured at lines: 31, 35.
3
+ Using each_with_index is slower than while loop. Occured at lines: 51.
4
+
5
+ lib/antelope/ace/grammar/productions.rb
6
+ Using each_with_index is slower than while loop. Occured at lines: 71, 106.
7
+
8
+ lib/antelope/ace/grammar/symbols.rb
9
+ Hash#fetch with second argument is slower than Hash#fetch with block. Occured at lines: 17.
10
+
11
+ lib/antelope/generation/constructor/first.rb
12
+ Using each_with_index is slower than while loop. Occured at lines: 63.
13
+
14
+ lib/antelope/generation/constructor/follow.rb
15
+ Using each_with_index is slower than while loop. Occured at lines: 78.
16
+
17
+ lib/antelope/generation/constructor.rb
18
+ Using each_with_index is slower than while loop. Occured at lines: 71.
19
+
20
+ lib/antelope/generation/recognizer/rule.rb
21
+ Parallel assignment is slower than sequential assignment. Occured at lines: 77.
22
+ Using each_with_index is slower than while loop. Occured at lines: 178.
23
+
24
+ lib/antelope/generation/recognizer/state.rb
25
+ Using each_with_index is slower than while loop. Occured at lines: 123.
26
+
27
+ lib/antelope/generation/recognizer.rb
28
+ Using each_with_index is slower than while loop. Occured at lines: 138.
29
+
30
+ lib/antelope/generation/tableizer.rb
31
+ Using each_with_index is slower than while loop. Occured at lines: 90, 138.
32
+ Parallel assignment is slower than sequential assignment. Occured at lines: 99.
33
+
34
+ lib/antelope/generator/base.rb
35
+ Using each_with_index is slower than while loop. Occured at lines: 124.
36
+
37
+ lib/antelope/generator/c_header.rb
38
+ Using each_with_index is slower than while loop. Occured at lines: 91.
39
+
40
+ lib/antelope/template/compiler.rb
41
+ Don't rescue NoMethodError, rather check with respond_to?. Occured at lines: 40.
42
+
@@ -1,60 +1,60 @@
1
- describe Ace::Compiler do
2
- let :file do
3
- <<-DOC
4
- %{
5
- test
6
- %}
7
-
8
- %require "#{VERSION}"
9
- %language "ruby"
10
-
11
- %terminal NUMBER
12
- %terminal SEMICOLON ";"
13
- %terminal ADD "+"
14
- %terminal LPAREN "("
15
- %terminal RPAREN ")"
16
-
17
- %%
18
-
19
- s: e
20
- e: t ADD e
21
- t: NUMBER | LPAREN e RPAREN
22
-
23
- %%
24
-
25
- hello
26
- DOC
27
- end
28
-
29
- let :tokens do
30
- Ace::Scanner.scan(file)
31
- end
32
-
33
- let :compiler do
34
- Ace::Compiler.new(tokens)
35
- end
36
-
37
- subject do
38
- compiler.compile
39
- compiler
40
- end
41
-
42
- its(:body) { should =~ /test/ }
43
- its(:body) { should =~ /hello/ }
44
- its(:options) { should have_key :type }
45
-
46
- it 'has the proper terminals' do
47
- expect(subject.options[:terminals].map(&:first)).to eq [:NUMBER,
48
- :SEMICOLON, :ADD, :LPAREN, :RPAREN]
49
- end
50
-
51
- context 'with an unmatched version' do
52
- let(:file) { "%require \"0.0.0\"\n%%\n%%\n" }
53
-
54
- it 'raises an error' do
55
- expect do
56
- subject
57
- end.to raise_error(IncompatibleVersionError)
58
- end
59
- end
60
- end
1
+ describe Ace::Compiler do
2
+ let :file do
3
+ <<-DOC
4
+ %{
5
+ test
6
+ %}
7
+
8
+ %require "#{VERSION}"
9
+ %language "ruby"
10
+
11
+ %terminal NUMBER
12
+ %terminal SEMICOLON ";"
13
+ %terminal ADD "+"
14
+ %terminal LPAREN "("
15
+ %terminal RPAREN ")"
16
+
17
+ %%
18
+
19
+ s: e
20
+ e: t ADD e
21
+ t: NUMBER | LPAREN e RPAREN
22
+
23
+ %%
24
+
25
+ hello
26
+ DOC
27
+ end
28
+
29
+ let :tokens do
30
+ Ace::Scanner.scan(file)
31
+ end
32
+
33
+ let :compiler do
34
+ Ace::Compiler.new(tokens)
35
+ end
36
+
37
+ subject do
38
+ compiler.compile
39
+ compiler
40
+ end
41
+
42
+ its(:body) { should =~ /test/ }
43
+ its(:body) { should =~ /hello/ }
44
+ its(:options) { should have_key :type }
45
+
46
+ it 'has the proper terminals' do
47
+ expect(subject.options[:terminals].map(&:first)).to eq [:NUMBER,
48
+ :SEMICOLON, :ADD, :LPAREN, :RPAREN]
49
+ end
50
+
51
+ context 'with an unmatched version' do
52
+ let(:file) { "%require \"0.0.0\"\n%%\n%%\n" }
53
+
54
+ it 'raises an error' do
55
+ expect do
56
+ subject
57
+ end.to raise_error(IncompatibleVersionError)
58
+ end
59
+ end
60
+ end
@@ -1,27 +1,27 @@
1
- describe Ace::Scanner do
2
-
3
- it 'properly scans' do
4
- expect(scan("%test \"a\" hi\n%%\nt: d { { } }\n%%\nhi\n")).to eq [
5
- [:directive, 'test', %w(a hi)],
6
- [:second],
7
- [:label, 't', nil],
8
- [:part, 'd', nil],
9
- [:block, '{ { } }'],
10
- [:third],
11
- [:copy, "\nhi\n"]
12
- ]
13
- end
14
-
15
- it 'throws an error' do
16
- expect {
17
- scan('% %% %% ')
18
- }.to raise_error(Ace::SyntaxError)
19
- end
20
-
21
- def scan(source)
22
- Timeout.timeout(5) do
23
- Ace::Scanner.scan(source)
24
- end
25
- end
26
-
27
- end
1
+ describe Ace::Scanner do
2
+
3
+ it 'properly scans' do
4
+ expect(scan("%test \"a\" hi\n%%\nt: d { { } }\n%%\nhi\n")).to eq [
5
+ [:directive, 'test', %w(a hi)],
6
+ [:second],
7
+ [:label, 't', nil],
8
+ [:part, 'd', nil],
9
+ [:block, '{ { } }'],
10
+ [:third],
11
+ [:copy, "\nhi\n"]
12
+ ]
13
+ end
14
+
15
+ it 'throws an error' do
16
+ expect {
17
+ scan('% %% %% ')
18
+ }.to raise_error(Ace::SyntaxError)
19
+ end
20
+
21
+ def scan(source)
22
+ Timeout.timeout(5) do
23
+ Ace::Scanner.scan(source)
24
+ end
25
+ end
26
+
27
+ end
@@ -1,131 +1,131 @@
1
- describe Generation::Constructor do
2
- let(:grammar) { double('grammar') }
3
- let(:terminal) { token(:TERMINAL) }
4
- let(:epsilon) { token(:epsilon) }
5
-
6
- subject { described_class.new(grammar) }
7
-
8
- context '#nullable?' do
9
- context 'when given an epsilon token' do
10
- it 'returns true' do
11
- expect(subject.nullable?(epsilon)).to be true
12
- end
13
- end
14
-
15
- context 'when given a terminal' do
16
- it 'returns false' do
17
- expect(subject.nullable?(terminal)).to be false
18
- end
19
- end
20
-
21
- context 'when given an array' do
22
- context 'with one of the elements not nullable' do
23
- it 'returns false' do
24
- expect(subject.nullable?([terminal, epsilon])).to be false
25
- end
26
- end
27
-
28
- context 'with all of the elements nullable' do
29
- it 'returns true' do
30
- expect(subject.nullable?([epsilon, epsilon])).to be true
31
- end
32
- end
33
- end
34
-
35
- context 'when given a nonterminal' do
36
- let(:grammar) { with_recognizer }
37
-
38
- context 'with no nullable productions' do
39
- let(:nonterminal) { Grammar::Token::Nonterminal.new(:l) }
40
-
41
- it 'returns false' do
42
- expect(subject.nullable?(nonterminal)).to be false
43
- end
44
- end
45
-
46
- context 'with a nullable production' do
47
- let(:nonterminal) { Grammar::Token::Nonterminal.new(:e) }
48
-
49
- it 'returns true' do
50
- expect(subject.nullable?(nonterminal)).to be true
51
- end
52
- end
53
- end
54
-
55
- context 'when given a bad argument' do
56
- it 'raises an error' do
57
- expect { subject.nullable?(nil) }.to raise_error(ArgumentError)
58
- end
59
- end
60
- end
61
-
62
- context '#first' do
63
- context 'when given an epsilon token' do
64
- it 'generates an empty set' do
65
- expect(subject.first(epsilon)).to eq Set.new
66
- end
67
- end
68
-
69
- context 'when given a terminal' do
70
- it 'generates a set' do
71
- expect(subject.first(terminal)).to eq [terminal].to_set
72
- end
73
- end
74
-
75
- context 'when given an array' do
76
- let(:terminal2) { token(:terminal, :TERMINAL2) }
77
-
78
- it 'generates a set' do
79
- expect(subject.first([epsilon, terminal]))
80
- .to eq [terminal].to_set
81
- expect(subject.first([terminal, terminal2]))
82
- .to eq [terminal].to_set
83
- end
84
- end
85
-
86
- context 'when given a nonterminal' do
87
- let(:grammar) { with_recognizer }
88
- let(:nonterminal) { token(:nonterminal, :e) }
89
-
90
- it 'generates a set' do
91
- expect(subject.first(nonterminal))
92
- .to eq [token(:terminal, :IDENT), token(:terminal, :STAR, '*')].to_set
93
- end
94
- end
95
-
96
- context 'when given a bad argument' do
97
- it 'raises an error' do
98
- expect { subject.first(nil) }.to raise_error(ArgumentError)
99
- end
100
- end
101
- end
102
-
103
- context '#follow' do
104
- context 'when given a bad argument' do
105
- it 'raises an error' do
106
- expect { subject.follow(nil) }.to raise_error(ArgumentError)
107
- end
108
- end
109
-
110
- context 'when given a nonterminal' do
111
- let(:grammar) { with_recognizer }
112
- let(:nonterminal) { token(:nonterminal, :l) }
113
-
114
- before do
115
- subject.productions.merge grammar.productions.values.flatten
116
- end
117
-
118
- it 'generates a set' do
119
- expect(subject.follow(nonterminal)).to eq [
120
- token(:terminal, :EQUALS, '='),
121
- token(:terminal, :'$end')
122
- ].to_set
123
- end
124
- end
125
- end
126
-
127
- def token(type, name = nil, value = nil, ttype = nil, id = nil)
128
- type = Grammar::Token.const_get(type.to_s.capitalize)
129
- type.new(name, ttype, id, value)
130
- end
131
- end
1
+ describe Generation::Constructor do
2
+ let(:grammar) { double('grammar') }
3
+ let(:terminal) { token(:TERMINAL) }
4
+ let(:epsilon) { token(:epsilon) }
5
+
6
+ subject { described_class.new(grammar) }
7
+
8
+ context '#nullable?' do
9
+ context 'when given an epsilon token' do
10
+ it 'returns true' do
11
+ expect(subject.nullable?(epsilon)).to be true
12
+ end
13
+ end
14
+
15
+ context 'when given a terminal' do
16
+ it 'returns false' do
17
+ expect(subject.nullable?(terminal)).to be false
18
+ end
19
+ end
20
+
21
+ context 'when given an array' do
22
+ context 'with one of the elements not nullable' do
23
+ it 'returns false' do
24
+ expect(subject.nullable?([terminal, epsilon])).to be false
25
+ end
26
+ end
27
+
28
+ context 'with all of the elements nullable' do
29
+ it 'returns true' do
30
+ expect(subject.nullable?([epsilon, epsilon])).to be true
31
+ end
32
+ end
33
+ end
34
+
35
+ context 'when given a nonterminal' do
36
+ let(:grammar) { with_recognizer }
37
+
38
+ context 'with no nullable productions' do
39
+ let(:nonterminal) { Grammar::Token::Nonterminal.new(:l) }
40
+
41
+ it 'returns false' do
42
+ expect(subject.nullable?(nonterminal)).to be false
43
+ end
44
+ end
45
+
46
+ context 'with a nullable production' do
47
+ let(:nonterminal) { Grammar::Token::Nonterminal.new(:e) }
48
+
49
+ it 'returns true' do
50
+ expect(subject.nullable?(nonterminal)).to be true
51
+ end
52
+ end
53
+ end
54
+
55
+ context 'when given a bad argument' do
56
+ it 'raises an error' do
57
+ expect { subject.nullable?(nil) }.to raise_error(ArgumentError)
58
+ end
59
+ end
60
+ end
61
+
62
+ context '#first' do
63
+ context 'when given an epsilon token' do
64
+ it 'generates an empty set' do
65
+ expect(subject.first(epsilon)).to eq Set.new
66
+ end
67
+ end
68
+
69
+ context 'when given a terminal' do
70
+ it 'generates a set' do
71
+ expect(subject.first(terminal)).to eq [terminal].to_set
72
+ end
73
+ end
74
+
75
+ context 'when given an array' do
76
+ let(:terminal2) { token(:terminal, :TERMINAL2) }
77
+
78
+ it 'generates a set' do
79
+ expect(subject.first([epsilon, terminal]))
80
+ .to eq [terminal].to_set
81
+ expect(subject.first([terminal, terminal2]))
82
+ .to eq [terminal].to_set
83
+ end
84
+ end
85
+
86
+ context 'when given a nonterminal' do
87
+ let(:grammar) { with_recognizer }
88
+ let(:nonterminal) { token(:nonterminal, :e) }
89
+
90
+ it 'generates a set' do
91
+ expect(subject.first(nonterminal))
92
+ .to eq [token(:terminal, :IDENT), token(:terminal, :STAR, '*')].to_set
93
+ end
94
+ end
95
+
96
+ context 'when given a bad argument' do
97
+ it 'raises an error' do
98
+ expect { subject.first(nil) }.to raise_error(ArgumentError)
99
+ end
100
+ end
101
+ end
102
+
103
+ context '#follow' do
104
+ context 'when given a bad argument' do
105
+ it 'raises an error' do
106
+ expect { subject.follow(nil) }.to raise_error(ArgumentError)
107
+ end
108
+ end
109
+
110
+ context 'when given a nonterminal' do
111
+ let(:grammar) { with_recognizer }
112
+ let(:nonterminal) { token(:nonterminal, :l) }
113
+
114
+ before do
115
+ subject.productions.merge grammar.productions.values.flatten
116
+ end
117
+
118
+ it 'generates a set' do
119
+ expect(subject.follow(nonterminal)).to eq [
120
+ token(:terminal, :EQUALS, '='),
121
+ token(:terminal, :'$end')
122
+ ].to_set
123
+ end
124
+ end
125
+ end
126
+
127
+ def token(type, name = nil, value = nil, ttype = nil, id = nil)
128
+ type = Grammar::Token.const_get(type.to_s.capitalize)
129
+ type.new(name, ttype, id, value)
130
+ end
131
+ end
@@ -1,22 +1,22 @@
1
- %language <ruby>
2
-
3
- %terminal IDENT
4
- %terminal STAR "*"
5
- %terminal EQUALS "="
6
-
7
- %%
8
-
9
- e: l EQUALS r
10
- | r
11
- | nothing
12
-
13
- l: IDENT
14
- | STAR r
15
-
16
- r: l
17
-
18
- %%
19
-
20
- class SimpleParser
21
- %{write}
22
- end
1
+ %language <ruby>
2
+
3
+ %terminal IDENT
4
+ %terminal STAR "*"
5
+ %terminal EQUALS "="
6
+
7
+ %%
8
+
9
+ e: l EQUALS r
10
+ | r
11
+ | nothing
12
+
13
+ l: IDENT
14
+ | STAR r
15
+
16
+ r: l
17
+
18
+ %%
19
+
20
+ class SimpleParser
21
+ %{write}
22
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,39 +1,39 @@
1
- require "rubygems"
2
- require "bundler/setup"
3
- Bundler.setup
4
-
5
- require "timeout"
6
- require "benchmark"
7
- require "simplecov"
8
- require "coveralls"
9
-
10
- SimpleCov.formatter = Coveralls::SimpleCov::Formatter
11
- SimpleCov.start do
12
- add_filter 'spec'
13
-
14
- end
15
-
16
- require "rspec/its"
17
- require "antelope"
18
-
19
- include Antelope
20
-
21
- Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each { |f| require f }
22
-
23
- # This file was generated by the `rspec --init` command. Conventionally, all
24
- # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
25
- # Require this file using `require "spec_helper"` to ensure that it is only
26
- # loaded once.
27
- #
28
- # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
29
- RSpec.configure do |config|
30
- config.run_all_when_everything_filtered = true
31
-
32
- # Run specs in random order to surface order dependencies. If you find an
33
- # order dependency and want to debug it, you can fix the order by providing
34
- # the seed, which is printed after each run.
35
- # --seed 1234
36
- config.order = 'random'
37
- config.include BenchmarkHelper
38
- config.include GrammarHelper
39
- end
1
+ require "rubygems"
2
+ require "bundler/setup"
3
+ Bundler.setup
4
+
5
+ require "timeout"
6
+ require "benchmark"
7
+ require "simplecov"
8
+ require "coveralls"
9
+
10
+ SimpleCov.formatter = Coveralls::SimpleCov::Formatter
11
+ SimpleCov.start do
12
+ add_filter 'spec'
13
+
14
+ end
15
+
16
+ require "rspec/its"
17
+ require "antelope"
18
+
19
+ include Antelope
20
+
21
+ Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each { |f| require f }
22
+
23
+ # This file was generated by the `rspec --init` command. Conventionally, all
24
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
25
+ # Require this file using `require "spec_helper"` to ensure that it is only
26
+ # loaded once.
27
+ #
28
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
29
+ RSpec.configure do |config|
30
+ config.run_all_when_everything_filtered = true
31
+
32
+ # Run specs in random order to surface order dependencies. If you find an
33
+ # order dependency and want to debug it, you can fix the order by providing
34
+ # the seed, which is printed after each run.
35
+ # --seed 1234
36
+ config.order = 'random'
37
+ config.include BenchmarkHelper
38
+ config.include GrammarHelper
39
+ end
@@ -1,5 +1,5 @@
1
- module BenchmarkHelper
2
- def benchmark
3
- Benchmark.realtime(&Proc.new)
4
- end
5
- end
1
+ module BenchmarkHelper
2
+ def benchmark
3
+ Benchmark.realtime(&Proc.new)
4
+ end
5
+ end