fossil 0.3.0 → 0.3.1

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.3.0
1
+ 0.3.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{fossil}
8
- s.version = "0.3.0"
8
+ s.version = "0.3.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Patrick Lardin, Daniel Sudol"]
12
- s.date = %q{2010-01-28}
12
+ s.date = %q{2010-02-03}
13
13
  s.description = %q{Access FOS/betrieve db with this Sequel based orm wrapper}
14
14
  s.email = %q{plardin@xojet.com}
15
15
  s.files = [
@@ -6,9 +6,24 @@ class Sequel::Model
6
6
  plugin :validation_helpers
7
7
 
8
8
  # passing in an array of attribute names, fills a hash with values from the model.
9
+ # can pass in attributes with __ like :passenger__name and the name value will be
10
+ # delegated to passenger. the delegator is created on the fly.
9
11
  def fill_hash(attributes)
10
- attributes.inject({}) do |hash,attribute|
11
- hash[attribute]= send(attribute) if respond_to? attribute
12
+ attributes.inject({}) do |hash, attribute|
13
+ arr = attribute.to_s.split(/__/)
14
+ if arr.size > 1
15
+ attribute = arr.join("_").to_sym
16
+ # check to see if method_name ( delegator ) exists first to ensure its not created again
17
+ unless respond_to? attribute
18
+ # create delegator on the fly
19
+ method_call = arr.shift
20
+ arr.each do |next_call|
21
+ self.class.delegate next_call.to_sym, :to => method_call.to_sym, :prefix => true, :allow_nil => true
22
+ method_call = method_call + "_" + next_call
23
+ end
24
+ end
25
+ end
26
+ hash[attribute] = send(attribute) if respond_to? attribute
12
27
  hash
13
28
  end
14
29
  end
@@ -15,6 +15,18 @@ describe "Sequel::Model extentions" do
15
15
  Dude.first.fill_hash([:doo]).should == {:doo=>1}
16
16
  end
17
17
 
18
+ describe "recognizes __ in method name" do
19
+ it "and creates delegator only once" do
20
+ mock.proxy(Dude).delegate(:name, :to => :my_friend, :prefix => true, :allow_nil => true)
21
+ Dude.first.fill_hash([:my_friend__name,:my_friend__name]).should == {:my_friend_name=>'dans buddy'}
22
+ end
23
+
24
+ it "and creates delegator two levels deep" do
25
+ mock.proxy(Horse).delegate(:my_friend, :to => :dude, :prefix => true, :allow_nil => true)
26
+ mock.proxy(Horse).delegate(:name, :to => :dude_my_friend, :prefix => true, :allow_nil => true)
27
+ Horse.first.fill_hash([:dude__my_friend__name]).should == {:dude_my_friend_name=>'dans buddy'}
28
+ end
29
+ end
18
30
  end
19
31
 
20
32
  it "can update and save" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fossil
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Lardin, Daniel Sudol
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-28 00:00:00 -06:00
12
+ date: 2010-02-03 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency