map 4.4.0 → 4.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/map.rb +5 -2
- data/lib/map/struct.rb +3 -0
- data/map.gemspec +1 -1
- data/test/map_test.rb +43 -0
- metadata +4 -4
data/lib/map.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
class Map < Hash
|
2
|
-
Version = '4.
|
2
|
+
Version = '4.5.0' unless defined?(Version)
|
3
3
|
Load = Kernel.method(:load) unless defined?(Load)
|
4
4
|
|
5
5
|
class << Map
|
@@ -611,6 +611,9 @@ class Map < Hash
|
|
611
611
|
key = args.shift.to_s.chomp('=')
|
612
612
|
value = args.shift
|
613
613
|
self[key] = value
|
614
|
+
when /\?$/
|
615
|
+
key = args.shift.to_s.chomp('?')
|
616
|
+
self.has?( key )
|
614
617
|
else
|
615
618
|
key = method
|
616
619
|
unless has_key?(key)
|
@@ -826,7 +829,7 @@ class Map < Hash
|
|
826
829
|
#
|
827
830
|
def self.dot_key_for(*keys)
|
828
831
|
dot = keys.compact.flatten.join('.')
|
829
|
-
dot.split(%r/\s*[
|
832
|
+
dot.split(%r/\s*[,.]\s*/).map{|part| part =~ %r/^\d+$/ ? Integer(part) : part}
|
830
833
|
end
|
831
834
|
|
832
835
|
def self.dot_keys
|
data/lib/map/struct.rb
CHANGED
data/map.gemspec
CHANGED
data/test/map_test.rb
CHANGED
@@ -558,6 +558,49 @@ Testing Map do
|
|
558
558
|
assert{ map.get(:x).nil? }
|
559
559
|
end
|
560
560
|
|
561
|
+
testing 'that maps a clever little question method' do
|
562
|
+
m = Map.new
|
563
|
+
m.set(:a, :b, :c, 42)
|
564
|
+
m.set([:x, :y, :z] => 42.0, [:A, 2] => 'forty-two')
|
565
|
+
|
566
|
+
assert( !m.b? )
|
567
|
+
assert( m.a? )
|
568
|
+
assert( m.a.b? )
|
569
|
+
assert( m.a.b.c? )
|
570
|
+
assert( !m.a.b.d? )
|
571
|
+
|
572
|
+
assert( m.x? )
|
573
|
+
assert( m.x.y? )
|
574
|
+
assert( m.x.y.z? )
|
575
|
+
assert( !m.y? )
|
576
|
+
|
577
|
+
assert( m.A? )
|
578
|
+
end
|
579
|
+
|
580
|
+
testing 'that maps a clever little question method on Struct' do
|
581
|
+
m = Map.new
|
582
|
+
m.set(:a, :b, :c, 42)
|
583
|
+
m.set([:x, :y, :z] => 42.0, [:A, 2] => 'forty-two')
|
584
|
+
s = m.struct
|
585
|
+
|
586
|
+
assert( s.a.b.c == 42 )
|
587
|
+
assert( s.x.y.z == 42.0 )
|
588
|
+
|
589
|
+
assert( !s.b? )
|
590
|
+
assert( s.a? )
|
591
|
+
assert( s.a.b? )
|
592
|
+
assert( s.a.b.c? )
|
593
|
+
assert( !s.a.b.d? )
|
594
|
+
|
595
|
+
assert( s.x? )
|
596
|
+
assert( s.x.y? )
|
597
|
+
assert( s.x.y.z? )
|
598
|
+
assert( !s.y? )
|
599
|
+
|
600
|
+
assert( s.A? )
|
601
|
+
|
602
|
+
end
|
603
|
+
|
561
604
|
protected
|
562
605
|
def new_int_map(n = 1024)
|
563
606
|
map = assert{ Map.new }
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: map
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 43
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 4
|
8
|
-
-
|
8
|
+
- 5
|
9
9
|
- 0
|
10
|
-
version: 4.
|
10
|
+
version: 4.5.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ara T. Howard
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-08-
|
18
|
+
date: 2011-08-30 00:00:00 -06:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|