sequitur 0.1.22 → 0.1.24

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.
@@ -8,111 +8,108 @@ require_relative '../../lib/sequitur/production_ref'
8
8
  require_relative '../../lib/sequitur/production'
9
9
 
10
10
  module Sequitur # Re-open the module to get rid of qualified names
11
- describe SymbolSequence do
12
- let(:instance) { SymbolSequence.new }
13
-
14
- context 'Creation and initialization:' do
15
- it 'should be created without argument' do
16
- expect { SymbolSequence.new }.not_to raise_error
17
- end
18
-
19
- it 'should be empty at creation' do
20
- expect(subject).to be_empty
21
- end
22
- end # context
23
-
24
- context 'Provided services:' do
25
- let(:a_prod) { Production.new }
26
-
27
- subject do
28
- an_instance = SymbolSequence.new
29
- %i[a b c].each { |a_sym| an_instance << a_sym }
30
- an_instance
31
- end
32
-
33
- it 'should deep-copy clone itself' do
34
- ref = ProductionRef.new(a_prod)
35
-
36
- a = 'a'
37
- c = 'c'
38
- [a, ref, c].each { |ch| instance << ch }
39
- clone_a = instance.clone
40
-
41
- # Check that cloning works
42
- expect(clone_a).to eq(instance)
43
-
44
- # Reference objects are distinct but points to same production
45
- expect(clone_a.symbols[1].object_id).not_to eq(instance.symbols[1])
46
-
47
- # Modifying the clone...
48
- clone_a.symbols[1] = 'diff'
49
- expect(clone_a).not_to eq(instance)
50
-
51
- # ... should leave original unchanged
52
- expect(instance.symbols[1]).to eq(ref)
53
- end
54
-
55
-
56
- it 'should tell that it is equal to itself' do
57
- # Case: Non-empty sequence
58
- expect(subject).to eq(subject)
59
-
60
- # Case: empty sequence
61
- expect(instance).to eq(instance)
62
- end
63
-
64
- it 'should know whether it is equal to another instance' do
65
- expect(instance).to eq(instance)
66
-
67
- expect(subject).not_to eq(instance)
68
- %i[a b c].each { |a_sym| instance << a_sym }
69
- expect(subject).to eq(instance)
70
-
71
- # Check that element order is relevant
72
- instance.symbols.rotate!
73
- expect(subject).not_to eq(instance)
74
- end
75
-
76
- it 'should know whether it is equal to an array' do
77
- expect(subject).to eq(%i[a b c])
78
-
79
- # Check that element order is relevant
80
- expect(subject).not_to eq(%i[c b a])
81
- end
82
-
83
- it 'should know that is not equal to something else' do
84
- expect(subject).not_to eq(:abc)
85
- end
86
-
87
-
88
- it 'should know its references' do
89
- ref = ProductionRef.new(a_prod)
90
- 2.times { subject << ref }
91
-
92
- refs = subject.references
93
- expect(refs.size).to eq(2)
94
- expect(refs).to eq([ref, ref])
95
-
96
- refs = subject.references
97
- expect(refs.size).to eq(2)
98
- expect(refs).to eq([ref, ref])
99
- specific_refs = subject.references_of(a_prod)
100
- expect(specific_refs).to eq(refs)
101
-
102
-
103
- another = Production.new
104
- another_ref = ProductionRef.new(another)
105
- subject << another_ref
106
- refs = subject.references
107
- expect(refs.size).to eq(3)
108
- expect(refs).to eq([ref, ref, another])
109
- specific_refs = subject.references_of(a_prod)
110
- expect(specific_refs).to eq([ref, ref])
111
- specific_refs = subject.references_of(another)
112
- expect(specific_refs).to eq([another])
113
- end
114
- end # context
115
- end # describe
11
+ describe SymbolSequence do
12
+ let(:instance) { SymbolSequence.new }
13
+
14
+ context 'Creation and initialization:' do
15
+ it 'should be created without argument' do
16
+ expect { SymbolSequence.new }.not_to raise_error
17
+ end
18
+
19
+ it 'should be empty at creation' do
20
+ expect(subject).to be_empty
21
+ end
22
+ end # context
23
+
24
+ context 'Provided services:' do
25
+ let(:a_prod) { Production.new }
26
+
27
+ subject do
28
+ an_instance = SymbolSequence.new
29
+ %i[a b c].each { |a_sym| an_instance << a_sym }
30
+ an_instance
31
+ end
32
+
33
+ it 'should deep-copy clone itself' do
34
+ ref = ProductionRef.new(a_prod)
35
+
36
+ a = 'a'
37
+ c = 'c'
38
+ [a, ref, c].each { |ch| instance << ch }
39
+ clone_a = instance.clone
40
+
41
+ # Check that cloning works
42
+ expect(clone_a).to eq(instance)
43
+
44
+ # Reference objects are distinct but points to same production
45
+ expect(clone_a.symbols[1].object_id).not_to eq(instance.symbols[1])
46
+
47
+ # Modifying the clone...
48
+ clone_a.symbols[1] = 'diff'
49
+ expect(clone_a).not_to eq(instance)
50
+
51
+ # ... should leave original unchanged
52
+ expect(instance.symbols[1]).to eq(ref)
53
+ end
54
+
55
+ it 'should tell that it is equal to itself' do
56
+ # Case: Non-empty sequence
57
+ expect(subject).to eq(subject)
58
+
59
+ # Case: empty sequence
60
+ expect(instance).to eq(instance)
61
+ end
62
+
63
+ it 'should know whether it is equal to another instance' do
64
+ expect(instance).to eq(instance)
65
+
66
+ expect(subject).not_to eq(instance)
67
+ %i[a b c].each { |a_sym| instance << a_sym }
68
+ expect(subject).to eq(instance)
69
+
70
+ # Check that element order is relevant
71
+ instance.symbols.rotate!
72
+ expect(subject).not_to eq(instance)
73
+ end
74
+
75
+ it 'should know whether it is equal to an array' do
76
+ expect(subject).to eq(%i[a b c])
77
+
78
+ # Check that element order is relevant
79
+ expect(subject).not_to eq(%i[c b a])
80
+ end
81
+
82
+ it 'should know that is not equal to something else' do
83
+ expect(subject).not_to eq(:abc)
84
+ end
85
+
86
+ it 'should know its references' do
87
+ ref = ProductionRef.new(a_prod)
88
+ 2.times { subject << ref }
89
+
90
+ refs = subject.references
91
+ expect(refs.size).to eq(2)
92
+ expect(refs).to eq([ref, ref])
93
+
94
+ refs = subject.references
95
+ expect(refs.size).to eq(2)
96
+ expect(refs).to eq([ref, ref])
97
+ specific_refs = subject.references_of(a_prod)
98
+ expect(specific_refs).to eq(refs)
99
+
100
+ another = Production.new
101
+ another_ref = ProductionRef.new(another)
102
+ subject << another_ref
103
+ refs = subject.references
104
+ expect(refs.size).to eq(3)
105
+ expect(refs).to eq([ref, ref, another])
106
+ specific_refs = subject.references_of(a_prod)
107
+ expect(specific_refs).to eq([ref, ref])
108
+ specific_refs = subject.references_of(another)
109
+ expect(specific_refs).to eq([another])
110
+ end
111
+ end # context
112
+ end # describe
116
113
  end # module
