valuable 0.9.3 → 0.9.4

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/README.markdown CHANGED
@@ -5,7 +5,7 @@ Valuable enables quick modeling... it's attr_accessor on steroids. Its simple i
5
5
 
6
6
  Valuable provides DRY decoration like attr_accessor, but includes default values and other formatting (like, "2" => 2), and a constructor that accepts an attributes hash. It provides a class-level list of attributes, an instance-level attributes hash, and more.
7
7
 
8
- Tested with "Rubinius":http://www.rubini.us, 1.8.7, 1.9.1, 1.9.2, 1.9.3
8
+ Tested with [Rubinius](http://www.rubini.us "Rubinius"), 1.8.7, 1.9.1, 1.9.2, 1.9.3
9
9
 
10
10
  Frequent Uses
11
11
  -------------
@@ -117,7 +117,6 @@ _aliases_
117
117
  >> xp.name
118
118
  => "Windows XP"
119
119
 
120
-
121
120
  Formatting Input
122
121
  ----------------
123
122
  _aka light-weight type-casting_
@@ -217,6 +216,20 @@ Advanced Defaults
217
216
  >> seven.designation
218
217
  => '7 of 9'
219
218
 
219
+ Note -- if you overwrite the constructor, you should call initialize_attributes. Otherwise, your default values won't be set up until the first time the attributes hash is called -- in theory, this could be well after initialization, and could cause unknowable gremlins. Trivial example:
220
+
221
+ class Person
222
+ has_value :created_at, :default => lambda { Time.now }
223
+
224
+ def initialize(atts)
225
+ end
226
+ end
227
+
228
+ >> p = Person.new
229
+ >> # wait 10 minutes
230
+ >> p.created_at == Time.now # attributes initialized on first use
231
+ => true
232
+
220
233
  Advanced Input Parsing
221
234
  ----------------------
222
235
 
data/lib/valuable.rb CHANGED
@@ -41,15 +41,15 @@ class Valuable
41
41
  # >> bus.attributes
42
42
  # => {:color => 'yellow', :number => 16}
43
43
  def attributes
44
- @attributes
45
- end
46
-
47
- def initialize_attributes
48
44
  @attributes ||= Valuable::Utils.initial_copy_of_attributes(self.class.defaults)
49
45
  end
46
+ alias_method :initialize_attributes, :attributes
50
47
 
51
48
  # accepts an optional hash that will be used to populate the
52
49
  # predefined attributes for this class.
50
+ #
51
+ # Note: You are free to overwrite the constructor, but you should call
52
+ # initialize_attributes OR make sure at least one value is stored.
53
53
  def initialize(atts = nil)
54
54
  initialize_attributes
55
55
  self.update_attributes(atts || {})
@@ -0,0 +1,26 @@
1
+ $: << File.expand_path(File.dirname(__FILE__) + '/../lib')
2
+
3
+ require 'rubygems'
4
+ require 'test/unit'
5
+ require 'valuable.rb'
6
+ require 'mocha'
7
+
8
+ class Person < Valuable
9
+ has_value :first_name
10
+ has_value :last_name
11
+
12
+ def initialize(atts={})
13
+ self.first_name = "Joe"
14
+ super(atts)
15
+ end
16
+ end
17
+
18
+ class ParseWithTest < Test::Unit::TestCase
19
+
20
+ def test_that_attributes_are_accessible_in_custom_constructor
21
+ assert_nothing_raised do
22
+ Person.new(:last_name => 'Smith')
23
+ end
24
+ end
25
+ end
26
+
data/valuable.version CHANGED
@@ -1 +1 @@
1
- 0.9.3
1
+ 0.9.4
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: valuable
3
3
  version: !ruby/object:Gem::Version
4
- hash: 61
4
+ hash: 51
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
- - 3
10
- version: 0.9.3
9
+ - 4
10
+ version: 0.9.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Johnathon Wright
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-02-25 00:00:00 -06:00
18
+ date: 2012-04-10 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -40,6 +40,7 @@ files:
40
40
  - lib/valuable/utils.rb
41
41
  - test/alias_test.rb
42
42
  - test/bad_attributes_test.rb
43
+ - test/custom_initializer_test.rb
43
44
  - test/default_values_from_anon_methods.rb
44
45
  - test/deprecated_test.rb
45
46
  - test/inheritance_test.rb