rley 0.7.07 → 0.7.08

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 (139) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +348 -54
  3. data/LICENSE.txt +1 -1
  4. data/README.md +3 -2
  5. data/examples/NLP/engtagger.rb +193 -190
  6. data/examples/NLP/nano_eng/nano_grammar.rb +5 -5
  7. data/examples/data_formats/JSON/cli_options.rb +1 -1
  8. data/examples/data_formats/JSON/json_ast_builder.rb +12 -9
  9. data/examples/data_formats/JSON/json_ast_nodes.rb +12 -21
  10. data/examples/data_formats/JSON/json_grammar.rb +2 -2
  11. data/examples/data_formats/JSON/json_lexer.rb +8 -8
  12. data/examples/data_formats/JSON/json_minifier.rb +1 -1
  13. data/examples/general/calc_iter1/calc_ast_builder.rb +13 -10
  14. data/examples/general/calc_iter1/calc_ast_nodes.rb +23 -37
  15. data/examples/general/calc_iter1/calc_grammar.rb +2 -2
  16. data/examples/general/calc_iter1/calc_lexer.rb +6 -4
  17. data/examples/general/calc_iter1/spec/calculator_spec.rb +5 -5
  18. data/examples/general/calc_iter2/calc_ast_builder.rb +5 -3
  19. data/examples/general/calc_iter2/calc_ast_nodes.rb +27 -43
  20. data/examples/general/calc_iter2/calc_grammar.rb +3 -3
  21. data/examples/general/calc_iter2/calc_lexer.rb +11 -10
  22. data/examples/general/calc_iter2/spec/calculator_spec.rb +26 -26
  23. data/examples/general/left.rb +2 -2
  24. data/examples/general/right.rb +2 -2
  25. data/lib/rley/base/dotted_item.rb +23 -31
  26. data/lib/rley/constants.rb +2 -2
  27. data/lib/rley/engine.rb +20 -23
  28. data/lib/rley/formatter/asciitree.rb +3 -3
  29. data/lib/rley/formatter/bracket_notation.rb +1 -8
  30. data/lib/rley/formatter/debug.rb +6 -6
  31. data/lib/rley/formatter/json.rb +2 -2
  32. data/lib/rley/gfg/call_edge.rb +1 -1
  33. data/lib/rley/gfg/edge.rb +5 -5
  34. data/lib/rley/gfg/end_vertex.rb +2 -6
  35. data/lib/rley/gfg/epsilon_edge.rb +1 -5
  36. data/lib/rley/gfg/grm_flow_graph.rb +27 -23
  37. data/lib/rley/gfg/item_vertex.rb +10 -10
  38. data/lib/rley/gfg/non_terminal_vertex.rb +4 -4
  39. data/lib/rley/gfg/scan_edge.rb +1 -1
  40. data/lib/rley/gfg/shortcut_edge.rb +2 -2
  41. data/lib/rley/gfg/start_vertex.rb +4 -8
  42. data/lib/rley/gfg/vertex.rb +43 -39
  43. data/lib/rley/lexical/token_range.rb +6 -6
  44. data/lib/rley/parse_forest_visitor.rb +5 -5
  45. data/lib/rley/parse_rep/ast_base_builder.rb +9 -11
  46. data/lib/rley/parse_rep/cst_builder.rb +5 -6
  47. data/lib/rley/parse_rep/parse_forest_builder.rb +20 -18
  48. data/lib/rley/parse_rep/parse_forest_factory.rb +3 -3
  49. data/lib/rley/parse_rep/parse_rep_creator.rb +11 -13
  50. data/lib/rley/parse_rep/parse_tree_builder.rb +4 -4
  51. data/lib/rley/parse_rep/parse_tree_factory.rb +27 -27
  52. data/lib/rley/parse_tree_visitor.rb +1 -1
  53. data/lib/rley/parser/error_reason.rb +4 -5
  54. data/lib/rley/parser/gfg_chart.rb +20 -22
  55. data/lib/rley/parser/gfg_parsing.rb +16 -30
  56. data/lib/rley/parser/parse_entry.rb +25 -31
  57. data/lib/rley/parser/parse_entry_set.rb +18 -15
  58. data/lib/rley/parser/parse_entry_tracker.rb +4 -4
  59. data/lib/rley/parser/parse_state.rb +16 -21
  60. data/lib/rley/parser/parse_state_tracker.rb +4 -4
  61. data/lib/rley/parser/parse_tracer.rb +13 -13
  62. data/lib/rley/parser/parse_walker_factory.rb +23 -28
  63. data/lib/rley/parser/state_set.rb +9 -10
  64. data/lib/rley/ptree/non_terminal_node.rb +7 -5
  65. data/lib/rley/ptree/parse_tree.rb +3 -3
  66. data/lib/rley/ptree/parse_tree_node.rb +5 -5
  67. data/lib/rley/ptree/terminal_node.rb +7 -7
  68. data/lib/rley/rley_error.rb +12 -12
  69. data/lib/rley/sppf/alternative_node.rb +6 -6
  70. data/lib/rley/sppf/composite_node.rb +7 -7
  71. data/lib/rley/sppf/epsilon_node.rb +3 -3
  72. data/lib/rley/sppf/leaf_node.rb +3 -3
  73. data/lib/rley/sppf/parse_forest.rb +16 -16
  74. data/lib/rley/sppf/sppf_node.rb +7 -8
  75. data/lib/rley/sppf/token_node.rb +3 -3
  76. data/lib/rley/syntax/grammar.rb +5 -5
  77. data/lib/rley/syntax/grammar_builder.rb +9 -9
  78. data/lib/rley/syntax/grm_symbol.rb +6 -6
  79. data/lib/rley/syntax/non_terminal.rb +9 -15
  80. data/lib/rley/syntax/production.rb +10 -10
  81. data/lib/rley/syntax/symbol_seq.rb +7 -9
  82. data/lib/rley/syntax/terminal.rb +4 -5
  83. data/lib/rley/syntax/verbatim_symbol.rb +3 -3
  84. data/lib/support/base_tokenizer.rb +19 -18
  85. data/spec/rley/base/dotted_item_spec.rb +2 -2
  86. data/spec/rley/engine_spec.rb +17 -15
  87. data/spec/rley/formatter/asciitree_spec.rb +7 -7
  88. data/spec/rley/formatter/bracket_notation_spec.rb +13 -13
  89. data/spec/rley/formatter/json_spec.rb +1 -1
  90. data/spec/rley/gfg/end_vertex_spec.rb +5 -5
  91. data/spec/rley/gfg/item_vertex_spec.rb +10 -10
  92. data/spec/rley/gfg/non_terminal_vertex_spec.rb +3 -3
  93. data/spec/rley/gfg/shortcut_edge_spec.rb +1 -1
  94. data/spec/rley/gfg/start_vertex_spec.rb +5 -5
  95. data/spec/rley/gfg/vertex_spec.rb +3 -3
  96. data/spec/rley/lexical/token_range_spec.rb +16 -16
  97. data/spec/rley/lexical/token_spec.rb +2 -2
  98. data/spec/rley/parse_forest_visitor_spec.rb +165 -163
  99. data/spec/rley/parse_rep/ambiguous_parse_spec.rb +44 -44
  100. data/spec/rley/parse_rep/ast_builder_spec.rb +6 -6
  101. data/spec/rley/parse_rep/cst_builder_spec.rb +5 -5
  102. data/spec/rley/parse_rep/groucho_spec.rb +21 -21
  103. data/spec/rley/parse_rep/parse_forest_builder_spec.rb +26 -26
  104. data/spec/rley/parse_rep/parse_forest_factory_spec.rb +6 -6
  105. data/spec/rley/parse_rep/parse_tree_factory_spec.rb +2 -2
  106. data/spec/rley/parse_tree_visitor_spec.rb +10 -8
  107. data/spec/rley/parser/error_reason_spec.rb +6 -6
  108. data/spec/rley/parser/gfg_earley_parser_spec.rb +4 -2
  109. data/spec/rley/parser/gfg_parsing_spec.rb +4 -8
  110. data/spec/rley/parser/parse_entry_spec.rb +19 -19
  111. data/spec/rley/parser/parse_state_spec.rb +5 -5
  112. data/spec/rley/parser/parse_walker_factory_spec.rb +1 -1
  113. data/spec/rley/parser/state_set_spec.rb +22 -22
  114. data/spec/rley/ptree/non_terminal_node_spec.rb +5 -3
  115. data/spec/rley/ptree/parse_tree_node_spec.rb +4 -4
  116. data/spec/rley/ptree/terminal_node_spec.rb +6 -6
  117. data/spec/rley/sppf/alternative_node_spec.rb +6 -6
  118. data/spec/rley/sppf/non_terminal_node_spec.rb +3 -3
  119. data/spec/rley/sppf/token_node_spec.rb +4 -4
  120. data/spec/rley/support/ambiguous_grammar_helper.rb +3 -4
  121. data/spec/rley/support/grammar_abc_helper.rb +2 -4
  122. data/spec/rley/support/grammar_ambig01_helper.rb +4 -5
  123. data/spec/rley/support/grammar_arr_int_helper.rb +4 -5
  124. data/spec/rley/support/grammar_b_expr_helper.rb +4 -5
  125. data/spec/rley/support/grammar_l0_helper.rb +10 -11
  126. data/spec/rley/support/grammar_pb_helper.rb +6 -5
  127. data/spec/rley/support/grammar_sppf_helper.rb +1 -1
  128. data/spec/rley/syntax/grammar_builder_spec.rb +5 -5
  129. data/spec/rley/syntax/grammar_spec.rb +6 -6
  130. data/spec/rley/syntax/grm_symbol_spec.rb +1 -1
  131. data/spec/rley/syntax/non_terminal_spec.rb +8 -8
  132. data/spec/rley/syntax/production_spec.rb +13 -13
  133. data/spec/rley/syntax/symbol_seq_spec.rb +2 -2
  134. data/spec/rley/syntax/terminal_spec.rb +5 -5
  135. data/spec/rley/syntax/verbatim_symbol_spec.rb +1 -1
  136. data/spec/spec_helper.rb +0 -12
  137. data/spec/support/base_tokenizer_spec.rb +7 -2
  138. metadata +21 -62
  139. data/.simplecov +0 -8
