hamsterdam 1.0.11 → 1.0.12
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.
- data/CHANGELOG +3 -0
- data/lib/hamsterdam.rb +36 -7
- data/lib/hamsterdam/clj.rb +0 -10
- data/lib/hamsterdam/version.rb +1 -1
- data/spec/hamsterdam_spec.rb +3 -3
- data/spec/spec_helper.rb +5 -0
- metadata +86 -53
- checksums.yaml +0 -7
data/CHANGELOG
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
Hamsterdam v1.0.12
|
2
|
+
* Updates to be compatible with Hamster 3.0 (doesn't work with older versions). No longer works with Ruby 1.9 due to a dependency of Hamster 3.0.
|
3
|
+
|
1
4
|
Hamsterdam v1.0.5
|
2
5
|
* Added hamsterdam/clj to allow for optionally using the Clojure PersistentHashMap isntead of a Hamster hash as the backing data structure
|
3
6
|
|
data/lib/hamsterdam.rb
CHANGED
@@ -5,19 +5,19 @@ module Hamsterdam
|
|
5
5
|
module Hamster
|
6
6
|
|
7
7
|
def self.hash(*hash)
|
8
|
-
::Hamster
|
8
|
+
::Hamster::Hash[*hash]
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.set(*values)
|
12
|
-
::Hamster
|
12
|
+
::Hamster::Set[*values]
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.list(*values)
|
16
|
-
::Hamster
|
16
|
+
::Hamster::List[*values]
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.queue(*values)
|
20
|
-
::Hamster
|
20
|
+
::Hamster::Deque[*values]
|
21
21
|
end
|
22
22
|
|
23
23
|
def self.internal_hash_class
|
@@ -25,11 +25,13 @@ module Hamsterdam
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def self.symbolize_keys(hash)
|
28
|
-
hash.reduce(hash) do |memo,
|
29
|
-
|
28
|
+
hash.entries.reduce(hash) do |memo, entry|
|
29
|
+
key = entry.first
|
30
|
+
value = entry.last
|
31
|
+
if Symbol === key
|
30
32
|
memo
|
31
33
|
else
|
32
|
-
memo.delete(
|
34
|
+
memo.delete(key).put(key.to_sym, value)
|
33
35
|
end
|
34
36
|
end
|
35
37
|
end
|
@@ -203,4 +205,31 @@ module Hamsterdam
|
|
203
205
|
end
|
204
206
|
end
|
205
207
|
end
|
208
|
+
|
209
|
+
module Hamster
|
210
|
+
class Hash
|
211
|
+
def inspect
|
212
|
+
to_hash.to_s.gsub(/=>/, " => ")
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
module List
|
217
|
+
def inspect
|
218
|
+
to_a.inspect
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
class Set
|
223
|
+
def inspect
|
224
|
+
to_a.inspect.sub(/^\[/, "{").sub(/\]$/, "}")
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
class Deque
|
229
|
+
def inspect
|
230
|
+
to_a.inspect
|
231
|
+
end
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
206
235
|
Hamsterdam.internals = Hamsterdam::Hamster
|
data/lib/hamsterdam/clj.rb
CHANGED
@@ -7,16 +7,6 @@ module Hamsterdam
|
|
7
7
|
Set = Java::ClojureLang::PersistentHashSet
|
8
8
|
Queue = Java::ClojureLang::PersistentQueue
|
9
9
|
|
10
|
-
#
|
11
|
-
# As of Java 8, PersistentHashMap#merge throws ArgumentError: wrong number of arguments (1 for 3).
|
12
|
-
# Converting away Clojure map via #to_hash, then merging, then re-Clojuring it seems to bypass this issue.
|
13
|
-
#
|
14
|
-
class Hash
|
15
|
-
def merge(a)
|
16
|
-
Hamsterdam.hash(to_hash.merge(a))
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
10
|
def self.hash(h = nil)
|
21
11
|
if h.nil?
|
22
12
|
Hash::EMPTY
|
data/lib/hamsterdam/version.rb
CHANGED
data/spec/hamsterdam_spec.rb
CHANGED
@@ -63,7 +63,7 @@ describe "Hamsterdam structures" do
|
|
63
63
|
q = Hamsterdam.queue("a", "b", "c", "d")
|
64
64
|
q.should_not be_empty
|
65
65
|
q.size.should eq(4)
|
66
|
-
q.
|
66
|
+
q.first.should == "a"
|
67
67
|
q.dequeue.to_a.should == ["b", "c", "d"]
|
68
68
|
end
|
69
69
|
end
|
@@ -248,14 +248,14 @@ describe "Hamsterdam structures" do
|
|
248
248
|
it "does a nice job with other Hamsterdam structs" do
|
249
249
|
wheel1 = Hamstest::Wheel.new x: 50, y: 100, radius: 5.0, label: "front"
|
250
250
|
wheel2 = Hamstest::Wheel.new x: 100, y: 100, radius: 5.0, label: "back"
|
251
|
-
car = Hamstest::Vehicle.new wheels: Hamster
|
251
|
+
car = Hamstest::Vehicle.new wheels: Hamster::List[wheel1, wheel2], body_style: "sedan"
|
252
252
|
expected = "<Vehicle wheels: [<Wheel x: 50 y: 100 radius: 5.0 label: \"front\">, <Wheel x: 100 y: 100 radius: 5.0 label: \"back\">] body_style: \"sedan\">"
|
253
253
|
car.inspect.should == expected
|
254
254
|
car.to_s.should == expected
|
255
255
|
end
|
256
256
|
|
257
257
|
it "does a nice job with Hamster Lists, Sets, and Hashes" do
|
258
|
-
thinger = Hamstest::Thinger.new a_hash: Hamster
|
258
|
+
thinger = Hamstest::Thinger.new a_hash: Hamster::Hash[red: "fish"], a_set: Hamster::Set[42], a_list: Hamster::List[:oh, :the, :things]
|
259
259
|
expected = "<Thinger a_hash: {:red => \"fish\"} a_set: {42} a_list: [:oh, :the, :things]>"
|
260
260
|
thinger.inspect.should == expected
|
261
261
|
thinger.to_s.should == expected
|
data/spec/spec_helper.rb
CHANGED
@@ -3,6 +3,11 @@ PROJECT_ROOT = File.expand_path(File.dirname(__FILE__) + "/..")
|
|
3
3
|
$LOAD_PATH << "#{PROJECT_ROOT}/lib"
|
4
4
|
$LOAD_PATH << "#{PROJECT_ROOT}/spec"
|
5
5
|
|
6
|
+
require 'rubygems'
|
7
|
+
require 'bundler/setup'
|
8
|
+
Bundler.require(:default)
|
9
|
+
Bundler.require(:test)
|
10
|
+
|
6
11
|
require 'simplecov' # SimpleCov must come first!
|
7
12
|
# This start/config code could alternatively go in .simplecov in project root:
|
8
13
|
SimpleCov.start do
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hamsterdam
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease:
|
5
|
+
version: 1.0.12
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- David Crosby
|
@@ -9,78 +10,96 @@ authors:
|
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date:
|
13
|
+
date: 2016-03-12 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
16
|
+
name: hamster
|
17
|
+
version_requirements: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '3.0'
|
22
|
+
none: false
|
15
23
|
requirement: !ruby/object:Gem::Requirement
|
16
24
|
requirements:
|
17
|
-
- - '>='
|
25
|
+
- - ! '>='
|
18
26
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
|
27
|
+
version: '3.0'
|
28
|
+
none: false
|
21
29
|
prerelease: false
|
22
30
|
type: :runtime
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: rake
|
23
33
|
version_requirements: !ruby/object:Gem::Requirement
|
24
34
|
requirements:
|
25
|
-
- - '>='
|
35
|
+
- - ! '>='
|
26
36
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
28
|
-
|
37
|
+
version: !binary |-
|
38
|
+
MA==
|
39
|
+
none: false
|
29
40
|
requirement: !ruby/object:Gem::Requirement
|
30
41
|
requirements:
|
31
|
-
- - '>='
|
42
|
+
- - ! '>='
|
32
43
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
-
|
44
|
+
version: !binary |-
|
45
|
+
MA==
|
46
|
+
none: false
|
35
47
|
prerelease: false
|
36
48
|
type: :development
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: rspec
|
37
51
|
version_requirements: !ruby/object:Gem::Requirement
|
38
52
|
requirements:
|
39
|
-
- - '>='
|
53
|
+
- - ! '>='
|
40
54
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
42
|
-
|
55
|
+
version: !binary |-
|
56
|
+
MA==
|
57
|
+
none: false
|
43
58
|
requirement: !ruby/object:Gem::Requirement
|
44
59
|
requirements:
|
45
|
-
- - '>='
|
60
|
+
- - ! '>='
|
46
61
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
|
62
|
+
version: !binary |-
|
63
|
+
MA==
|
64
|
+
none: false
|
49
65
|
prerelease: false
|
50
66
|
type: :development
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: simplecov
|
51
69
|
version_requirements: !ruby/object:Gem::Requirement
|
52
70
|
requirements:
|
53
|
-
- - '>='
|
71
|
+
- - ! '>='
|
54
72
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
56
|
-
|
73
|
+
version: !binary |-
|
74
|
+
MA==
|
75
|
+
none: false
|
57
76
|
requirement: !ruby/object:Gem::Requirement
|
58
77
|
requirements:
|
59
|
-
- - '>='
|
78
|
+
- - ! '>='
|
60
79
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
|
80
|
+
version: !binary |-
|
81
|
+
MA==
|
82
|
+
none: false
|
63
83
|
prerelease: false
|
64
84
|
type: :development
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: pry
|
65
87
|
version_requirements: !ruby/object:Gem::Requirement
|
66
88
|
requirements:
|
67
|
-
- - '>='
|
89
|
+
- - ! '>='
|
68
90
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
70
|
-
|
91
|
+
version: !binary |-
|
92
|
+
MA==
|
93
|
+
none: false
|
71
94
|
requirement: !ruby/object:Gem::Requirement
|
72
95
|
requirements:
|
73
|
-
- - '>='
|
96
|
+
- - ! '>='
|
74
97
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
76
|
-
|
98
|
+
version: !binary |-
|
99
|
+
MA==
|
100
|
+
none: false
|
77
101
|
prerelease: false
|
78
102
|
type: :development
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - '>='
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '0'
|
84
103
|
description: Immutable Struct-like record structures based on Hamster.
|
85
104
|
email:
|
86
105
|
- david.crosby@atomicobject.com
|
@@ -89,40 +108,54 @@ executables: []
|
|
89
108
|
extensions: []
|
90
109
|
extra_rdoc_files: []
|
91
110
|
files:
|
92
|
-
- CHANGELOG
|
93
111
|
- README.md
|
94
|
-
-
|
95
|
-
-
|
96
|
-
|
97
|
-
-
|
98
|
-
|
99
|
-
-
|
100
|
-
|
112
|
+
- CHANGELOG
|
113
|
+
- !binary |-
|
114
|
+
bGliL2hhbXN0ZXJkYW0ucmI=
|
115
|
+
- !binary |-
|
116
|
+
bGliL2hhbXN0ZXJkYW0vY2xqLnJi
|
117
|
+
- !binary |-
|
118
|
+
bGliL2hhbXN0ZXJkYW0vdmVyc2lvbi5yYg==
|
119
|
+
- !binary |-
|
120
|
+
c3BlYy9jb2xsZWN0aW9uc19zcGVjLnJi
|
121
|
+
- !binary |-
|
122
|
+
c3BlYy9oYW1zdGVyZGFtX3NwZWMucmI=
|
123
|
+
- !binary |-
|
124
|
+
c3BlYy9zcGVjX2hlbHBlci5yYg==
|
125
|
+
- !binary |-
|
126
|
+
c3BlYy9zdXBwb3J0L2hhbXN0ZXJkYW1faGVscGVycy5yYg==
|
101
127
|
homepage: https://github.com/atomicobject/hamsterdam
|
102
128
|
licenses: []
|
103
|
-
metadata: {}
|
104
129
|
post_install_message:
|
105
130
|
rdoc_options: []
|
106
131
|
require_paths:
|
107
132
|
- lib
|
108
133
|
required_ruby_version: !ruby/object:Gem::Requirement
|
109
134
|
requirements:
|
110
|
-
- - '>='
|
135
|
+
- - ! '>='
|
111
136
|
- !ruby/object:Gem::Version
|
112
|
-
version:
|
137
|
+
version: !binary |-
|
138
|
+
MA==
|
139
|
+
none: false
|
113
140
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
141
|
requirements:
|
115
|
-
- - '>='
|
142
|
+
- - ! '>='
|
116
143
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
144
|
+
version: !binary |-
|
145
|
+
MA==
|
146
|
+
none: false
|
118
147
|
requirements: []
|
119
148
|
rubyforge_project:
|
120
|
-
rubygems_version:
|
149
|
+
rubygems_version: 1.8.24
|
121
150
|
signing_key:
|
122
|
-
specification_version:
|
151
|
+
specification_version: 3
|
123
152
|
summary: Immutable Struct-like record structures based on Hamster.
|
124
153
|
test_files:
|
125
|
-
-
|
126
|
-
|
127
|
-
-
|
128
|
-
|
154
|
+
- !binary |-
|
155
|
+
c3BlYy9jb2xsZWN0aW9uc19zcGVjLnJi
|
156
|
+
- !binary |-
|
157
|
+
c3BlYy9oYW1zdGVyZGFtX3NwZWMucmI=
|
158
|
+
- !binary |-
|
159
|
+
c3BlYy9zcGVjX2hlbHBlci5yYg==
|
160
|
+
- !binary |-
|
161
|
+
c3BlYy9zdXBwb3J0L2hhbXN0ZXJkYW1faGVscGVycy5yYg==
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 46ac44d756fe02074bd23fcd6e58cbb741a062e2
|
4
|
-
data.tar.gz: a6a9636649b347d1c715dc8fb60a49b1b93a6e3b
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 8418a7690e341ae3c377aa83a5c3e5d452c27957c6000fa4cf2159293f27f55b3ede0b9371d3c5fc1194ca8c2b0a686d66f8edc6af09b984a82da4fa503a3610
|
7
|
-
data.tar.gz: 2c4ef6e353c68a4cbc33814a3b3baaf773b75c94a437ea52fde53ea691dfeb9b60e865356c95ca06c9ddb49dec47b5f929c16ea37d3b9d1614f6bd174dae7893
|