strokedb 0.0.2 → 0.0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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 < BlankSlate(Array)
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
- def class
41
- Array
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
- def method_missing sym, *args, &blk
45
- super if sym.to_s =~ /^__/
46
- mname = "__#{::BlankSlate::MethodMapping[sym.to_s] || sym}"
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
- case sym
49
- when :push, :unshift, :<<, :[]=, :index, :-
50
- last = args.pop
51
- last = last.is_a?(Array) ? last.map{|v| @unmap_proc.call(v) } : @unmap_proc.call(last)
52
- args.push last
62
+ alias :_at :at
63
+ def at(index)
64
+ @map_proc.call(_at(index))
65
+ end
53
66
 
54
- __send__(mname, *args, &blk)
67
+ def first
68
+ at(0)
69
+ end
55
70
 
56
- when :[], :slice, :at, :map, :shift, :pop, :include?, :last, :first, :zip, :each, :inject, :each_with_index
57
- __map{|v| @map_proc.call(v) }.__send__(sym, *args, &blk)
71
+ def last
72
+ at(size-1)
73
+ end
58
74
 
59
- else
60
- __send__(mname, *args, &blk)
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 < BlankSlate(Hash)
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.__squarebracket_set(k,v) }
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
- def class
21
- Hash
20
+ alias :_square_brackets :[]
21
+ def [](k)
22
+ @encoder.call(_square_brackets(@decoder.call(k)))
22
23
  end
23
24
 
24
- def method_missing sym, *args, &blk
25
- super if sym.to_s =~ /^__/
26
- mname = "__#{::BlankSlate::MethodMapping[sym.to_s] || sym}"
25
+ alias :_square_brackets_set :[]=
26
+ def []=(k,v)
27
+ _square_brackets_set(@decoder.call(k),@decoder.call(v))
28
+ end
27
29
 
28
- case sym
29
- when :keys, :values
30
- __send__(mname, *args, &blk).map{|v| @encoder.call(v) }
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
- when :each
33
- self.__each do |k,v|
34
- yield @encoder.call(k), @encoder.call(v)
35
- end
38
+ alias :_keys :keys
39
+ def keys
40
+ _keys.map {|k| @encoder.call(k)}
41
+ end
36
42
 
37
- when :[], :[]=
38
- args.map!{|v| @decoder.call(v) }
39
- @encoder.call __send__(mname, *args, &blk)
43
+ alias :_values :values
44
+ def values
45
+ _values.map {|v| @encoder.call(v)}
46
+ end
40
47
 
41
- else
42
- __send__(mname, *args, &blk)
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-13 00:00:00 +03:00
12
+ date: 2008-04-15 00:00:00 +03:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency