jeffp-enumerated_attribute 0.1.4 → 0.1.5

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/CHANGELOG.rdoc CHANGED
@@ -1,5 +1,10 @@
1
1
  == master
2
2
 
3
+ == 0.1.5 / 2009-07-14
4
+
5
+ * Refactored to remove unnecessary class methods from class
6
+ * Dynamically load class methods into implementing class object
7
+
3
8
  == 0.1.4 / 2009-07-14
4
9
 
5
10
  * Removed log files from gem build
data/Rakefile CHANGED
@@ -5,10 +5,10 @@ require 'rake/contrib/sshpublisher'
5
5
 
6
6
  spec = Gem::Specification.new do |s|
7
7
  s.name = 'enumerated_attribute'
8
- s.version = '0.1.4'
8
+ s.version = '0.1.5'
9
9
  s.platform = Gem::Platform::RUBY
10
- s.description = 'A enumerated attribute accessor'
11
- s.summary = 'Defines enumerated attributes, initial state and dynamic state methods.'
10
+ s.description = 'An enumerated attribute accessor'
11
+ s.summary = 'Add enumerated attributes with initialization, dynamic predicate methods, more ...'
12
12
 
13
13
  s.files = FileList['{examples,lib,tasks,spec}/**/*'] + %w(CHANGELOG.rdoc init.rb LICENSE Rakefile README.rdoc .gitignore) - FileList['**/*.log']
14
14
  s.require_path = 'lib'
@@ -17,7 +17,7 @@ spec = Gem::Specification.new do |s|
17
17
 
18
18
  s.author = 'Jeff Patmon'
19
19
  s.email = 'jpatmon@yahoo.com'
20
- s.homepage = 'http://www.jpatmon.com'
20
+ s.homepage = 'http://github.com/jeffp/enumerated_attribute/tree/master'
21
21
  end
22
22
 
23
23
  require 'spec/version'
@@ -49,6 +49,7 @@ module EnumeratedAttribute
49
49
  @integration_map[:aliasing].each do |p|
50
50
  alias_method(p.first, p.last)
51
51
  end
52
+ include(EnumeratedAttribute::Integrations::Default)
52
53
  include(@integration_map[:module]) if @integration_map[:module]
53
54
 
54
55
  def self.has_enumerated_attribute?(name)
@@ -183,51 +184,53 @@ module EnumeratedAttribute
183
184
  class << self
184
185
  def enumerated_attribute_initial_value_list; @enumerated_attribute_init; end
185
186
  end
186
- end
187
+ end
188
+
189
+ def self.define_enumerated_attribute_custom_method(symbol, attr_name, value, negated)
190
+ define_method symbol do
191
+ ival = read_enumerated_attribute(attr_name)
192
+ negated ? ival != value : ival == value
193
+ end
194
+ end
195
+
187
196
  end
197
+ alias_method :enum_attr, :enumerated_attribute
188
198
 
189
- #a short cut
190
- alias :enum_attr :enumerated_attribute
191
-
199
+ =begin
192
200
  def define_enumerated_attribute_custom_method(symbol, attr_name, value, negated)
193
201
  define_method symbol do
194
202
  ival = read_enumerated_attribute(attr_name)
195
203
  negated ? ival != value : ival == value
196
204
  end
197
205
  end
198
-
199
- private
206
+ =end
200
207
 
