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 CHANGED
@@ -1,5 +1,5 @@
1
1
  class Map < Hash
2
- Version = '4.4.0' unless defined?(Version)
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*[,.:_-]\s*/).map{|part| part =~ %r/^\d+$/ ? Integer(part) : part}
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
@@ -15,6 +15,9 @@ class Map
15
15
  key = method.chomp('=')
16
16
  value = args.shift
17
17
  @map[key] = value
18
+ when /\?$/
19
+ key = method.chomp('?')
20
+ value = @map.has?( key )
18
21
  else
19
22
  key = method
20
23
  raise(IndexError, key) unless @map.has_key?(key)
data/map.gemspec CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  Gem::Specification::new do |spec|
5
5
  spec.name = "map"
6
- spec.version = "4.4.0"
6
+ spec.version = "4.5.0"
7
7
  spec.platform = Gem::Platform::RUBY
8
8
  spec.summary = "map"
9
9
  spec.description = "description: map kicks the ass"
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: 47
4
+ hash: 43
5
5
  prerelease:
6
6
  segments:
7
7
  - 4
8
- - 4
8
+ - 5
9
9
  - 0
10
- version: 4.4.0
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-21 00:00:00 -06:00
18
+ date: 2011-08-30 00:00:00 -06:00
19
19
  default_executable:
20
20
  dependencies: []
21
21