117
114
 
118
115
  # End of file
data/spec/spec_helper.rb CHANGED
@@ -3,21 +3,7 @@
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
-
19
6
  require 'rspec' # Use the RSpec framework
20
- require 'pp' # Use pretty-print for debugging purposes
21
7
 
22
8
  RSpec.configure do |config|
23
9
  config.expect_with :rspec do |c|
@@ -29,5 +15,4 @@ RSpec.configure do |config|
29
15
  config.full_backtrace = true
30
16
  end
31
17
 
32
-
33
18
  # End of file
metadata CHANGED
@@ -1,115 +1,75 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequitur
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.22
4
+ version: 0.1.24
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: 2019-08-18 00:00:00.000000000 Z
11
+ date: 2023-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: coveralls
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 0.7.0
20
- - - "~>"
21
- - !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
13
  - !ruby/object:Gem::Dependency
34
14
  name: rake
35
15
  requirement: !ruby/object:Gem::Requirement
36
16
  requirements:
37
- - - ">="
17
+ - - "~>"
38
18
  - !ruby/object:Gem::Version
39
19
  version: 10.0.0
40
- - - "~>"
20
+ - - ">="
41
21
  - !ruby/object:Gem::Version
42
22
  version: 10.0.0
43
23
  type: :development
44
24
  prerelease: false
