hashie 0.1.6 → 0.1.8

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.6
1
+ 0.1.8
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{hashie}
8
- s.version = "0.1.6"
8
+ s.version = "0.1.8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Michael Bleigh"]
12
- s.date = %q{2010-01-13}
12
+ s.date = %q{2010-01-14}
13
13
  s.description = %q{Hashie is a small collection of tools that make hashes more powerful. Currently includes Mash (Mocking Hash) and Dash (Discrete Hash).}
14
14
  s.email = %q{michael@intridea.com}
15
15
  s.extra_rdoc_files = [
@@ -26,8 +26,8 @@ module Hashie
26
26
  def self.property(property_name, options = {})
27
27
  property_name = property_name.to_sym
28
28
 
29
- (@@properties ||= []) << property_name
30
- (@@defaults ||= {})[property_name] = options.delete(:default)
29
+ (@properties ||= []) << property_name
30
+ (@defaults ||= {})[property_name] = options.delete(:default)
31
31
 
32
32
  class_eval <<-RUBY
33
33
  def #{property_name}
@@ -43,7 +43,14 @@ module Hashie
43
43
  # Get a String array of the currently defined
44
44
  # properties on this Dash.
45
45
  def self.properties
46
- @@properties.collect{|p| p.to_s}
46
+ properties = []
47
+ ancestors.each do |elder|
48
+ if elder.instance_variable_defined?("@properties")
49
+ properties << elder.instance_variable_get("@properties")
50
+ end
51
+ end
52
+
53
+ properties.flatten.map{|p| p.to_s}
47
54
  end
48
55
 
49
56
  # Check to see if the specified property has already been
@@ -54,7 +61,14 @@ module Hashie
54
61
 
55
62
  # The default values that have been set for this Dash
56
63
  def self.defaults
57
- @@defaults
64
+ properties = {}
65
+ ancestors.each do |elder|
66
+ if elder.instance_variable_defined?("@defaults")
67
+ properties.merge! elder.instance_variable_get("@defaults")
68
+ end
69
+ end
70
+
71
+ properties
58
72
  end
59
73
 
60
74
  # You may initialize a Dash with an attributes hash
@@ -7,6 +7,7 @@ class DashTest < Hashie::Dash
7
7
  end
8
8
 
9
9
  class Subclassed < DashTest
10
+ property :last_name
10
11
  end
11
12
 
12
13
  describe Hashie::Dash do
@@ -84,14 +85,19 @@ end
84
85
 
85
86
  describe Subclassed do
86
87
  it "should inherit all properties from DashTest" do
87
- Subclassed.properties.size.should == 5
88
+ Subclassed.properties.size.should == 6
88
89
  end
89
90
 
90
91
  it "should inherit all defaults from DashTest" do
91
- Subclassed.defaults.size.should == 5
92
+ Subclassed.defaults.size.should == 6
92
93
  end
93
94
 
94
95
  it "should init without raising" do
95
96
  lambda { Subclassed.new }.should_not raise_error
97
+ lambda { Subclassed.new(:first_name => 'Michael') }.should_not raise_error
98
+ end
99
+
100
+ it "should share defaults from DashTest" do
101
+ Subclassed.new.count.should == 0
96
102
  end
97
103
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hashie
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Bleigh
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-13 00:00:00 -05:00
12
+ date: 2010-01-14 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency