map 3.0.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/Rakefile +12 -11
  2. data/lib/map.rb +3 -2
  3. data/map.gemspec +20 -6
  4. data/test/map_test.rb +12 -1
  5. metadata +9 -9
data/Rakefile CHANGED
@@ -1,7 +1,7 @@
1
1
  This.rubyforge_project = 'codeforpeople'
2
2
  This.author = "Ara T. Howard"
3
3
  This.email = "ara.t.howard@gmail.com"
4
- This.homepage = "http://github.com/ahoward/#{ This.lib }/tree/master"
4
+ This.homepage = "https://github.com/ahoward/#{ This.lib }"
5
5
 
6
6
 
7
7
  task :default do
@@ -59,9 +59,9 @@ end
59
59
 
60
60
 
61
61
  task :gemspec do
62
- ignore_extensions = 'git', 'svn', 'tmp', /sw./, 'bak', 'gem'
63
- ignore_directories = 'pkg'
64
- ignore_files = 'test/log'
62
+ ignore_extensions = ['git', 'svn', 'tmp', /sw./, 'bak', 'gem']
63
+ ignore_directories = ['pkg']
64
+ ignore_files = ['test/log']
65
65
 
66
66
  shiteless =
67
67
  lambda do |list|
@@ -87,7 +87,7 @@ task :gemspec do
87
87
  version = This.version
88
88
  files = shiteless[Dir::glob("**/**")]
89
89
  executables = shiteless[Dir::glob("bin/*")].map{|exe| File.basename(exe)}
90
- has_rdoc = true #File.exist?('doc')
90
+ #has_rdoc = true #File.exist?('doc')
91
91
  test_files = "test/#{ lib }.rb" if File.file?("test/#{ lib }.rb")
92
92
  summary = object.respond_to?(:summary) ? object.summary : "summary: #{ lib } kicks the ass"
93
93
  description = object.respond_to?(:description) ? object.description : "description: #{ lib } kicks the ass"
@@ -117,15 +117,15 @@ task :gemspec do
117
117
  spec.summary = #{ lib.inspect }
118
118
  spec.description = #{ description.inspect }
119
119
 
120
- spec.files = #{ files.inspect }
120
+ spec.files =\n#{ files.sort.pretty_inspect }
121
121
  spec.executables = #{ executables.inspect }
122
122
 
123
123
  spec.require_path = "lib"
124
124
 
125
- spec.has_rdoc = #{ has_rdoc.inspect }
126
125
  spec.test_files = #{ test_files.inspect }
127
- #spec.add_dependency 'lib', '>= version'
128
- #spec.add_dependency 'fattr'
126
+
127
+ ### spec.add_dependency 'lib', '>= version'
128
+ #### spec.add_dependency 'map'
129
129
 