@@ -20,7 +20,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
20
20
  expect(subject.name).to eq(sample_name)
21
21
  end
22
22
  end # context
23
-
23
+
24
24
  context 'Provided services:' do
25
25
  it 'should give its text representation' do
26
26
  expect(subject.to_s).to eq(sample_name)
@@ -19,28 +19,28 @@ module Rley # Open this namespace to avoid module qualifier prefixes
19
19
  it 'should know its name' do
20
20
  expect(subject.name).to eq(sample_name)
21
21
  end
22
-
22
+
23
23
  it 'should know that is a not a terminal' do
24
24
  expect(subject).not_to be_terminal
25
25
  end
26
26
  end # context
27
27
 
28
-
29
- context 'Provided services:' do
28
+
29
+ context 'Provided services:' do
30
30
  it 'should know whether it is nullable' do
31
31
  expect(subject.nullable?).to be_nil
32
32
  subject.nullable = true
33
33
  expect(subject).to be_nullable
34
34
  subject.nullable = false
35
- expect(subject).not_to be_nullable
35
+ expect(subject).not_to be_nullable
36
36
  end
37
-
37
+
38
38
  it 'should know whether it is defined' do
39
39
  expect(subject.undefined?).to be_nil
40
40
  subject.undefined = true
41
41
  expect(subject).to be_undefined
