octothorpe 0.1.2 → 0.2.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.
- checksums.yaml +4 -4
- data/.hgignore +1 -0
- data/.hgtags +1 -0
- data/lib/octothorpe.rb +30 -1
- data/spec/octothorpe_spec.rb +58 -5
- data/spec/spec_helper.rb +3 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44e56895848bd74e1a1c1e0fce48dd52d529bac4
|
4
|
+
data.tar.gz: d930fc76de139a233b1b9695d4f1881fb545168a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5fed196557a740921eded0a1ee32e7e2d92400a35a0498db54d98f895bc2af3f2e5cd6085bba9709526f624553ca93aad8041e3633fd711470d788524fd0761
|
7
|
+
data.tar.gz: c0909d019f3509d7a8ab001d470652a0d1929bc67fbb9e9a2d3f3990133bc8d068cd9c5d8e976d01f747b06ba41be5e900b362d268f00f7393f4be464dc1440b
|
data/.hgignore
CHANGED
data/.hgtags
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
a17ae5a3dedd4d2b74b0840a7161e153efd72741 0.2.0
|
data/lib/octothorpe.rb
CHANGED
@@ -32,6 +32,7 @@ require 'forwardable'
|
|
32
32
|
# empty?, has_key?, has_value?, include?
|
33
33
|
# each, each_key, each_value, keys, values
|
34
34
|
# select, map, reject, inject
|
35
|
+
# merge, <, >
|
35
36
|
#
|
36
37
|
class Octothorpe
|
37
38
|
extend Forwardable
|
@@ -41,7 +42,7 @@ class Octothorpe
|
|
41
42
|
def_delegators :@inner_hash, :select, :map, :reject, :inject
|
42
43
|
|
43
44
|
# Gem version number
|
44
|
-
VERSION = '0.
|
45
|
+
VERSION = '0.2.0'
|
45
46
|
|
46
47
|
|
47
48
|
# Generic Octothorpe error class
|
@@ -177,6 +178,34 @@ class Octothorpe
|
|
177
178
|
end
|
178
179
|
|
179
180
|
|
181
|
+
##
|
182
|
+
# Return true if this OT is a subset of the given OT or Hash
|
183
|
+
#
|
184
|
+
def <(other)
|
185
|
+
thisHash = @store.octothorpe_store.to_h
|
186
|
+
otherHash = symbol_hash(other)
|
187
|
+
thisHash < otherHash
|
188
|
+
end
|
189
|
+
|
190
|
+
|
191
|
+
##
|
192
|
+
# Return true if this OT is a superset of the given OT or Hash
|
193
|
+
#
|
194
|
+
def >(other)
|
195
|
+
thisHash = @store.octothorpe_store.to_h
|
196
|
+
otherHash = symbol_hash(other)
|
197
|
+
thisHash > otherHash
|
198
|
+
end
|
199
|
+
|
200
|
+
|
201
|
+
##
|
202
|
+
# Inspect exposes a view of the inner hash
|
203
|
+
#
|
204
|
+
def inspect
|
205
|
+
"#<Octothorpe#{@store.octothorpe_store.inspect}>"
|
206
|
+
end
|
207
|
+
|
208
|
+
|
180
209
|
private
|
181
210
|
|
182
211
|
|
data/spec/octothorpe_spec.rb
CHANGED
@@ -4,9 +4,11 @@ describe Octothorpe do
|
|
4
4
|
|
5
5
|
|
6
6
|
before do
|
7
|
-
@hash
|
8
|
-
@hash2
|
9
|
-
@ot
|
7
|
+
@hash = {one: 'a', 'two' => 2, dup: 3, "weird key" => 4}
|
8
|
+
@hash2 = @hash.each_with_object({}) {|(k,v),m| m[k.to_sym] = v }
|
9
|
+
@ot = Octothorpe.new(@hash)
|
10
|
+
@subset = @hash.reject{|k,_| k == :dup }
|
11
|
+
@superset = @hash.dup; @superset[:extra] = 42
|
10
12
|
end
|
11
13
|
|
12
14
|
|
@@ -41,8 +43,8 @@ describe Octothorpe do
|
|
41
43
|
end
|
42
44
|
|
43
45
|
it "throws an exception if passed a parameter or block" do
|
44
|
-
expect{ @ot.>>.
|
45
|
-
expect{ @ot.>>.
|
46
|
+
expect{ @ot.>>.two(1) }.to raise_exception NoMethodError
|
47
|
+
expect{ @ot.>>.two{|x| puts x} }.to raise_exception NoMethodError
|
46
48
|
end
|
47
49
|
|
48
50
|
end
|
@@ -161,6 +163,56 @@ describe Octothorpe do
|
|
161
163
|
end
|
162
164
|
|
163
165
|
|
166
|
+
describe "#>" do
|
167
|
+
|
168
|
+
context 'when passed a hash' do
|
169
|
+
it 'returns true for a subset' do
|
170
|
+
expect( @ot > @subset ).to eq true
|
171
|
+
end
|
172
|
+
|
173
|
+
it 'returns false for a superset' do
|
174
|
+
expect( @ot > @superset ).to eq false
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
context 'when passed an OT' do
|
179
|
+
it 'returns true for a subset' do
|
180
|
+
expect( @ot > Octothorpe.new(@subset) ).to eq true
|
181
|
+
end
|
182
|
+
|
183
|
+
it 'returns false for a superset' do
|
184
|
+
expect( @ot > Octothorpe.new(@superset) ).to eq false
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
end
|
189
|
+
|
190
|
+
|
191
|
+
describe '#<' do
|
192
|
+
|
193
|
+
context 'when passed a hash' do
|
194
|
+
it 'returns false for a subset' do
|
195
|
+
expect( @ot < @subset ).to eq false
|
196
|
+
end
|
197
|
+
|
198
|
+
it 'returns true for a superset' do
|
199
|
+
expect( @ot < @superset ).to eq true
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
context 'when passed an OT' do
|
204
|
+
it 'returns false for a subset' do
|
205
|
+
expect( @ot < Octothorpe.new(@subset) ).to eq false
|
206
|
+
end
|
207
|
+
|
208
|
+
it 'returns true for a superset' do
|
209
|
+
expect( @ot < Octothorpe.new(@superset) ).to eq true
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
end
|
214
|
+
|
215
|
+
|
164
216
|
describe "(miscelaneous other stuff)" do
|
165
217
|
# I "imagine" that the actual class uses Forwardable, but the test code
|
166
218
|
# shouldn't know or care about that. In any case, just testing with
|
@@ -178,6 +230,7 @@ describe Octothorpe do
|
|
178
230
|
|
179
231
|
expect( @ot.include?(:two) ).to eq true
|
180
232
|
expect( @ot.include?(:foo) ).not_to eq true
|
233
|
+
|
181
234
|
end
|
182
235
|
|
183
236
|
it "behaves like a hash for a bunch of methods that return an array" do
|
data/spec/spec_helper.rb
CHANGED
@@ -18,6 +18,9 @@ RSpec.configure do |config|
|
|
18
18
|
# rspec-expectations config goes here. You can use an alternate
|
19
19
|
# assertion/expectation library such as wrong or the stdlib/minitest
|
20
20
|
# assertions if you prefer.
|
21
|
+
config.filter_run :focus
|
22
|
+
config.run_all_when_everything_filtered = true
|
23
|
+
|
21
24
|
config.expect_with :rspec do |expectations|
|
22
25
|
# This option will default to `true` in RSpec 4. It makes the `description`
|
23
26
|
# and `failure_message` of custom matchers include text for helper methods
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: octothorpe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Jones
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -94,6 +94,7 @@ extensions: []
|
|
94
94
|
extra_rdoc_files: []
|
95
95
|
files:
|
96
96
|
- ".hgignore"
|
97
|
+
- ".hgtags"
|
97
98
|
- ".rspec"
|
98
99
|
- Gemfile
|
99
100
|
- LICENSE.txt
|