130
130
  spec.extensions.push(*#{ extensions.inspect })
131
131
 
@@ -235,6 +235,7 @@ BEGIN {
235
235
  require 'erb'
236
236
  require 'fileutils'
237
237
  require 'rbconfig'
238
+ require 'pp'
238
239
 
239
240
  # fu shortcut
240
241
  #
@@ -292,7 +293,7 @@ BEGIN {
292
293
 
293
294
  def unindent(s)
294
295
  indent = nil
295
- s.each do |line|
296
+ s.each_line do |line|
296
297
  next if line =~ %r/^\s*$/
297
298
  indent = line[%r/^\s*/] and break
298
299
  end
@@ -309,7 +310,7 @@ BEGIN {
309
310
  @template = block.call.to_s
310
311
  end
311
312
  def expand(b=nil)
312
- ERB.new(Util.unindent(@template)).result(b||@block)
313
+ ERB.new(Util.unindent(@template)).result((b||@block).binding)
313
314
  end
314
315
  alias_method 'to_s', 'expand'
315
316
  end
data/lib/map.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  class Map < Hash
2
- Version = '3.0.0' unless defined?(Version)
2
+ Version = '4.0.0' unless defined?(Version)
3
3
  Load = Kernel.method(:load) unless defined?(Load)
4
4
 
5
5
  class << Map
@@ -241,7 +241,8 @@ class Map < Hash
241
241
  def self.convert_value(value)
242
242
  conversion_methods.each do |method|
243
243
  #return convert_value(value.send(method)) if value.respond_to?(method)
244
- if value.respond_to?(method)
244
+ hashlike = value.is_a?(Hash)
245
+ if hashlike and value.respond_to?(method)
245
246
  value = value.send(method)
246
247
  break
247
248
  end
@@ -3,25 +3,39 @@
3
3
 
4
4
  Gem::Specification::new do |spec|
5
5
  spec.name = "map"
6
- spec.version = "3.0.0"
6
+ spec.version = "4.0.0"
7
7
  spec.platform = Gem::Platform::RUBY
8
8
  spec.summary = "map"
9
9
  spec.description = "description: map kicks the ass"
10
10
 
11
- spec.files = ["lib", "lib/map", "lib/map/options.rb", "lib/map/struct.rb", "lib/map.rb", "map.gemspec", "Rakefile", "README", "test", "test/lib", "test/lib/testing.rb", "test/map_test.rb", "TODO"]
11
+ spec.files =
12
+ ["README",
13
+ "Rakefile",
14
+ "TODO",
15
+ "lib",
16
+ "lib/map",
17
+ "lib/map.rb",
18
+ "lib/map/options.rb",
19
+ "lib/map/struct.rb",
20
+ "map.gemspec",
21
+ "test",
22
+ "test/lib",
23
+ "test/lib/testing.rb",
24
+ "test/map_test.rb"]
25
+
12
26
  spec.executables = []
13
27
 
14
28
  spec.require_path = "lib"
15
29
 
16
- spec.has_rdoc = true
17
30
  spec.test_files = nil
18
- #spec.add_dependency 'lib', '>= version'
19
- #spec.add_dependency 'fattr'
31
+
32
+ ### spec.add_dependency 'lib', '>= version'
33
+ #### spec.add_dependency 'map'
20
34
 
21
35
  spec.extensions.push(*[])
22
36
 
23
37
  spec.rubyforge_project = "codeforpeople"
24
38
  spec.author = "Ara T. Howard"
25
39
  spec.email = "ara.t.howard@gmail.com"
26
- spec.homepage = "http://github.com/ahoward/map/tree/master"
40
+ spec.homepage = "https://github.com/ahoward/map"
27
41
  end
@@ -232,7 +232,7 @@ Testing Map do
232
232
 
233
233
  testing 'that custom conversion methods are coerced - just in case' do
234
234
  map = Map.new
235
- record = Class.new do
235
+ record = Class.new(Hash) do
236
236
  def to_map() {:id => 42} end
237
237
  end
238
238
  map.update(:list => [record.new, record.new])
@@ -240,6 +240,17 @@ Testing Map do
240
240
  assert{ map.list.all?{|x| x.id==42} }
241
241
  end
242
242
 
243
+ testing 'that non-hashlike classes do *not* have conversion methods called on them' do
244
+ map = Map.new
245
+ record = Class.new do
246
+ def to_map() {:id => 42} end
247
+ end
248
+ map.update(:record => record.new)
249
+ assert{ !map.record.is_a?(Hash) }
250
+ assert{ !map.record.is_a?(Map) }
251
+ assert{ map.record.is_a?(record) }
252
+ end
253
+
243
254
  testing 'that coercion is minimal' do
244
255
  map = Map.new
245
256
  a = Class.new(Map) do
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: 7
4
+ hash: 63
5
5
  prerelease:
6
6
  segments:
7
- - 3
7
+ - 4
8
8
  - 0
9
9
  - 0
10
- version: 3.0.0
10
+ version: 4.0.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-04-21 00:00:00 -06:00
18
+ date: 2011-05-17 00:00:00 -06:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -28,17 +28,17 @@ extensions: []
28
28
  extra_rdoc_files: []
29
29
 
30
30
  files:
31
+ - README
32
+ - Rakefile
33
+ - TODO
34
+ - lib/map.rb
31
35
  - lib/map/options.rb
32
36
  - lib/map/struct.rb
33
- - lib/map.rb
34
37
  - map.gemspec
35
- - Rakefile
36
- - README
37
38
  - test/lib/testing.rb
38
39
  - test/map_test.rb
39
- - TODO
40
40
  has_rdoc: true
41
- homepage: http://github.com/ahoward/map/tree/master
41
+ homepage: https://github.com/ahoward/map
42
42
  licenses: []
43
43
 
44
44
  post_install_message: