characterizable 0.0.10 → 0.0.11

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/Rakefile CHANGED
@@ -12,6 +12,7 @@ begin
12
12
  gem.authors = ["Andy Rossmeissl", "Seamus Abshere"]
13
13
  gem.add_dependency 'blockenspiel', '>=0.3.2'
14
14
  gem.add_dependency 'activesupport', '>=2.3.5'
15
+ gem.add_dependency 'to_json_fix', '>=0.0.1'
15
16
  gem.add_development_dependency "shoulda", ">= 0"
16
17
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
18
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.10
1
+ 0.0.11
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{characterizable}
8
- s.version = "0.0.10"
8
+ s.version = "0.0.11"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Andy Rossmeissl", "Seamus Abshere"]
12
- s.date = %q{2010-07-06}
12
+ s.date = %q{2010-07-16}
13
13
  s.description = %q{Characterize the relationship between "attributes" (getters/setters) of instances of a class}
14
14
  s.email = %q{seamus@abshere.net}
15
15
  s.extra_rdoc_files = [
@@ -45,15 +45,18 @@ Gem::Specification.new do |s|
45
45
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
46
46
  s.add_runtime_dependency(%q<blockenspiel>, [">= 0.3.2"])
47
47
  s.add_runtime_dependency(%q<activesupport>, [">= 2.3.5"])
48
+ s.add_runtime_dependency(%q<to_json_fix>, [">= 0.0.1"])
48
49
  s.add_development_dependency(%q<shoulda>, [">= 0"])
49
50
  else
50
51
  s.add_dependency(%q<blockenspiel>, [">= 0.3.2"])
51
52
  s.add_dependency(%q<activesupport>, [">= 2.3.5"])
53
+ s.add_dependency(%q<to_json_fix>, [">= 0.0.1"])
52
54
  s.add_dependency(%q<shoulda>, [">= 0"])
53
55
  end
54
56
  else
55
57
  s.add_dependency(%q<blockenspiel>, [">= 0.3.2"])
56
58
  s.add_dependency(%q<activesupport>, [">= 2.3.5"])
59
+ s.add_dependency(%q<to_json_fix>, [">= 0.0.1"])
57
60
  s.add_dependency(%q<shoulda>, [">= 0"])
58
61
  end
59
62
  end
@@ -9,9 +9,11 @@ require 'active_support/version'
9
9
  active_support/core_ext/array/wrap
10
10
  active_support/core_ext/module/aliasing
11
11
  active_support/core_ext/module/delegation
12
+ active_support/json
12
13
  }.each do |active_support_3_requirement|
13
14
  require active_support_3_requirement
14
15
  end if ActiveSupport::VERSION::MAJOR == 3
16
+ require 'to_json_fix'
15
17
 
16
18
  module Characterizable
17
19
  def self.included(klass)
@@ -30,6 +32,12 @@ module Characterizable
30
32
  class BetterHash < ::Hash
31
33
  # In Ruby 1.9, running select/reject/etc. gives you back a hash
32
34
  if RUBY_VERSION < '1.9'
35
+ def to_hash
36
+ Hash.new.replace self
37
+ end
38
+ def to_json(*)
39
+ to_hash.to_json
40
+ end
33
41
  def reject(&block)
34
42
  inject(Characterizable::BetterHash.new) do |memo, ary|
35
43
  unless block.call(*ary)
@@ -157,6 +165,9 @@ module Characterizable
157
165
  @options = options
158
166
  Blockenspiel.invoke block, self if block_given?
159
167
  end
168
+ def to_json(*)
169
+ { :name => name, :trumps => trumps, :prerequisite => prerequisite, :options => options }.to_json
170
+ end
160
171
  def inspect
161
172
  "<Characterizable::Characteristic name=#{name.inspect} trumps=#{trumps.inspect} prerequisite=#{prerequisite.inspect} options=#{options.inspect}>"
162
173
  end
@@ -363,4 +363,19 @@ class TestCharacterizable < Test::Unit::TestCase
363
363
  assert_equal({}, snapshot.slice(:make))
364
364
  end
365
365
 
366
+ should 'allow a BetterHash to be turned into a normal Hash' do
367
+ assert_equal Hash, Characterizable::BetterHash.new.to_hash.class
368
+ end
369
+
370
+ should 'be nice to active_support to_json for characteristics (i.e. BetterHashes)' do
371
+ a = Automobile.new
372
+ a.make = 'Ford'
373
+ assert_equal "{\"make\":\"Ford\"}", a.characteristics.to_json
374
+ end
375
+
376
+ should 'be nice to active_support to_json for snapshots' do
377
+ a = Automobile.new
378
+ a.make = 'Ford'
379
+ assert_equal "{\"make\":{\"trumps\":[],\"name\":\"make\",\"options\":{},\"prerequisite\":null}}", a.characteristics.effective.to_json
380
+ end
366
381
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: characterizable
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 10
10
- version: 0.0.10
9
+ - 11
10
+ version: 0.0.11
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andy Rossmeissl
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-07-06 00:00:00 -04:00
19
+ date: 2010-07-16 00:00:00 -05:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -52,9 +52,25 @@ dependencies:
52
52
  type: :runtime
53
53
  version_requirements: *id002
54
54
  - !ruby/object:Gem::Dependency
55
- name: shoulda
55
+ name: to_json_fix
56
56
  prerelease: false
57
57
  requirement: &id003 !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ hash: 29
63
+ segments:
64
+ - 0
65
+ - 0
66
+ - 1
67
+ version: 0.0.1
68
+ type: :runtime
69
+ version_requirements: *id003
70
+ - !ruby/object:Gem::Dependency
71
+ name: shoulda
72
+ prerelease: false
73
+ requirement: &id004 !ruby/object:Gem::Requirement
58
74
  none: false
59
75
  requirements:
60
76
  - - ">="
@@ -64,7 +80,7 @@ dependencies:
64
80
  - 0
65
81
  version: "0"
66
82
  type: :development
67
- version_requirements: *id003
83
+ version_requirements: *id004
68
84
  description: Characterize the relationship between "attributes" (getters/setters) of instances of a class
69
85
  email: seamus@abshere.net
70
86
  executables: []