42
42
  subject.undefined = false
43
- expect(subject).not_to be_undefined
43
+ expect(subject).not_to be_undefined
44
44
  end
45
45
 
46
46
  it 'should know whether it is generative' do
@@ -48,8 +48,8 @@ module Rley # Open this namespace to avoid module qualifier prefixes
48
48
  subject.generative = true
49
49
  expect(subject).to be_generative
50
50
  subject.generative = false
51
- expect(subject).not_to be_generative
52
- end
51
+ expect(subject).not_to be_generative
52
+ end
53
53
  end # context
54
54
  end # describe
55
55
  end # module
@@ -24,11 +24,11 @@ module Rley # Open this namespace to avoid module qualifier prefixes
24
24
  it 'should be created with a non-terminal and a symbol sequence' do
25
25
  expect { Production.new(sentence, sequence) }.not_to raise_error
26
26
  end
27
-
27
+
28
28
  it 'should complain when its rhs is nil' do
29
29
  err = StandardError
30
30
  msg_prefix = 'Right side of a production of the kind '
31
- msg_suffix = "'Sentence' => ... is nil."
31
+ msg_suffix = "'Sentence' => ... is nil."
32
32
  msg = msg_prefix + msg_suffix
33
33
  expect { Production.new(sentence, nil) }.to raise_error(err, msg)
