hamsterdam 1.0.9 → 1.0.10
Sign up to get free protection for your applications and to get access to all the features.
- 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
|