characterizable 0.0.11 → 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/characterizable.gemspec +3 -3
- data/lib/characterizable.rb +4 -2
- data/test/test_characterizable.rb +34 -2
- metadata +5 -5
data/Rakefile
CHANGED
@@ -12,7 +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.
|
15
|
+
gem.add_development_dependency 'to_json_fix', '>=0.0.1'
|
16
16
|
gem.add_development_dependency "shoulda", ">= 0"
|
17
17
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
18
18
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.12
|
data/characterizable.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{characterizable}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.12"
|
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-
|
12
|
+
s.date = %q{2010-07-21}
|
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,7 +45,7 @@ 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.
|
48
|
+
s.add_development_dependency(%q<to_json_fix>, [">= 0.0.1"])
|
49
49
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
50
50
|
else
|
51
51
|
s.add_dependency(%q<blockenspiel>, [">= 0.3.2"])
|
data/lib/characterizable.rb
CHANGED
@@ -9,11 +9,9 @@ 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
|
13
12
|
}.each do |active_support_3_requirement|
|
14
13
|
require active_support_3_requirement
|
15
14
|
end if ActiveSupport::VERSION::MAJOR == 3
|
16
|
-
require 'to_json_fix'
|
17
15
|
|
18
16
|
module Characterizable
|
19
17
|
def self.included(klass)
|
@@ -125,6 +123,9 @@ module Characterizable
|
|
125
123
|
delegate :characteristics, :to => :characterizable_base
|
126
124
|
end
|
127
125
|
|
126
|
+
class CharacteristicAlreadyDefined < ArgumentError
|
127
|
+
end
|
128
|
+
|
128
129
|
class Base
|
129
130
|
attr_reader :klass
|
130
131
|
def initialize(klass)
|
@@ -135,6 +136,7 @@ module Characterizable
|
|
135
136
|
end
|
136
137
|
include Blockenspiel::DSL
|
137
138
|
def has(name, options = {}, &block)
|
139
|
+
raise CharacteristicAlreadyDefined, "The characteristic #{name} has already been defined on #{klass}!" if characteristics.has_key?(name)
|
138
140
|
characteristics[name] = Characteristic.new(self, name, options, &block)
|
139
141
|
begin
|
140
142
|
# quacks like an activemodel
|
@@ -1,5 +1,9 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
+
# just to see if it hurts
|
4
|
+
require 'active_support/json'
|
5
|
+
require 'to_json_fix'
|
6
|
+
|
3
7
|
class Characterizable::Characteristic
|
4
8
|
def hidden?
|
5
9
|
!!options[:hidden]
|
@@ -370,12 +374,40 @@ class TestCharacterizable < Test::Unit::TestCase
|
|
370
374
|
should 'be nice to active_support to_json for characteristics (i.e. BetterHashes)' do
|
371
375
|
a = Automobile.new
|
372
376
|
a.make = 'Ford'
|
373
|
-
|
377
|
+
assert_nothing_raised do
|
378
|
+
a.characteristics.to_json
|
379
|
+
end
|
374
380
|
end
|
375
381
|
|
376
382
|
should 'be nice to active_support to_json for snapshots' do
|
377
383
|
a = Automobile.new
|
378
384
|
a.make = 'Ford'
|
379
|
-
|
385
|
+
assert_nothing_raised do
|
386
|
+
a.characteristics.effective.to_json
|
387
|
+
end
|
388
|
+
end
|
389
|
+
|
390
|
+
should 'raise an exception if #has is called more than once in a single block' do
|
391
|
+
assert_raises ::Characterizable::CharacteristicAlreadyDefined do
|
392
|
+
class SimpleAutomobile3
|
393
|
+
include Characterizable
|
394
|
+
attr_accessor :make
|
395
|
+
characterize do
|
396
|
+
has :make
|
397
|
+
has :make
|
398
|
+
end
|
399
|
+
end
|
400
|
+
end
|
401
|
+
end
|
402
|
+
|
403
|
+
should 'raise an exception if #has is called more than once in a subclass' do
|
404
|
+
assert_raises ::Characterizable::CharacteristicAlreadyDefined do
|
405
|
+
class SimpleAutomobile2 < SimpleAutomobile
|
406
|
+
include Characterizable
|
407
|
+
characterize do
|
408
|
+
has :make
|
409
|
+
end
|
410
|
+
end
|
411
|
+
end
|
380
412
|
end
|
381
413
|
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:
|
4
|
+
hash: 7
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 12
|
10
|
+
version: 0.0.12
|
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-
|
19
|
+
date: 2010-07-21 00:00:00 -05:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
- 0
|
66
66
|
- 1
|
67
67
|
version: 0.0.1
|
68
|
-
type: :
|
68
|
+
type: :development
|
69
69
|
version_requirements: *id003
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: shoulda
|