34
34
  end
@@ -49,42 +49,42 @@ module Rley # Open this namespace to avoid module qualifier prefixes
49
49
  instance = Production.new(sentence, [])
50
50
  expect(instance).to be_empty
51
51
  end
52
-
52
+
53
53
  it 'should be anonymous at creation' do
54
54
  expect(subject.name).to be_nil
55
55
  end
56
-
56
+
57
57
  it 'should complain if its lhs is not a non-terminal' do
58
58
  err = StandardError
59
59
  msg_prefix = 'Left side of production must be a non-terminal symbol'
60
- msg_suffix = ", found a #{String} instead."
60
+ msg_suffix = ", found a #{String} instead."
61
61
  msg = msg_prefix + msg_suffix
62
62
  expect { Production.new('wrong', sequence) }.to raise_error(err, msg)
63
63
  end
64
64
  end # context
65
-
65
+
66
66
  context 'Provided services:' do
67
67
  it 'should accept a name (i)' do
68
68
  a_name = 'nominem'
69
69
  subject.name = a_name
70
70
  expect(subject.name).to eq(a_name)
71
71
  end
72
-
72
+
73
73
  it 'should accept a name (ii)' do
74
74
  a_name = 'nominem'
75
75
  subject.as(a_name)
76
- expect(subject.name).to eq(a_name)
76
+ expect(subject.name).to eq(a_name)
77
77
  end
78
-
78
+
79
79
  it 'should provide human-readable representation of itself' do
80
80
  subject.name = 'some name'
81
81
  prefix = /^#<Rley::Syntax::Production:\d+ @name="some name"/
82
82
  expect(subject.inspect).to match(prefix)
83
- pattern = /@lhs=Sentence @rhs=#<Rley::Syntax::SymbolSeq/
83
+ pattern = /@lhs=Sentence @rhs=#<Rley::Syntax::SymbolSeq/
84
84
  expect(subject.inspect).to match(pattern)
85
- suffix = /> @generative=>$/
86
- expect(subject.inspect).to match(suffix)
87
- end
85
+ suffix = /> @generative=>$/
86
+ expect(subject.inspect).to match(suffix)
87
+ end
88
88
  end # context
89
89
  end # describe
90
90
  end # module
@@ -57,13 +57,13 @@ module Rley # Open this namespace to avoid module qualifier prefixes
57
57
  unequal_one = SymbolSeq.new([verb, pp, np])
58
58
  expect(subject == unequal_one).not_to eq(true)
59
59
  end
60
-
60
+
61
61
  it 'should complain when unable to compare' do
62
62
  err = StandardError
63
63
  msg = 'Cannot compare a SymbolSeq with a String'
