strokedb 0.0.2 → 0.0.2.1
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/init.rb +1 -1
- data/lib/util/lazy_mapping_array.rb +95 -16
- data/lib/util/lazy_mapping_hash.rb +27 -21
- metadata +2 -2
data/lib/init.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module StrokeDB
|
2
|
-
VERSION = '0.0.2' + (RUBY_PLATFORM =~ /java/ ? '-java' : '')
|
2
|
+
VERSION = '0.0.2.1' + (RUBY_PLATFORM =~ /java/ ? '-java' : '')
|
3
3
|
|
4
4
|
# UUID regexp (like 1e3d02cc-0769-4bd8-9113-e033b246b013)
|
5
5
|
UUID_RE = /([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})/
|
@@ -20,7 +20,7 @@ module StrokeDB
|
|
20
20
|
#
|
21
21
|
# when model collection item is fetched, reference followed and turned into document
|
22
22
|
# instance with mapping proc of lazy mapping array.
|
23
|
-
class LazyMappingArray <
|
23
|
+
class LazyMappingArray < Array
|
24
24
|
def initialize(*args)
|
25
25
|
@map_proc = proc {|v| v}
|
26
26
|
@unmap_proc = proc {|v| v}
|
@@ -37,28 +37,107 @@ module StrokeDB
|
|
37
37
|
self
|
38
38
|
end
|
39
39
|
|
40
|
-
|
41
|
-
|
40
|
+
alias :_square_brackets :[]
|
41
|
+
def [](*args)
|
42
|
+
r = _square_brackets(*args)
|
43
|
+
if (args.first.is_a?(Range) || args.size == 2) && r.is_a?(Array)
|
44
|
+
LazyMappingArray.new(r).map_with(&@map_proc).unmap_with(&@unmap_proc)
|
45
|
+
else
|
46
|
+
@map_proc.call(r)
|
47
|
+
end
|
42
48
|
end
|
49
|
+
alias :slice :[]
|
43
50
|
|
44
|
-
|
45
|
-
|
46
|
-
|
51
|
+
alias :_square_brackets_set :[]=
|
52
|
+
def []=(*args)
|
53
|
+
value = args.pop
|
54
|
+
if (args.first.is_a?(Range) || args.size == 2) && value.is_a?(Array)
|
55
|
+
args << value.map{|e| @unmap_proc.call(e) }
|
56
|
+
_square_brackets_set(*args)
|
57
|
+
else
|
58
|
+
_square_brackets_set(args[0], @unmap_proc.call(value))
|
59
|
+
end
|
60
|
+
end
|
47
61
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
args.push last
|
62
|
+
alias :_at :at
|
63
|
+
def at(index)
|
64
|
+
@map_proc.call(_at(index))
|
65
|
+
end
|
53
66
|
|
54
|
-
|
67
|
+
def first
|
68
|
+
at(0)
|
69
|
+
end
|
55
70
|
|
56
|
-
|
57
|
-
|
71
|
+
def last
|
72
|
+
at(size-1)
|
73
|
+
end
|
58
74
|
|
59
|
-
|
60
|
-
|
75
|
+
alias :_each :each
|
76
|
+
def each
|
77
|
+
_each do |val|
|
78
|
+
yield @map_proc.call(val)
|
61
79
|
end
|
62
80
|
end
|
81
|
+
|
82
|
+
alias :_map :map
|
83
|
+
def map
|
84
|
+
_map do |val|
|
85
|
+
yield @map_proc.call(val)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
alias :_zip :zip
|
90
|
+
def zip(*args)
|
91
|
+
map{|v|v}.zip(*args)
|
92
|
+
end
|
93
|
+
|
94
|
+
alias :_push :push
|
95
|
+
def push(value)
|
96
|
+
_push(@unmap_proc.call(value))
|
97
|
+
end
|
98
|
+
alias :<< :push
|
99
|
+
|
100
|
+
alias :_unshift :unshift
|
101
|
+
def unshift(value)
|
102
|
+
_unshift(@unmap_proc.call(value))
|
103
|
+
end
|
104
|
+
|
105
|
+
alias :_pop :pop
|
106
|
+
def pop
|
107
|
+
@map_proc.call(_pop)
|
108
|
+
end
|
109
|
+
|
110
|
+
alias :_shift :shift
|
111
|
+
def shift
|
112
|
+
@map_proc.call(_shift)
|
113
|
+
end
|
114
|
+
|
115
|
+
alias :_find :find
|
116
|
+
def find
|
117
|
+
_find {|value| yield(@map_proc.call(value))}
|
118
|
+
end
|
119
|
+
|
120
|
+
alias :_index :index
|
121
|
+
def index(v)
|
122
|
+
_index(@unmap_proc.call(v))
|
123
|
+
end
|
124
|
+
|
125
|
+
alias :_substract :-
|
126
|
+
def -(a)
|
127
|
+
_substract(a.map {|v| @unmap_proc.call(v) })
|
128
|
+
end
|
129
|
+
|
130
|
+
alias :_include? :include?
|
131
|
+
def include?(v)
|
132
|
+
_include?(@unmap_proc.call(v))
|
133
|
+
end
|
134
|
+
|
135
|
+
def to_a
|
136
|
+
Array.new(map{|v| v})
|
137
|
+
end
|
138
|
+
|
139
|
+
def class
|
140
|
+
Array
|
141
|
+
end
|
63
142
|
end
|
64
143
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
module StrokeDB
|
2
|
-
class LazyMappingHash <
|
2
|
+
class LazyMappingHash < Hash
|
3
3
|
def initialize(original = {}, decoder = nil, encoder = nil)
|
4
4
|
@decoder = decoder || proc {|v| v}
|
5
5
|
@encoder = encoder || proc {|v| v}
|
6
6
|
super(default)
|
7
|
-
original.each {|k,v| self
|
7
|
+
original.each {|k,v| self[k] = v }
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
def map_with(&block)
|
11
11
|
@encoder = block
|
12
12
|
self
|
@@ -17,30 +17,36 @@ module StrokeDB
|
|
17
17
|
self
|
18
18
|
end
|
19
19
|
|
20
|
-
|
21
|
-
|
20
|
+
alias :_square_brackets :[]
|
21
|
+
def [](k)
|
22
|
+
@encoder.call(_square_brackets(@decoder.call(k)))
|
22
23
|
end
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
alias :_square_brackets_set :[]=
|
26
|
+
def []=(k,v)
|
27
|
+
_square_brackets_set(@decoder.call(k),@decoder.call(v))
|
28
|
+
end
|
27
29
|
|
28
|
-
|
29
|
-
|
30
|
-
|
30
|
+
alias :_each :each
|
31
|
+
def each
|
32
|
+
e = @encoder
|
33
|
+
_each do |k, v|
|
34
|
+
yield(e.call(k), e.call(v))
|
35
|
+
end
|
36
|
+
end
|
31
37
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
38
|
+
alias :_keys :keys
|
39
|
+
def keys
|
40
|
+
_keys.map {|k| @encoder.call(k)}
|
41
|
+
end
|
36
42
|
|
37
|
-
|
38
|
-
|
39
|
-
|
43
|
+
alias :_values :values
|
44
|
+
def values
|
45
|
+
_values.map {|v| @encoder.call(v)}
|
46
|
+
end
|
40
47
|
|
41
|
-
|
42
|
-
|
43
|
-
end
|
48
|
+
def class
|
49
|
+
Hash
|
44
50
|
end
|
45
51
|
end
|
46
52
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: strokedb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.2
|
4
|
+
version: 0.0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yurii Rashkovskii, Oleg Andreev
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-04-
|
12
|
+
date: 2008-04-15 00:00:00 +03:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|