subtle 0.3.5 → 0.3.6

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.md CHANGED
@@ -59,6 +59,16 @@ person.last_name = "Galt"
59
59
  person.last_name # Will be Galt
60
60
  ````
61
61
 
62
+ You can also pass an optional subject to to_object, and the properties will be added to that method.
63
+ ````ruby
64
+ subject = ClassWithNoName.new
65
+ person = [:name].to_object subject
66
+
67
+ person.name = "John Galt"
68
+ person.name # Will be John Galt
69
+ ````
70
+
71
+
62
72
  ### Safety Proc
63
73
 
64
74
  This feature was written because I hate wrapping code in begin/rescue/end blocks. If I have a line of code and I don't particularly care if it fails, I have to wrap it in three more lines of care to stop exceptions.
@@ -1,9 +1,9 @@
1
1
  class Array
2
2
 
3
- def to_object
4
- object = Object.new
5
- self.each { |item| add_reader_for(object, item, nil) }
6
- object
3
+ def to_object(subject = nil)
4
+ subject = Object.new if subject.nil?
5
+ self.each { |item| add_reader_for(subject, item, nil) }
6
+ subject
7
7
  end
8
8
 
9
9
  def to_objects(&blk)
@@ -1,3 +1,3 @@
1
1
  module Subtle
2
- VERSION = "0.3.5"
2
+ VERSION = "0.3.6"
3
3
  end
@@ -37,5 +37,23 @@ describe "array to object" do
37
37
  @result.respond_to?(:last_name=).must_equal true
38
38
  end
39
39
  end
40
+
41
+ describe "passing an object as a parameter" do
42
+ before do
43
+ @object = Object.new
44
+ @result = [:first_name, :last_name].to_object(@object)
45
+ end
46
+
47
+ it "should return the same object passed to it" do
48
+ @result.must_be_same_as @object
49
+ end
50
+
51
+ it "should add the properties in the array" do
52
+ @result.respond_to?(:first_name).must_equal true
53
+ @result.respond_to?(:first_name=).must_equal true
54
+ @result.respond_to?(:last_name).must_equal true
55
+ @result.respond_to?(:last_name=).must_equal true
56
+ end
57
+ end
40
58
 
41
59
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: subtle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -105,7 +105,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
105
105
  version: '0'
106
106
  segments:
107
107
  - 0
108
- hash: -1455677586639048133
108
+ hash: 3253476419710169719
109
109
  required_rubygems_version: !ruby/object:Gem::Requirement
110
110
  none: false
111
111
  requirements:
@@ -114,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
114
  version: '0'
115
115
  segments:
116
116
  - 0
117
- hash: -1455677586639048133
117
+ hash: 3253476419710169719
118
118
  requirements: []
119
119
  rubyforge_project:
120
120
  rubygems_version: 1.8.24