map 4.4.0 → 4.5.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.
- 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
|
|