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