64
64
  expect { subject == 'dummy-text' }.to raise_error(err, msg)
65
65
  end
66
-
66
+
67
67
  it 'should provide human-readable representation of itself' do
68
68
  suffix = /::SymbolSeq:\d+ @members=\["Verb", "NP", "PP"\]>$/
69
69
  expect(subject.inspect).to match(suffix)
@@ -19,18 +19,18 @@ module Rley # Open this namespace to avoid module qualifier prefixes
19
19
  it 'should know its name' do
20
20
  expect(subject.name).to eq(sample_name)
21
21
  end
22
-
22
+
23
23
  it 'should know that is a terminal symbol' do
24
24
  expect(subject).to be_terminal
25
- end
26
-
25
+ end
26
+
27
27
  it "should know that isn't nullable" do
28
28
  expect(subject).not_to be_nullable
29
29
  end
30
-
30
+
31
31
  it 'should know that it is generative' do
32
32
  expect(subject).to be_generative
33
- end
33
+ end
34
34
  end # context
35
35
  end # describe
36
36
  end # module
@@ -24,7 +24,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
24
24
  expect(subject.text).to eq(sample_name)
25
25
  end
26
26
  end # context
27
-
27
+
28
28
  context 'Provided services:' do
29
29
  it 'should give its text representation' do
30
30
  expected = "'#{sample_name}'"
data/spec/spec_helper.rb CHANGED
@@ -3,18 +3,6 @@
3
3
  # File: spec_helper.rb
4
4
  # Purpose: utility file that is loaded by all our RSpec files
5
5
 
6
- require 'simplecov'
7
- require 'coveralls'
8
-
9
- Coveralls.wear!
10
-
11
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
12
- [
13
- SimpleCov::Formatter::HTMLFormatter,
14
- Coveralls::SimpleCov::Formatter
15
- ]
16
- )
17
-
18
6
  require 'pp' # Use pretty-print for debugging purposes
19
7
  require 'rspec' # Use the RSpec framework
20
8
 
@@ -25,6 +25,8 @@ describe BaseTokenizer do
25
25
 
26
26
 
27
27
  context 'Provided services:' do
28
+ # Simplistic tokenizer.
29
+ # rubocop: disable Lint/ConstantDefinitionInBlock
28
30
  class PB_Tokenizer < BaseTokenizer