201
- #these implementations are for basic ruby objects - integrations (see Integrations::ActiveRecord) may alter them
202
- def define_enumerated_attribute_new_method
203
- class_eval <<-NEWMETH
204
- class << self
205
- alias_method :new_without_enumerated_attribute, :new
206
- def new(*args, &block)
207
- result = new_without_enumerated_attribute(*args)
208
- result.initialize_enumerated_attributes
209
- yield result if block_given?
210
- result
211
- end
212
- end
213
- NEWMETH
214
- end
215
-
216
- def define_enumerated_attribute_writer_method name
217
- name = name.to_s
218
- class_eval <<-METHOD
219
- def #{name}=(val); write_enumerated_attribute(:#{name}, val); end
220
- METHOD
221
- end
222
-
223
- def define_enumerated_attribute_reader_method name
224
- name = name.to_s
225
- class_eval <<-METHOD
226
- def #{name}; read_enumerated_attribute(:#{name}); end
227
- METHOD
228
- end
208
+ #these implementations are for basic ruby objects - integrations (see Integrations::ActiveRecord and Integrations::Object) may alter them
209
+ #def define_enumerated_attribute_new_method
210
+ #def define_enumerated_attribute_writer_method name
211
+ #def define_enumerated_attribute_reader_method name
229
212
 
230
213
  module Integrations
214
+ module Default
215
+ def self.included(klass); klass.extend(ClassMethods); end
216
+
217
+ module ClassMethods
218
+ def define_enumerated_attribute_writer_method name
219
+ name = name.to_s
220
+ class_eval <<-METHOD
221
+ def #{name}=(val); write_enumerated_attribute(:#{name}, val); end
222
+ METHOD
223
+ end
224
+
225
+ def define_enumerated_attribute_reader_method name
226
+ name = name.to_s
227
+ class_eval <<-METHOD
228
+ def #{name}; read_enumerated_attribute(:#{name}); end
229
+ METHOD
230
+ end
231
+ end
232
+ end
233
+
231
234
  module Object
232
235
  def self.included(klass)
233
236
  klass.extend(ClassMethods)
@@ -248,6 +251,22 @@ module EnumeratedAttribute
248
251
  end
249
252
 
250
253
  module ClassMethods
254
+ private
255
+
256
+ def define_enumerated_attribute_new_method
257
+ class_eval <<-NEWMETH
258
+ class << self
259
+ alias_method :new_without_enumerated_attribute, :new
260
+ def new(*args, &block)
261
+ result = new_without_enumerated_attribute(*args)
262
+ result.initialize_enumerated_attributes
263
+ yield result if block_given?
264
+ result
265
+ end
266
+ end
267
+ NEWMETH
268
+ end
269
+
251
270
  end
252
271
 
253
272
  end
data/spec/tractor.rb CHANGED
@@ -25,7 +25,7 @@ class Tractor
25
25
  plowing? { self.gear_is_in_first? && self.plow == :down }
26
26
  end
27
27
 
28
- enum_attr :lights, LIGHTS_ENUM_VALUES, :enums_accessor=>:lights_enums, :init=>:off, :decrementor=>:turn_lights_down, :incrementor=>:turn_lights_up do
28
+ enum_attr :lights, LIGHTS_ENUM_VALUES, :plural=>:lights_enums, :init=>:off, :decrementor=>:turn_lights_down, :incrementor=>:turn_lights_up do
29
29
  lights_are_on? [:low, :high]
30
30
  lights_are_not_on? :off
31
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jeffp-enumerated_attribute
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Patmon
@@ -13,7 +13,7 @@ date: 2009-07-14 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
16
- description: A enumerated attribute accessor
16
+ description: An enumerated attribute accessor
17
17
  email: jpatmon@yahoo.com
18
18
  executables: []
19
19
 
@@ -41,7 +41,7 @@ files:
41
41
  - README.rdoc
42
42
  - .gitignore
43
43
  has_rdoc: false
44
- homepage: http://www.jpatmon.com
44
+ homepage: http://github.com/jeffp/enumerated_attribute/tree/master
45
45
  post_install_message:
46
46
  rdoc_options: []
47
47
 
@@ -65,7 +65,7 @@ rubyforge_project:
65
65
  rubygems_version: 1.2.0
66
66
  signing_key:
67
67
  specification_version: 3
68
- summary: Defines enumerated attributes, initial state and dynamic state methods.
68
+ summary: Add enumerated attributes with initialization, dynamic predicate methods, more ...
69
69
  test_files:
70
70
  - spec/new_and_method_missing_spec.rb
71
71
  - spec/poro_spec.rb