sequitur 0.1.18 → 0.1.19

Sign up to get free protection for your applications and to get access to all the features.
@@ -66,7 +66,7 @@ describe Production do
66
66
  expect(subject.references).to be_empty
67
67
 
68
68
  # Case 2: production without references
69
- symbols = [:a, :b, :c]
69
+ symbols = %i[a b c]
70
70
  symbols.each { |symb| subject.append_symbol(symb) }
71
71
  expect(subject.references).to be_empty
72
72
  expect(subject.references_of(p_a)).to be_empty
@@ -90,14 +90,14 @@ describe Production do
90
90
  end
91
91
 
92
92
  it 'should know the position(s) of a given digram' do
93
- sequence1 = [:a, :b, :c, :a, :b, :a, :b, :d]
93
+ sequence1 = %i[a b c a b a b d]
94
94
  sequence1.each { |symb| subject.append_symbol(symb) }
95
95
  positions = [0, 3, 5]
96
96
  expect(subject.positions_of(:a, :b)).to eq(positions)
97
97
 
98
98
  subject.clear_rhs
99
99
  # Case of overlapping digrams
100
- sequence2 = [:a, :a, :b, :a, :a, :a, :c, :d]
100
+ sequence2 = %i[a a b a a a c d]
101
101
  sequence2.each { |symb| subject.append_symbol(symb) }
102
102
  positions = [0, 3]
103
103
  expect(subject.positions_of(:a, :a)).to eq(positions)
@@ -114,15 +114,15 @@ describe Production do
114
114
  it 'should append a symbol when has one symbol' do
115
115
  subject.append_symbol(:a)
116
116
  subject.append_symbol(:b)
117
- expect(subject.rhs).to eq([:a, :b])
118
- expect(subject.last_digram.symbols).to eq([:a, :b])
117
+ expect(subject.rhs).to eq(%i[a b])
118
+ expect(subject.last_digram.symbols).to eq(%i[a b])
119
119
  end
120
120
 
121
121
  it 'should append a symbol when rhs has several symbols' do
122
- symbols = [:a, :b, :c, :d, :e, :f]
122
+ symbols = %i[a b c d e f]
123
123
  symbols.each { |symb| subject.append_symbol(symb) }
124
124
  expect(subject.rhs).to eq(symbols)
125
- expect(subject.last_digram.symbols).to eq([:e, :f])
125
+ expect(subject.last_digram.symbols).to eq(%i[e f])
126
126
  end
127
127
 
128
128
  it 'should append a production in its rhs' do
@@ -7,7 +7,7 @@ module Sequitur # Re-open the module to get rid of qualified names
7
7
  describe SequiturGrammar do
8
8
  # Factory method. Returns an empty enumerator (
9
9
  # i.e. without elements to iterate)
10
- def empty_enum()
10
+ def empty_enum
11
11
  return [].to_enum
12
12
  end
13
13
 
@@ -36,28 +36,28 @@ describe SequiturGrammar do
36
36
 
37
37
  it 'could be created with multiple unique tokens' do
38
38
  # Creation
39
- instance = SequiturGrammar.new([:a, :b, :c, :d].to_enum)
39
+ instance = SequiturGrammar.new(%i[a b c d].to_enum)
40
40
 
41
41
  # Initialization
42
42
  expect(instance.productions.size).to eq(1)
43
43
  expect(instance.start).to eq(instance.productions.first)
44
- expect(instance.start.rhs).to eq([:a, :b, :c, :d])
44
+ expect(instance.start.rhs).to eq(%i[a b c d])
45
45
  end
46
46
 
47
47
  it 'could be created with a repeating digram' do
48
- instance = SequiturGrammar.new([:a, :b, :a, :b].to_enum)
48
+ instance = SequiturGrammar.new(%i[a b a b].to_enum)
49
49
 
50
50
  # Expectations:
51
51
  # S : A A.
52
52
  # A : a b.
53
53
  expect(instance.productions.size).to eq(2)
54
54
  p_a = instance.productions[1]
55
- expect(p_a.rhs).to eq([:a, :b])
55
+ expect(p_a.rhs).to eq(%i[a b])
56
56
  expect(instance.start.rhs).to eq([p_a, p_a])