29
31
  @@lexeme2name = {
30
32
  '(' => 'LPAREN',
@@ -34,8 +36,9 @@ describe BaseTokenizer do
34
36
 
35
37
  protected
36
38
 
37
- def recognize_token()
38
- if (lexeme = scanner.scan(/[\(\)]/)) # Single characters
39
+ # rubocop: disable Lint/DuplicateBranch
40
+ def recognize_token
41
+ if (lexeme = scanner.scan(/[()]/)) # Single characters
39
42
  # Delimiters, separators => single character token
40
43
  build_token(@@lexeme2name[lexeme], lexeme)
41
44
  elsif (lexeme = scanner.scan(/(?:\+)(?=\s)/)) # Isolated char
@@ -44,7 +47,9 @@ describe BaseTokenizer do
44
47
  build_token('int', lexeme)
45
48
  end
46
49
  end
50
+ # rubocop: enable Lint/DuplicateBranch
47
51
  end # class
52
+ # rubocop: enable Lint/ConstantDefinitionInBlock
48
53
 
49
54
  # Basic tokenizer
50
55
  # @return [Array<Rley::Lexical::Token>]
metadata CHANGED
@@ -1,115 +1,75 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rley
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.07
4
+ version: 0.7.08
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimitri Geshef
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-16 00:00:00.000000000 Z
11
+ date: 2021-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: coveralls
14
+ name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 0.7.0
20
17
  - - "~>"
21
18
  - !ruby/object:Gem::Version
22
- version: '0.7'
23
- type: :development
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: 0.7.0
30
- - - "~>"
31
- - !ruby/object:Gem::Version
32
- version: '0.7'
33
- - !ruby/object:Gem::Dependency
34
- name: rake
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
19
+ version: '10.0'
37
20
  - - ">="
38
21
  - !ruby/object:Gem::Version
39
22
  version: 10.0.0
40
- - - "~>"
41
- - !ruby/object:Gem::Version
42
- version: '10.0'
43
23
  type: :development
44
24
  prerelease: false
45
25
  version_requirements: !ruby/object:Gem::Requirement
46
26
  requirements:
47
- - - ">="
48
- - !ruby/object:Gem::Version
49
- version: 10.0.0
50
27
  - - "~>"
51
28
  - !ruby/object:Gem::Version
52
29
  version: '10.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 10.0.0
53
33
  - !ruby/object:Gem::Dependency
54
34
  name: rspec
55
35
  requirement: !ruby/object:Gem::Requirement
56
36
  requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- version: 3.5.0
60
37
  - - "~>"
61
38
  - !ruby/object:Gem::Version
62
39
  version: '3.5'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 3.5.0
63
43
  type: :development
64
44
  prerelease: false
65
45
  version_requirements: !ruby/object:Gem::Requirement
66
46
  requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: 3.5.0
70
47
  - - "~>"
71
48
  - !ruby/object:Gem::Version
72
49
  version: '3.5'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 3.5.0
73
53
  - !ruby/object:Gem::Dependency
74
54
  name: rubygems
75
55
  requirement: !ruby/object:Gem::Requirement
76
56
  requirements:
77
- - - ">="
78
- - !ruby/object:Gem::Version
79
- version: 2.0.0
80
57
  - - "~>"
81
58
  - !ruby/object:Gem::Version
82
59
  version: '2.0'
83
- type: :development
84
- prerelease: false
85
- version_requirements: !ruby/object:Gem::Requirement
86
- requirements:
87
60
  - - ">="
88
61
  - !ruby/object:Gem::Version
89
62
  version: 2.0.0
90
- - - "~>"
91
- - !ruby/object:Gem::Version
92
- version: '2.0'
93
- - !ruby/object:Gem::Dependency
94
- name: simplecov
95
- requirement: !ruby/object:Gem::Requirement
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- version: 0.1.0
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '0.1'
103
63
  type: :development
104
64
  prerelease: false
105
65
  version_requirements: !ruby/object:Gem::Requirement
106
66
  requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: 0.1.0
110
67
  - - "~>"
111
68
  - !ruby/object:Gem::Version
112
- version: '0.1'
69
+ version: '2.0'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 2.0.0
113
73
  description: A general parser using the Earley algorithm.
114
74
  email: famished.tiger@yahoo.com
115
75
  executables: []
@@ -120,7 +80,6 @@ files:
120
80
  - ".rspec"
121
81
  - ".rubocop.yml"
122
82
  - ".ruby-gemset"
123
- - ".simplecov"
124
83
  - ".travis.yml"
125
84
  - ".yardopts"
126
85
  - CHANGELOG.md
@@ -307,15 +266,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
307
266
  requirements:
308
267
  - - ">="
309
268
  - !ruby/object:Gem::Version
310
- version: 2.4.0
269
+ version: 2.5.0
311
270
  required_rubygems_version: !ruby/object:Gem::Requirement
312
271
  requirements:
313
272
  - - ">="
314
273
  - !ruby/object:Gem::Version
315
274
  version: '0'
316
275
  requirements: []
317
- rubygems_version: 3.0.3
318
- signing_key:
276
+ rubygems_version: 3.1.4
277
+ signing_key:
319
278
  specification_version: 4
320
279
  summary: Ruby implementation of the Earley's parsing algorithm
321
280
  test_files:
data/.simplecov DELETED
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
- # .simplecov
3
- # Configuration
4
-
5
- SimpleCov.start do
6
- # Remove all files that match /spec/ in their path
7
- add_filter '/spec/'
8
- end