hashery 1.5.0 → 2.0.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.
Files changed (70) hide show
  1. data/.ruby +30 -17
  2. data/.yardopts +1 -0
  3. data/Config.rb +28 -0
  4. data/{QED.rdoc → DEMO.rdoc} +0 -0
  5. data/HISTORY.rdoc +37 -0
  6. data/LICENSE.txt +26 -0
  7. data/NOTICE.txt +46 -0
  8. data/README.rdoc +10 -7
  9. data/lib/hashery.rb +6 -6
  10. data/lib/hashery.yml +30 -17
  11. data/lib/hashery/association.rb +169 -109
  12. data/lib/hashery/casting_hash.rb +128 -135
  13. data/lib/hashery/core_ext.rb +89 -61
  14. data/lib/hashery/crud_hash.rb +365 -0
  15. data/lib/hashery/dictionary.rb +545 -345
  16. data/lib/hashery/fuzzy_hash.rb +177 -125
  17. data/lib/hashery/ini_hash.rb +321 -0
  18. data/lib/hashery/key_hash.rb +54 -179
  19. data/lib/hashery/linked_list.rb +245 -191
  20. data/lib/hashery/lru_hash.rb +292 -202
  21. data/lib/hashery/open_cascade.rb +133 -78
  22. data/lib/hashery/open_hash.rb +127 -61
  23. data/lib/hashery/ordered_hash.rb +128 -122
  24. data/lib/hashery/path_hash.rb +238 -0
  25. data/lib/hashery/property_hash.rb +144 -80
  26. data/lib/hashery/query_hash.rb +85 -29
  27. data/lib/hashery/stash.rb +7 -3
  28. data/lib/hashery/static_hash.rb +46 -41
  29. data/test/case_association.rb +65 -4
  30. data/test/case_dictionary.rb +149 -5
  31. data/test/{case_keyhash.rb → case_key_hash.rb} +20 -14
  32. data/test/case_lru_hash.rb +162 -0
  33. data/test/{case_opencascade.rb → case_open_cascade.rb} +4 -8
  34. data/test/case_open_hash.rb +87 -0
  35. data/test/case_query_hash.rb +226 -0
  36. data/test/helper.rb +8 -0
  37. metadata +33 -63
  38. data/COPYING.rdoc +0 -45
  39. data/lib/hashery/basic_object.rb +0 -74
  40. data/lib/hashery/basic_struct.rb +0 -288
  41. data/lib/hashery/basicobject.rb +0 -1
  42. data/lib/hashery/basicstruct.rb +0 -1
  43. data/lib/hashery/castinghash.rb +0 -1
  44. data/lib/hashery/fuzzyhash.rb +0 -1
  45. data/lib/hashery/ini.rb +0 -268
  46. data/lib/hashery/keyhash.rb +0 -1
  47. data/lib/hashery/linkedlist.rb +0 -1
  48. data/lib/hashery/lruhash.rb +0 -1
  49. data/lib/hashery/memoizer.rb +0 -64
  50. data/lib/hashery/open_object.rb +0 -1
  51. data/lib/hashery/opencascade.rb +0 -1
  52. data/lib/hashery/openhash.rb +0 -1
  53. data/lib/hashery/openobject.rb +0 -1
  54. data/lib/hashery/orderedhash.rb +0 -1
  55. data/lib/hashery/ostructable.rb +0 -186
  56. data/lib/hashery/propertyhash.rb +0 -1
  57. data/lib/hashery/queryhash.rb +0 -1
  58. data/lib/hashery/statichash.rb +0 -1
  59. data/qed/01_openhash.rdoc +0 -57
  60. data/qed/02_queryhash.rdoc +0 -21
  61. data/qed/03_castinghash.rdoc +0 -13
  62. data/qed/04_statichash.rdoc +0 -22
  63. data/qed/05_association.rdoc +0 -59
  64. data/qed/06_opencascade.rdoc +0 -58
  65. data/qed/07_fuzzyhash.rdoc +0 -141
  66. data/qed/08_properyhash.rdoc +0 -38
  67. data/qed/09_ostructable.rdoc +0 -56
  68. data/qed/applique/ae.rb +0 -1
  69. data/test/case_basicstruct.rb +0 -192
  70. data/test/case_openhash.rb +0 -22