45
25
  version_requirements: !ruby/object:Gem::Requirement
46
26
  requirements:
47
- - - ">="
27
+ - - "~>"
48
28
  - !ruby/object:Gem::Version
49
29
  version: 10.0.0
50
- - - "~>"
30
+ - - ">="
51
31
  - !ruby/object:Gem::Version
52
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
- - - ">="
37
+ - - "~>"
58
38
  - !ruby/object:Gem::Version
59
39
  version: 3.0.0
60
- - - "~>"
40
+ - - ">="
61
41
  - !ruby/object:Gem::Version
62
42
  version: 3.0.0
63
43
  type: :development
64
44
  prerelease: false
65
45
  version_requirements: !ruby/object:Gem::Requirement
66
46
  requirements:
67
- - - ">="
47
+ - - "~>"
68
48
  - !ruby/object:Gem::Version
69
49
  version: 3.0.0
70
- - - "~>"
50
+ - - ">="
71
51
  - !ruby/object:Gem::Version
72
52
  version: 3.0.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.8.0
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: 0.8.0
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.8.0
110
67
  - - "~>"
111
68
  - !ruby/object:Gem::Version
112
- version: 0.8.0
69
+ version: '2.0'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 2.0.0
113
73
  description: |
114
74
  Ruby implementation of the Sequitur algorithm. This algorithm automatically
115
75
  finds repetitions and hierarchical structures in a given sequence of input
@@ -127,8 +87,6 @@ files:
127
87
  - ".rspec"
128
88
  - ".rubocop.yml"
129
89
  - ".ruby-gemset"
130
- - ".simplecov"
131
- - ".travis.yml"
132
90
  - ".yardopts"
133
91
  - CHANGELOG.md
134
92
  - Gemfile
@@ -179,15 +137,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
179
137
  requirements:
180
138
  - - ">="
181
139
  - !ruby/object:Gem::Version
182
- version: 2.3.0
140
+ version: 3.0.0
183
141
  required_rubygems_version: !ruby/object:Gem::Requirement
184
142
  requirements:
185
143
  - - ">="
186
144
  - !ruby/object:Gem::Version
187
145
  version: '0'
188
146
  requirements: []
189
- rubygems_version: 3.0.3
190
- signing_key:
147
+ rubygems_version: 3.3.7
148
+ signing_key:
191
149
  specification_version: 4
192
150
  summary: Ruby implementation of the Sequitur algorithm
193
151
  test_files:
data/.simplecov DELETED
@@ -1,7 +0,0 @@
1
- # .simplecov
2
- # Configuration
3
-
4
- SimpleCov.start do
5
- # Remove all files that match /spec/ in their path
6
- add_filter "/spec/"
7
- end
data/.travis.yml DELETED
@@ -1,29 +0,0 @@
1
- language: ruby
2
- dist: trusty
3
-
4
- before_install:
5
- - gem update --system
6
- - gem install bundler
7
-
8
- script:
9
- - bundle exec rake
10
-
11
- rvm:
12
- - 2.6.3
13
- - 2.5.5
14
- - 2.4.6
15
- - 2.3.8
16
- - ruby-head
17
- - jruby-9.1.9.0
18
- - jruby-head
19
-
20
- matrix:
21
- allow_failures:
22
- - rvm: ruby-head
23
- - rvm: jruby-head
24
-
25
-
26
- # whitelist
27
- branches:
28
- only:
29
- - master