57
57
  end
58
58
 
59
59
  it 'should enforce the utility rule' do
60
- instance = SequiturGrammar.new([:a, :b, :c, :a, :b, :c].to_enum)
60
+ instance = SequiturGrammar.new(%i[a b c a b c].to_enum)
61
61
 
62
62
  # Expectations without utility rule:
63
63
  # S : B B.
@@ -69,7 +69,7 @@ describe SequiturGrammar do
69
69
  # A : a b c.
70
70
  expect(instance.productions.size).to eq(2)
71
71
  p_a = instance.productions.last
72
- expect(p_a.rhs).to eq([:a, :b, :c])
72
+ expect(p_a.rhs).to eq(%i[a b c])
73
73
  expect(instance.start.rhs).to eq([p_a, p_a])
74
74
  end
75
75
 
@@ -124,7 +124,7 @@ describe SequiturGrammar do
124
124
  expect(p2.rhs).to eq([p1, p1])
125
125
  expect(p3.rhs).to eq(['letter_b', p2, 'letter_e'])
126
126
  end
127
-
127
+
128
128
  it 'should work with Symbol instead of single char input tokens' do
129
129
  # Raw input is sequence of single characters
130
130
  raw_input = 'bbebeebebebbebee'
@@ -143,7 +143,7 @@ describe SequiturGrammar do
143
143
  expect(instance.productions.size).to eq(4)
144
144
  (p1, p2, p3) = instance.productions[1..3]
145
145
  expect(instance.start.rhs).to eq([p3, p2, p3])
146
- expect(p1.rhs).to eq([:b, :e])
146
+ expect(p1.rhs).to eq(%i[b e])
147
147
  expect(p2.rhs).to eq([p1, p1])
148
148
  expect(p3.rhs).to eq([:b, p2, :e])
149
149
  end
@@ -279,7 +279,7 @@ SNIPPET
279
279
  expect(instance.productions.size).to eq(3)
280
280
  (p1, p2) = instance.productions[1..2]
281
281
  expect(instance.start.rhs).to eq([p2, p2])
282
- expect(p1.rhs).to eq([:a, :b])
282
+ expect(p1.rhs).to eq(%i[a b])
283
283
  expect(p2.rhs).to eq([p1, :c, p1, :d])
284
284
  end
285
285
  end # context
@@ -24,7 +24,7 @@ describe SymbolSequence do
24
24
 
25
25
  subject do
26
26
  an_instance = SymbolSequence.new
27
- [:a, :b, :c].each { |a_sym| an_instance << a_sym }
27
+ %i[a b c].each { |a_sym| an_instance << a_sym }
28
28
  an_instance
29
29
  end
30
30
 
@@ -63,7 +63,7 @@ describe SymbolSequence do
63
63
  expect(instance).to eq(instance)
64
64
 
65
65
  expect(subject).not_to eq(instance)
66
- [:a, :b, :c].each { |a_sym| instance << a_sym }
66
+ %i[a b c].each { |a_sym| instance << a_sym }
67
67
  expect(subject).to eq(instance)
68
68
 
69
69
  # Check that element order is relevant
@@ -72,10 +72,10 @@ describe SymbolSequence do
72
72
  end
73
73
 
74
74
  it 'should know whether it is equal to an array' do
75
- expect(subject).to eq([:a, :b, :c])
75
+ expect(subject).to eq(%i[a b c])
76
76
 
77
77
  # Check that element order is relevant
78
- expect(subject).not_to eq([:c, :b, :a])
78
+ expect(subject).not_to eq(%i[c b a])
79
79
  end
80
80
 
81
81
  it 'should know that is not equal to something else' do
@@ -6,10 +6,12 @@ require 'coveralls'
6
6
 
7
7
  Coveralls.wear!
8
8
 
9
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
10
- SimpleCov::Formatter::HTMLFormatter,
11
- Coveralls::SimpleCov::Formatter
12
- ]
9
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
10
+ [
11
+ SimpleCov::Formatter::HTMLFormatter,
12
+ Coveralls::SimpleCov::Formatter
13
+ ]
14
+ )
13
15
 
14
16
 
15
17
  require 'rspec' # Use the RSpec framework
