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 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