@@ -1 +0,0 @@
1
- require 'ae/should'
@@ -1,192 +0,0 @@
1
- require 'lemon'
2
- require 'ae'
3
- require 'ae/legacy'
4
-
5
- require 'hashery/basic_struct'
6
-
7
- testcase BasicStruct do
8
- include AE::Legacy::Assertions
9
-
10
- method :respond_to? do
11
- test do
12
- o = BasicStruct.new
13
- t = o.respond_to?(:key?)
14
- assert t
15
- end
16
- end
17
-
18
- method :is_a? do
19
- test do
20
- assert BasicStruct[{}].is_a?(Hash)
21
- assert BasicStruct[{}].is_a?(BasicStruct)
22
- end
23
- end
24
-
25
- method :[] do
26
- test "subhash access" do
27
- o = BasicStruct[:a=>1,:b=>{:x=>9}]
28
- assert( o[:b][:x] == 9 )
29
- assert( o.b[:x] == 9 )
30
- end
31
-
32
- test "indifferent key access" do
33
- o = BasicStruct["a"=>1,"b"=>{:x=>9}]
34
- assert( o["a"] == 1 )
35
- assert( o[:a] == 1 )
36
- assert( o["b"] == {:x=>9} )
37
- assert( o[:b] == {:x=>9} )
38
- assert( o["b"][:x] == 9 )
39
- assert( o[:b]["x"] == nil )
40
- end
41
- end
42
-
43
- method :[]= do
44
- test "setting first entry" do
45
- f0 = BasicStruct.new
46
- f0[:a] = 1
47
- assert( f0.to_h == {:a=>1} )
48
- end
49
-
50
- test "setting an additional entry" do
51
- f0 = BasicStruct[:a=>1]
52
- f0[:b] = 2
53
- assert( f0.to_h == {:a=>1,:b=>2} )
54
- end
55
- end
56
-
57
- method :method_missing do
58
- test "reading entries" do
59
- f0 = BasicStruct[:class=>1]
60
- assert( f0.class == 1 )
61
- end
62
-
63
- test "setting entries" do
64
- fo = BasicStruct.new
65
- 9.times{ |i| fo.__send__("n#{i}=", 1) }
66
- 9.times{ |i|
67
- assert( fo.__send__("n#{i}") == 1 )
68
- }
69
- end
70
-
71
- test "using bang" do
72
- o = BasicStruct.new
73
- o.a = 10
74
- o.b = 20
75
- h = {}
76
- o.each!{ |k,v| h[k] = v + 10 }
77
- assert( h == {:a=>20, :b=>30} )
78
- end
79
- end
80
-
81
- #method :as_hash do
82
- # test do
83
- # f0 = BasicStruct[:f0=>"f0"]
84
- # h0 = { :h0=>"h0" }
85
- # assert( BasicStruct[:f0=>"f0", :h0=>"h0"] == f0.as_hash.merge(h0) )
86
- # assert( {:f0=>"f0", :h0=>"h0"} == h0.merge(f0) )
87
- # end
88
- #end
89
-
90
- method :as_hash do
91
- test do
92
- f1 = BasicStruct[:f1=>"f1"]
93
- h1 = { :h1=>"h1" }
94
- f1.as_hash.update(h1)
95
- assert( f1 == BasicStruct[:f1=>"f1", :h1=>"h1"] )
96
- end
97
- end
98
-
99
- #method :as_hash do
100
- # test do
101
- # f1 = BasicStruct[:f1=>"f1"]
102
- # h1 = { :h1=>"h1" }
103
- # f1.as_hash.update(h1)
104
- # h1.update(f1)
105
- # assert( f1 == BasicStruct[:f1=>"f1", :h1=>"h1"] )
106
- # assert( h1 == {:f1=>"f1", :h1=>"h1"} )
107
- # end
108
- #end
109
-
110
- method :<< do
111
- test "passing a hash" do
112
- fo = BasicStruct.new
113
- fo << {:a=>1,:b=>2}
114
- assert( fo.to_h == {:a=>1, :b=>2} )
115
- end
116
-
117
- test "passing a pair" do
118
- fo = BasicStruct.new
119
- fo << [:a, 1]
120
- fo << [:b, 2]
121
- assert( fo.to_h == {:a=>1, :b=>2} )
122
- end
123
- end
124
-
125
- method :to_h do
126
- test do
127
- ho = {}
128
- fo = BasicStruct.new
129
- 5.times{ |i| ho["n#{i}".to_sym] = 1 }
130
- 5.times{ |i| fo.__send__("n#{i}=", 1) }
131
- assert( fo.to_h == ho )
132
- end
133
- test "BasicStruct within BasicStruct" do
134
- o = BasicStruct.new
135
- o.a = 10
136
- o.b = 20
137
- o.x = BasicStruct.new
138
- o.x.a = 100
139
- o.x.b = 200
140
- o.x.c = 300
141
- assert( o.to_h == {:a=>10, :b=>20, :x=>{:a=>100, :b=>200, :c=>300}} )
142
- end
143
- end
144
-
145
- method :to_proc do
146
- test do
147
- #p = Proc.new{ |x| x.word = "Hello" }
148
- o = BasicStruct[:a=>1,:b=>2]
149
- assert( Proc === o.to_proc )
150
- end
151
- end
152
-
153
- end
154
-
155
- TestCase Hash do
156
-
157
- method :to_basicstruct do
158
- test do
159
- h = {'a'=>1, 'b'=>2}
160
- o = h.to_basicstruct
161
- assert( o.a == 1 )
162
- assert( o.b == 2 )
163
- end
164
- end
165
-
166
- method :update do
167
- test "by BasicStruct" do
168
- raise NotImplementedError, "Ruby 1.8 does not know #to_hash."
169
-
170
- h1 = { :h1=>"h1" }
171
- f1 = BasicStruct[:f1=>"f1"]
172
- h1.update(f1)
173
- assert( h1 == {:f1=>"f1", :h1=>"h1"} )
174
- end
175
- end
176
-
177
- end
178
-
179
- =begin
180
- TestCase Proc do
181
-
182
- method :to_basicstruct do
183
- test do
184
- p = lambda { |x| x.word = "Hello" }
185
- o = p.to_basicstruct
186
- assert( o.word == "Hello" )
187
- end
188
- end
189
-
190
- end
191
- =end
192
-
@@ -1,22 +0,0 @@
1
- require 'lemon'
2
- require 'ae'
3
-
4
- require 'hashery/open_hash'
5
-
6
- testcase OpenHash do
7
-
8
- class_method :new do
9
- test do
10
- o = OpenHash.new(:a=>1, :b=>2)
11
- o.a.assert == 1
12
- o.b.assert == 2
13
- end
14
- test do
15
- o = OpenHash.new(:a=>1, :b=>2)
16
- o.a.assert == 1
17
- o.b.assert == 2
18
- end
19
- end
20
-
21
- end
22
-