metadata CHANGED
@@ -1,108 +1,123 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequitur
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.18
4
+ version: 0.1.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimitri Geshef
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-21 00:00:00.000000000 Z
11
+ date: 2018-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rake
14
+ name: coveralls
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 10.0.0
19
+ version: '0.7'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 10.0.0
22
+ version: 0.7.0
23
23
  type: :development
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: 10.0.0
29
+ version: '0.7'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 10.0.0
32
+ version: 0.7.0
33
33
  - !ruby/object:Gem::Dependency
34
- name: rspec
34
+ name: rake
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 2.1.0
39
+ version: 10.0.0
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 2.1.0
42
+ version: 10.0.0
43
43
  type: :development
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: 2.1.0
49
+ version: 10.0.0
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 2.1.0
52
+ version: 10.0.0
53
53
  - !ruby/object:Gem::Dependency
54
- name: simplecov
54
+ name: rspec
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 3.0.0
57
60
  - - ">="
58
61
  - !ruby/object:Gem::Version
59
- version: 0.8.0
62
+ version: 3.0.0
60
63
  type: :development
61
64
  prerelease: false
62
65
  version_requirements: !ruby/object:Gem::Requirement
63
66
  requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 3.0.0
64
70
  - - ">="
65
71
  - !ruby/object:Gem::Version
66
- version: 0.8.0
72
+ version: 3.0.0
67
73
  - !ruby/object:Gem::Dependency
68
- name: coveralls
74
+ name: rubygems
69
75
  requirement: !ruby/object:Gem::Requirement
70
76
  requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '2.0'
71
80
  - - ">="
72
81
  - !ruby/object:Gem::Version
73
- version: 0.7.0
82
+ version: 2.0.0
74
83
  type: :development
75
84
  prerelease: false
76
85
  version_requirements: !ruby/object:Gem::Requirement
77
86
  requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.0'
78
90
  - - ">="
79
91
  - !ruby/object:Gem::Version
80
- version: 0.7.0
92
+ version: 2.0.0
81
93
  - !ruby/object:Gem::Dependency
82
- name: rubygems
94
+ name: simplecov
83
95
  requirement: !ruby/object:Gem::Requirement
84
96
  requirements:
85
97
  - - "~>"
86
98
  - !ruby/object:Gem::Version
87
- version: '2.0'
99
+ version: 0.8.0
88
100
  - - ">="
89
101
  - !ruby/object:Gem::Version
90
- version: 2.0.0
102
+ version: 0.8.0
91
103
  type: :development
92
104
  prerelease: false
93
105
  version_requirements: !ruby/object:Gem::Requirement
94
106
  requirements:
95
107
  - - "~>"
96
108
  - !ruby/object:Gem::Version
97
- version: '2.0'
109
+ version: 0.8.0
98
110
  - - ">="
99
111
  - !ruby/object:Gem::Version
100
- version: 2.0.0
101
- description: "Ruby implementation of the Sequitur algorithm. This algorithm automatically
102
- \nfinds repetitions and hierarchical structures in a given sequence of input \ntokens.
103
- It encodes the input into a context-free grammar. \nThe Sequitur algorithm can be
104
- used to \na) compress a sequence of items,\nb) discover patterns in an sequence,
105
- \nc) generate grammar rules that can represent a given input.\n"
112
+ version: 0.8.0
113
+ description: |
114
+ Ruby implementation of the Sequitur algorithm. This algorithm automatically
115
+ finds repetitions and hierarchical structures in a given sequence of input
116
+ tokens. It encodes the input into a context-free grammar.
117
+ The Sequitur algorithm can be used to
118
+ a) compress a sequence of items,
119
+ b) discover patterns in an sequence,
120
+ c) generate grammar rules that can represent a given input.
106
121
  email: famished.tiger@yahoo.com
107
122
  executables: []
108
123
  extensions: []
@@ -173,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
188
  version: '0'
174
189
  requirements: []
175
190
  rubyforge_project:
176
- rubygems_version: 2.6.7
191
+ rubygems_version: 2.6.13
177
192
  signing_key:
178
193
  specification_version: 4
179
194
  summary: Ruby implementation of the Sequitur algorithm