hamsterdam 1.0.9 → 1.0.10
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/lib/hamsterdam.rb +8 -0
- data/lib/hamsterdam/clj.rb +181 -46
- data/lib/hamsterdam/version.rb +1 -1
- data/spec/collections_spec.rb +137 -0
- data/spec/hamsterdam_spec.rb +15 -0
- metadata +62 -79
data/lib/hamsterdam.rb
CHANGED
@@ -16,6 +16,10 @@ module Hamsterdam
|
|
16
16
|
::Hamster.list(*values)
|
17
17
|
end
|
18
18
|
|
19
|
+
def self.queue(*values)
|
20
|
+
::Hamster.queue(*values)
|
21
|
+
end
|
22
|
+
|
19
23
|
def self.internal_hash_class
|
20
24
|
::Hamster::Hash
|
21
25
|
end
|
@@ -55,6 +59,10 @@ module Hamsterdam
|
|
55
59
|
internals.list(*values)
|
56
60
|
end
|
57
61
|
|
62
|
+
def self.queue(*values)
|
63
|
+
internals.queue(*values)
|
64
|
+
end
|
65
|
+
|
58
66
|
def self.internal_hash_class
|
59
67
|
internals.internal_hash_class
|
60
68
|
end
|
data/lib/hamsterdam/clj.rb
CHANGED
@@ -1,65 +1,34 @@
|
|
1
1
|
|
2
|
-
class Java::ClojureLang::PersistentHashMap
|
3
|
-
alias_method :put, :assoc
|
4
|
-
alias_method :delete, :without
|
5
|
-
alias_method :==, :equals
|
6
|
-
end
|
7
|
-
|
8
|
-
# java_import 'clojure.lang.PersistentList$EmptyList'
|
9
|
-
# class EmptyList
|
10
|
-
# def inspect
|
11
|
-
# to_a.inspect
|
12
|
-
# end
|
13
|
-
# end
|
14
|
-
#
|
15
|
-
# class Java::ClojureLang::PersistentList
|
16
|
-
# def inspect
|
17
|
-
# to_a.inspect
|
18
|
-
# end
|
19
|
-
# end
|
20
|
-
#
|
21
|
-
# class Java::ClojureLang::PersistentHashSet
|
22
|
-
# def inspect
|
23
|
-
# to_set.inspect
|
24
|
-
# end
|
25
|
-
#
|
26
|
-
# def -(other)
|
27
|
-
# reject { |e| other.include?(e) }
|
28
|
-
# end
|
29
|
-
#
|
30
|
-
# alias_method :add, :cons
|
31
|
-
# end
|
32
|
-
|
33
2
|
module Hamsterdam
|
34
3
|
module Clojure
|
4
|
+
java_import 'clojure.lang.PersistentList$EmptyList'
|
5
|
+
List = Java::ClojureLang::PersistentList
|
6
|
+
Hash = Java::ClojureLang::PersistentHashMap
|
7
|
+
Set = Java::ClojureLang::PersistentHashSet
|
8
|
+
Queue = Java::ClojureLang::PersistentQueue
|
9
|
+
|
35
10
|
def self.hash(h = nil)
|
36
11
|
if h.nil?
|
37
|
-
|
12
|
+
Hash::EMPTY
|
38
13
|
else
|
39
|
-
|
14
|
+
Hash.create(h)
|
40
15
|
end
|
41
16
|
end
|
42
17
|
|
43
18
|
def self.internal_hash_class
|
44
|
-
|
19
|
+
Hash
|
45
20
|
end
|
46
21
|
|
47
|
-
# def self.set(*values)
|
48
|
-
# Java::ClojureLang::PersistentHashSet.create(values)
|
49
|
-
# end
|
50
|
-
|
51
|
-
# def self.list(*values)
|
52
|
-
# values.reverse.inject(Java::ClojureLang::PersistentList::EMPTY) do |list, value|
|
53
|
-
# list.cons(value)
|
54
|
-
# end
|
55
|
-
# end
|
56
|
-
|
57
22
|
def self.set(*values)
|
58
|
-
|
23
|
+
Set.create(values)
|
59
24
|
end
|
60
25
|
|
61
26
|
def self.list(*values)
|
62
|
-
|
27
|
+
List.create(values).pop
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.queue(*values)
|
31
|
+
Queue.create(values)
|
63
32
|
end
|
64
33
|
|
65
34
|
def self.symbolize_keys(hash)
|
@@ -74,4 +43,170 @@ module Hamsterdam
|
|
74
43
|
end
|
75
44
|
end
|
76
45
|
|
46
|
+
class Hamsterdam::Clojure::Hash
|
47
|
+
alias_method :put, :assoc
|
48
|
+
alias_method :delete, :without
|
49
|
+
alias_method :==, :equals
|
50
|
+
end
|
51
|
+
|
52
|
+
class Hamsterdam::Clojure::Queue
|
53
|
+
alias_method :dequeue, :pop
|
54
|
+
alias_method :enqueue, :cons
|
55
|
+
|
56
|
+
def inspect
|
57
|
+
to_a.inspect
|
58
|
+
end
|
59
|
+
|
60
|
+
def self.create(values)
|
61
|
+
values.inject(Hamsterdam::Clojure::Queue::EMPTY) do |queue, val|
|
62
|
+
queue.cons(val)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
class Hamsterdam::Clojure::EmptyList
|
68
|
+
def inspect
|
69
|
+
"[]"
|
70
|
+
end
|
71
|
+
|
72
|
+
alias_method :to_ary, :to_a
|
73
|
+
|
74
|
+
def reverse
|
75
|
+
self
|
76
|
+
end
|
77
|
+
|
78
|
+
def reject(&block)
|
79
|
+
self
|
80
|
+
end
|
81
|
+
|
82
|
+
def reduce(initial)
|
83
|
+
initial
|
84
|
+
end
|
85
|
+
|
86
|
+
def map
|
87
|
+
self
|
88
|
+
end
|
89
|
+
|
90
|
+
def compact
|
91
|
+
self
|
92
|
+
end
|
93
|
+
|
94
|
+
def to_set
|
95
|
+
Java::ClojureLang::PersistentHashSet::EMPTY
|
96
|
+
end
|
97
|
+
|
98
|
+
def flatten
|
99
|
+
self
|
100
|
+
end
|
101
|
+
|
102
|
+
def uniq
|
103
|
+
self
|
104
|
+
end
|
105
|
+
|
106
|
+
def last
|
107
|
+
nil
|
108
|
+
end
|
109
|
+
|
110
|
+
def delete(entry)
|
111
|
+
self
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
class Hamsterdam::Clojure::List
|
116
|
+
|
117
|
+
def inspect
|
118
|
+
to_a.inspect
|
119
|
+
end
|
120
|
+
|
121
|
+
alias_method :to_ary, :to_a
|
122
|
+
|
123
|
+
def reverse
|
124
|
+
make_list to_a.reverse
|
125
|
+
end
|
126
|
+
|
127
|
+
def reject(&block)
|
128
|
+
make_list to_a.reject(&block)
|
129
|
+
end
|
130
|
+
|
131
|
+
def flatten
|
132
|
+
make_list to_a.flatten
|
133
|
+
end
|
134
|
+
|
135
|
+
def uniq
|
136
|
+
make_list to_a.uniq
|
137
|
+
end
|
138
|
+
|
139
|
+
def last
|
140
|
+
to_a.reverse.first
|
141
|
+
end
|
142
|
+
|
143
|
+
def compact
|
144
|
+
reject { |e| e.nil? }
|
145
|
+
end
|
146
|
+
|
147
|
+
def reduce(initial, &block)
|
148
|
+
to_a.inject(initial, &block)
|
149
|
+
end
|
150
|
+
alias_method :inject, :reduce
|
151
|
+
|
152
|
+
def map(&block)
|
153
|
+
make_list to_a.map(&block)
|
154
|
+
end
|
155
|
+
|
156
|
+
def delete(entry)
|
157
|
+
reject { |i| i == entry }
|
158
|
+
end
|
159
|
+
|
160
|
+
def to_set
|
161
|
+
Hamsterdam::Clojure::Set.create(to_a)
|
162
|
+
end
|
163
|
+
|
164
|
+
private
|
165
|
+
def make_list(array)
|
166
|
+
Hamsterdam::Clojure::List.create(array).pop
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
class Hamsterdam::Clojure::Set
|
171
|
+
|
172
|
+
def inspect
|
173
|
+
to_a.inspect.sub(/^\[/, "{").sub(/\]$/, "}")
|
174
|
+
end
|
175
|
+
|
176
|
+
def reject(&block)
|
177
|
+
make_set to_a.reject(&block)
|
178
|
+
end
|
179
|
+
|
180
|
+
def subtract(enumerable)
|
181
|
+
reject { |e| enumerable.include?(e) }
|
182
|
+
end
|
183
|
+
|
184
|
+
def reduce(initial, &block)
|
185
|
+
to_a.inject(initial, &block)
|
186
|
+
end
|
187
|
+
|
188
|
+
def map(&block)
|
189
|
+
make_set to_a.map(&block)
|
190
|
+
end
|
191
|
+
|
192
|
+
def flatten
|
193
|
+
make_set to_a.flatten
|
194
|
+
end
|
195
|
+
|
196
|
+
def compact
|
197
|
+
reject { |e| e.nil? }
|
198
|
+
end
|
199
|
+
|
200
|
+
alias_method :delete, :disjoin
|
201
|
+
alias_method :to_ary, :to_a
|
202
|
+
alias_method :add, :cons
|
203
|
+
alias_method :-, :subtract
|
204
|
+
alias_method :inject, :reduce
|
205
|
+
|
206
|
+
private
|
207
|
+
def make_set(array)
|
208
|
+
Hamsterdam::Clojure::Set.create(array)
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
77
212
|
Hamsterdam.internals = Hamsterdam::Clojure
|
data/lib/hamsterdam/version.rb
CHANGED
@@ -0,0 +1,137 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Hamsterdam's immutable persistent data structures" do
|
4
|
+
|
5
|
+
describe "list" do
|
6
|
+
describe "an empty list" do
|
7
|
+
subject { Hamsterdam.list }
|
8
|
+
|
9
|
+
it "is a conforming empty list" do
|
10
|
+
subject.should == subject
|
11
|
+
subject.inspect.should == "[]"
|
12
|
+
subject.reverse.should == subject
|
13
|
+
subject.cons(1).should == Hamsterdam.list(1)
|
14
|
+
subject.reject { |i| i % 2 == 0 }.should == subject
|
15
|
+
subject.reduce(0) { |total, i| total + i }.should == 0
|
16
|
+
subject.map { |i| i+1 }.should == subject
|
17
|
+
subject.compact.should == subject
|
18
|
+
subject.flatten.should == subject
|
19
|
+
subject.uniq.should == subject
|
20
|
+
subject.last.should == nil
|
21
|
+
subject.to_a.should == []
|
22
|
+
subject.to_ary.should == []
|
23
|
+
subject.to_set.should == Hamsterdam.set
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "a populated list" do
|
28
|
+
subject { Hamsterdam.list("a", "b", "c") }
|
29
|
+
|
30
|
+
it "is a conforming list" do
|
31
|
+
subject.should == subject
|
32
|
+
|
33
|
+
subject.to_ary.should == ["a", "b", "c"]
|
34
|
+
subject.to_a.should == ["a", "b", "c"]
|
35
|
+
subject.cons("d").should == Hamsterdam.list("d", "a", "b", "c")
|
36
|
+
subject.inspect.should == ["a", "b", "c"].inspect
|
37
|
+
subject.reverse.should == Hamsterdam.list("c", "b", "a")
|
38
|
+
subject.reject { |char| char == "b" }.should == Hamsterdam.list("a", "c")
|
39
|
+
subject.cons(Hamsterdam.list("d")).flatten.should == Hamsterdam.list("d", "a", "b", "c")
|
40
|
+
subject.cons("a").uniq.should == subject
|
41
|
+
subject.last.should == "c"
|
42
|
+
subject.cons(nil).compact.should == subject
|
43
|
+
subject.reduce("Word: ") { |str, char| "#{str}#{char}"}.should == "Word: abc"
|
44
|
+
subject.inject("Word: ") { |str, char| "#{str}#{char}"}.should == "Word: abc"
|
45
|
+
subject.map { |char| "#{char}!" }.should == Hamsterdam.list("a!", "b!", "c!")
|
46
|
+
subject.to_set.should == Hamsterdam.set("a", "b", "c")
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "set" do
|
52
|
+
describe "an empty set" do
|
53
|
+
subject { Hamsterdam.set }
|
54
|
+
|
55
|
+
it "is a conforming empty set" do
|
56
|
+
subject.should == subject
|
57
|
+
subject.inspect.should == "{}"
|
58
|
+
subject.reject { |i| i % 2 == 0 }.should == subject
|
59
|
+
(subject - [1,2,3]).should == subject
|
60
|
+
subject.add("a").should == Hamsterdam.set("a")
|
61
|
+
subject.reduce(0) { |total, i| total + i }.should == 0
|
62
|
+
subject.map { |i| i+1 }.should == subject
|
63
|
+
subject.compact.should == subject
|
64
|
+
subject.flatten.should == subject
|
65
|
+
subject.delete("a").should == subject
|
66
|
+
subject.to_a.should == []
|
67
|
+
subject.to_ary.should == []
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe "a populated set" do
|
72
|
+
subject { Hamsterdam.set("a", "b", "c", "a") }
|
73
|
+
|
74
|
+
it "is a conforming list" do
|
75
|
+
subject.should == subject
|
76
|
+
|
77
|
+
subject.add("d").should == Hamsterdam.set("d", "a", "b", "c")
|
78
|
+
subject.inspect.should =~ /^\{"(a|b|c)", "(a|b|c)", "(a|b|c)"\}$/
|
79
|
+
subject.reject { |char| char == "b" }.should == Hamsterdam.set("a", "c")
|
80
|
+
(subject - ["c", "a"]).should == Hamsterdam.set("b")
|
81
|
+
subject.add(Hamsterdam.set("d")).flatten.should == Hamsterdam.set("d", "a", "b", "c")
|
82
|
+
subject.add(nil).compact.should == subject
|
83
|
+
subject.reduce("Word: ") { |str, char| "#{str}#{char}"}.should =~ /^Word: (a|b|c)(a|b|c)(a|b|c)$/
|
84
|
+
subject.inject("Word: ") { |str, char| "#{str}#{char}"}.should =~ /^Word: (a|b|c)(a|b|c)(a|b|c)$/
|
85
|
+
subject.map { |char| "#{char}!" }.should == Hamsterdam.set("a!", "b!", "c!")
|
86
|
+
subject.to_ary.sort.should == ["a", "b", "c"]
|
87
|
+
subject.to_a.sort.should == ["a", "b", "c"]
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "hash" do
|
93
|
+
describe "an empty hash" do
|
94
|
+
subject { Hamsterdam.hash}
|
95
|
+
|
96
|
+
it "is a conforming empty hash" do
|
97
|
+
subject.should == subject
|
98
|
+
subject.put("hey", "now").should == Hamsterdam.hash("hey" => "now")
|
99
|
+
subject.delete("hey").should == subject
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe "a populated hash" do
|
104
|
+
subject { Hamsterdam.hash(foo: "a", bar: "b", qux: "c") }
|
105
|
+
|
106
|
+
it "is a confirming populated hash" do
|
107
|
+
subject.should == subject
|
108
|
+
subject.put(:foot, "bart").should == Hamsterdam.hash(foo: "a", bar: "b", qux: "c", foot: "bart")
|
109
|
+
subject.delete(:bar).should == Hamsterdam.hash(foo: "a", qux: "c")
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe "queue" do
|
115
|
+
describe "an empty queue" do
|
116
|
+
subject { Hamsterdam.queue }
|
117
|
+
|
118
|
+
it "is a conforming empty queue" do
|
119
|
+
subject.should == subject
|
120
|
+
subject.inspect.should == [].inspect
|
121
|
+
subject.dequeue.should == subject
|
122
|
+
subject.enqueue("a").should == Hamsterdam.queue("a")
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
describe "a populated queue" do
|
127
|
+
subject { Hamsterdam.queue("a", "b", "c") }
|
128
|
+
|
129
|
+
it "is a conforming populated queue" do
|
130
|
+
subject.should == subject
|
131
|
+
subject.inspect.should == ["a", "b", "c"].inspect
|
132
|
+
subject.dequeue.should == Hamsterdam.queue("b", "c")
|
133
|
+
subject.enqueue("d").should == Hamsterdam.queue("a", "b", "c", "d")
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
data/spec/hamsterdam_spec.rb
CHANGED
@@ -52,6 +52,21 @@ describe "Hamsterdam structures" do
|
|
52
52
|
l.to_a.should == ["a", "b", "c", "a"]
|
53
53
|
end
|
54
54
|
end
|
55
|
+
|
56
|
+
describe "#queue" do
|
57
|
+
it "provides an empty queue" do
|
58
|
+
q = Hamsterdam.queue
|
59
|
+
q.should be_empty
|
60
|
+
end
|
61
|
+
|
62
|
+
it "provides a queue populated with passed values" do
|
63
|
+
q = Hamsterdam.queue("a", "b", "c", "d")
|
64
|
+
q.should_not be_empty
|
65
|
+
q.should have(4).items
|
66
|
+
q.peek.should == "a"
|
67
|
+
q.dequeue.to_a.should == ["b", "c", "d"]
|
68
|
+
end
|
69
|
+
end
|
55
70
|
end
|
56
71
|
|
57
72
|
describe "Struct.define" do
|
metadata
CHANGED
@@ -1,163 +1,146 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hamsterdam
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
4
|
+
version: 1.0.10
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- David Crosby
|
9
|
-
|
9
|
+
- Patrick Bacon
|
10
|
+
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date: 2013-
|
13
|
+
date: 2013-08-21 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: hamster
|
16
|
-
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
17
19
|
requirements:
|
18
20
|
- - ! '>='
|
19
21
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
21
|
-
|
22
|
+
version: '0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
26
|
none: false
|
23
|
-
requirement: !ruby/object:Gem::Requirement
|
24
27
|
requirements:
|
25
28
|
- - ! '>='
|
26
29
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
28
|
-
MA==
|
29
|
-
none: false
|
30
|
-
prerelease: false
|
31
|
-
type: :runtime
|
30
|
+
version: '0'
|
32
31
|
- !ruby/object:Gem::Dependency
|
33
32
|
name: rake
|
34
|
-
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
35
|
requirements:
|
36
36
|
- - ! '>='
|
37
37
|
- !ruby/object:Gem::Version
|
38
|
-
version:
|
39
|
-
|
38
|
+
version: '0'
|
39
|
+
type: :development
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
42
|
none: false
|
41
|
-
requirement: !ruby/object:Gem::Requirement
|
42
43
|
requirements:
|
43
44
|
- - ! '>='
|
44
45
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
46
|
-
MA==
|
47
|
-
none: false
|
48
|
-
prerelease: false
|
49
|
-
type: :development
|
46
|
+
version: '0'
|
50
47
|
- !ruby/object:Gem::Dependency
|
51
48
|
name: rspec
|
52
|
-
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
53
51
|
requirements:
|
54
52
|
- - ! '>='
|
55
53
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
57
|
-
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
58
|
none: false
|
59
|
-
requirement: !ruby/object:Gem::Requirement
|
60
59
|
requirements:
|
61
60
|
- - ! '>='
|
62
61
|
- !ruby/object:Gem::Version
|
63
|
-
version:
|
64
|
-
MA==
|
65
|
-
none: false
|
66
|
-
prerelease: false
|
67
|
-
type: :development
|
62
|
+
version: '0'
|
68
63
|
- !ruby/object:Gem::Dependency
|
69
64
|
name: simplecov
|
70
|
-
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
71
67
|
requirements:
|
72
68
|
- - ! '>='
|
73
69
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
75
|
-
|
70
|
+
version: '0'
|
71
|
+
type: :development
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
76
74
|
none: false
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
78
75
|
requirements:
|
79
76
|
- - ! '>='
|
80
77
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
82
|
-
MA==
|
83
|
-
none: false
|
84
|
-
prerelease: false
|
85
|
-
type: :development
|
78
|
+
version: '0'
|
86
79
|
- !ruby/object:Gem::Dependency
|
87
80
|
name: pry
|
88
|
-
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
89
83
|
requirements:
|
90
84
|
- - ! '>='
|
91
85
|
- !ruby/object:Gem::Version
|
92
|
-
version:
|
93
|
-
|
86
|
+
version: '0'
|
87
|
+
type: :development
|
88
|
+
prerelease: false
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
90
|
none: false
|
95
|
-
requirement: !ruby/object:Gem::Requirement
|
96
91
|
requirements:
|
97
92
|
- - ! '>='
|
98
93
|
- !ruby/object:Gem::Version
|
99
|
-
version:
|
100
|
-
MA==
|
101
|
-
none: false
|
102
|
-
prerelease: false
|
103
|
-
type: :development
|
94
|
+
version: '0'
|
104
95
|
description: Immutable Struct-like record structures based on Hamster.
|
105
96
|
email:
|
106
97
|
- david.crosby@atomicobject.com
|
98
|
+
- bacon@atomicobject.com
|
107
99
|
executables: []
|
108
100
|
extensions: []
|
109
101
|
extra_rdoc_files: []
|
110
102
|
files:
|
111
103
|
- README.md
|
112
104
|
- CHANGELOG
|
113
|
-
-
|
114
|
-
|
115
|
-
-
|
116
|
-
|
117
|
-
-
|
118
|
-
|
119
|
-
-
|
120
|
-
c3BlYy9oYW1zdGVyZGFtX3NwZWMucmI=
|
121
|
-
- !binary |-
|
122
|
-
c3BlYy9zcGVjX2hlbHBlci5yYg==
|
123
|
-
- !binary |-
|
124
|
-
c3BlYy9zdXBwb3J0L2hhbXN0ZXJkYW1faGVscGVycy5yYg==
|
105
|
+
- lib/hamsterdam/clj.rb
|
106
|
+
- lib/hamsterdam/version.rb
|
107
|
+
- lib/hamsterdam.rb
|
108
|
+
- spec/collections_spec.rb
|
109
|
+
- spec/hamsterdam_spec.rb
|
110
|
+
- spec/spec_helper.rb
|
111
|
+
- spec/support/hamsterdam_helpers.rb
|
125
112
|
homepage: https://github.com/atomicobject/hamsterdam
|
126
113
|
licenses: []
|
127
|
-
post_install_message:
|
114
|
+
post_install_message:
|
128
115
|
rdoc_options: []
|
129
116
|
require_paths:
|
130
117
|
- lib
|
131
118
|
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
132
120
|
requirements:
|
133
121
|
- - ! '>='
|
134
122
|
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
135
124
|
segments:
|
136
125
|
- 0
|
137
|
-
hash:
|
138
|
-
version: !binary |-
|
139
|
-
MA==
|
140
|
-
none: false
|
126
|
+
hash: -1856113987643234250
|
141
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
142
129
|
requirements:
|
143
130
|
- - ! '>='
|
144
131
|
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
145
133
|
segments:
|
146
134
|
- 0
|
147
|
-
hash:
|
148
|
-
version: !binary |-
|
149
|
-
MA==
|
150
|
-
none: false
|
135
|
+
hash: -1856113987643234250
|
151
136
|
requirements: []
|
152
|
-
rubyforge_project:
|
153
|
-
rubygems_version: 1.8.
|
154
|
-
signing_key:
|
137
|
+
rubyforge_project:
|
138
|
+
rubygems_version: 1.8.25
|
139
|
+
signing_key:
|
155
140
|
specification_version: 3
|
156
141
|
summary: Immutable Struct-like record structures based on Hamster.
|
157
142
|
test_files:
|
158
|
-
-
|
159
|
-
|
160
|
-
-
|
161
|
-
|
162
|
-
- !binary |-
|
163
|
-
c3BlYy9zdXBwb3J0L2hhbXN0ZXJkYW1faGVscGVycy5yYg==
|
143
|
+
- spec/collections_spec.rb
|
144
|
+
- spec/hamsterdam_spec.rb
|
145
|
+
- spec/spec_helper.rb
|
146
|
+
- spec/support/hamsterdam_helpers.rb
|