natural_born_slugger 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3a99cb7ed1ade9fca52412d4eeab883b445246d1
4
- data.tar.gz: 67ca1e0caaa35375ac69e62ce53da0a15aedbbc5
3
+ metadata.gz: 712e46ba34e1b21b65631322811981931c7e7256
4
+ data.tar.gz: ae7612996c63070c01f7daaa6ddd9ea4ff00c9c0
5
5
  SHA512:
6
- metadata.gz: ad9335f5efd6b0c7cd207d578ed00b29e9bb44892231daa9d608f527285e2bf0b6694a350b59feb5b41de9b495293a7d9fc48fe4aad18bd6a71b1253afa869d3
7
- data.tar.gz: 6eb45a73640ca09d73a0d24401cf7e55d3a6bbf145487528eaf283c754228a101e9a905e5c3b584928b342d789f8ff1874839c7124e0fb14b6031b08e4eb7e6b
6
+ metadata.gz: d3b830832ce523e5a201caa51cf3cfb23ae594ce382ce74ac7eda00b8f765f6df7432813301ed034b7fb44e69aafb1c73989c8a606a6eccf3fcac37b29193d8e
7
+ data.tar.gz: 0a0038a32ab4f63e6167d6e6d3b8de45706a8667fdbf9b2c73b5bca95fe5c51447d52d45a11d83b3ad04307071f925a9856ea9fc34d981594011cfcfff55b379
data/.gitignore CHANGED
@@ -3,7 +3,6 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
- Gemfile.lock
7
6
  InstalledFiles
8
7
  _yardoc
9
8
  builds
data/Gemfile.lock ADDED
@@ -0,0 +1,53 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ natural_born_slugger (0.2.6)
5
+ activesupport (>= 3.1)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ activesupport (4.0.0)
11
+ i18n (~> 0.6, >= 0.6.4)
12
+ minitest (~> 4.2)
13
+ multi_json (~> 1.3)
14
+ thread_safe (~> 0.1)
15
+ tzinfo (~> 0.3.37)
16
+ atomic (1.1.13)
17
+ coderay (1.0.9)
18
+ diff-lcs (1.2.4)
19
+ i18n (0.6.5)
20
+ method_source (0.8.2)
21
+ minitest (4.7.5)
22
+ multi_json (1.7.9)
23
+ pry (0.9.12.2)
24
+ coderay (~> 1.0.5)
25
+ method_source (~> 0.8)
26
+ slop (~> 3.4)
27
+ rake (10.1.0)
28
+ redcarpet (2.3.0)
29
+ rspec (2.14.1)
30
+ rspec-core (~> 2.14.0)
31
+ rspec-expectations (~> 2.14.0)
32
+ rspec-mocks (~> 2.14.0)
33
+ rspec-core (2.14.5)
34
+ rspec-expectations (2.14.2)
35
+ diff-lcs (>= 1.1.3, < 2.0)
36
+ rspec-mocks (2.14.3)
37
+ slop (3.4.6)
38
+ thread_safe (0.1.2)
39
+ atomic
40
+ tzinfo (0.3.37)
41
+ yard (0.8.7)
42
+
43
+ PLATFORMS
44
+ ruby
45
+
46
+ DEPENDENCIES
47
+ bundler (~> 1.3)
48
+ natural_born_slugger!
49
+ pry
50
+ rake (~> 10.0)
51
+ redcarpet (~> 2.2)
52
+ rspec (~> 2.13)
53
+ yard (~> 0.8)
@@ -90,20 +90,28 @@ module NaturalBornSlugger
90
90
  klass.composite_attributes ||= {}
91
91
  klass.composite_attributes[@name] = self
92
92
 
93
- # Define instance attribute getter: calls setter
94
- klass.send :define_method, @name do
95
- name = __method__.to_s
96
- composer = self.class.composite_attributes[name]
97
- old_value = self.instance_variable_get("@#{name}")
98
- new_value = composer.evaluate(self)
93
+ klass.send :define_method, "update_#{@name}".to_sym do
94
+ name = __method__.to_s.gsub 'update_', ''
95
+ new_value = self.class.composite_attributes[name].evaluate(self)
99
96
  if self.respond_to? "#{name}=".to_sym
100
97
  new_value = self.send "#{name}=".to_sym, new_value
101
98
  end
102
99
  self.instance_variable_set("@#{name}", new_value)
103
- composer.callback(self, old_value, new_value)
100
+ #TODO: What is the fate of callbacks? Should the feature be removed? Potential race condition if the value was mutated by the callback
101
+ #composer.callback(self, old_value, new_value)
104
102
  new_value
105
103
  end
106
104
 
105
+ # Define instance attribute getter: calls setter
106
+ klass.send :define_method, @name do
107
+ name = __method__.to_s
108
+ if frozen?
109
+ self.instance_variable_get("@#{name}")
110
+ else
111
+ self.send "update_#{name}".to_sym
112
+ end
113
+ end
114
+
107
115
  end
108
116
 
109
117
  end
@@ -1,3 +1,3 @@
1
1
  module NaturalBornSlugger
2
- VERSION = "0.2.6"
2
+ VERSION = "0.2.7"
3
3
  end
@@ -56,7 +56,24 @@ describe NaturalBornSlugger::AttributeComposer do
56
56
 
57
57
 
58
58
  context 'instance methods' do
59
-
59
+ context '#add_to' do
60
+ subject (:target) { FreezableObject.new }
61
+ describe 'an object with a composite attribute' do
62
+ it 'should have a method named after the composite attribute' do
63
+ target.respond_to?(:natural_key).should be_true
64
+ end
65
+ it 'should have a method used to update the attribute' do
66
+ target.respond_to?(:update_natural_key).should be_true
67
+ end
68
+ end
69
+ describe 'a frozen object' do
70
+ it 'should not auto update composite attributes' do
71
+ target.freeze
72
+ expect { target }.not_to receive(:update_natural_key)
73
+ target.natural_key
74
+ end
75
+ end
76
+ end
60
77
  describe '#compose_attribute' do
61
78
 
62
79
  end
@@ -67,4 +84,7 @@ describe NaturalBornSlugger::AttributeComposer do
67
84
 
68
85
  end
69
86
 
87
+
88
+
89
+
70
90
  end
@@ -34,3 +34,10 @@ class ExampleGrandChild
34
34
  'grandchild method'
35
35
  end
36
36
  end
37
+
38
+ class FreezableObject
39
+ include NaturalBornSlugger
40
+ attr_accessor :name
41
+ has_natural_key name: :dashify
42
+
43
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: natural_born_slugger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Keele
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-10 00:00:00.000000000 Z
11
+ date: 2013-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -119,6 +119,7 @@ files:
119
119
  - .gitignore
120
120
  - .rspec
121
121
  - Gemfile
122
+ - Gemfile.lock
122
123
  - LICENSE.md
123
124
  - README.md
124
125
  - Rakefile
@@ -170,3 +171,4 @@ test_files:
170
171
  - spec/natural_born_slugger_spec.rb
171
172
  - spec/spec_helper.rb
172
173
  - spec/support/example.rb
174
+ has_rdoc: