setter 0.0.0 → 0.0.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/lib/setter/setter.rb CHANGED
@@ -1,16 +1,16 @@
1
1
  module Setter
2
- def set(receiver, setting=nil)
3
- set_attributes(receiver) unless setting
4
- set_attribute(receiver, setting) if setting
2
+ def set(receiver, name=nil)
3
+ set_attributes(receiver) unless name
4
+ set_attribute(receiver, name) if name
5
5
  end
6
6
 
7
7
  def set_attributes(receiver)
8
- receiver.class.settings.each do |setting|
9
- set_attribute receiver, setting
8
+ receiver.class.settings.each do |name|
9
+ set_attribute receiver, name
10
10
  end
11
11
  end
12
12
 
13
- def set_attribute(receiver, setting)
14
- receiver.send :"#{setting}=", (send setting) if respond_to?(setting)
13
+ def set_attribute(receiver, name)
14
+ receiver.send :"#{name}=", (send name) if respond_to?(name)
15
15
  end
16
16
  end
@@ -1,13 +1,34 @@
1
+ require 'null_object'
2
+
1
3
  module Setter
2
4
  module Settings
5
+
3
6
  def self.included(base)
4
7
  base.extend ClassMethods
5
8
  end
6
9
 
7
10
  module ClassMethods
8
- def setting(setting)
9
- attr_accessor setting
10
- settings << setting
11
+ def null_object(implementation)
12
+ null_object_options = {}
13
+ implementation.instance_methods.each do |instance_method|
14
+ null_object_options[instance_method] = nil
15
+ end
16
+ NullObject.new null_object_options
17
+ end
18
+
19
+ def setting(name, options={})
20
+ setting_value = (options[:default] if options.is_a? Hash) || nil
21
+ setting_value ||= options
22
+
23
+ define_method "#{name}=" do |value|
24
+ setting_value = value
25
+ end
26
+
27
+ define_method name do
28
+ setting_value
29
+ end
30
+
31
+ settings << name
11
32
  end
12
33
 
13
34
  def settings
metadata CHANGED
@@ -1,16 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: setter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
- - We made this
8
+ - The Sans Collective
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-30 00:00:00.000000000 Z
13
- dependencies: []
12
+ date: 2013-04-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: null_object
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
14
30
  description:
15
31
  email:
16
32
  executables: []
@@ -19,9 +35,8 @@ extra_rdoc_files: []
19
35
  files:
20
36
  - lib/setter/setter.rb
21
37
  - lib/setter/settings.rb
22
- - lib/setter/version.rb
23
38
  - lib/setter.rb
24
- homepage:
39
+ homepage: https://github.com/Sans/setter
25
40
  licenses: []
26
41
  post_install_message:
27
42
  rdoc_options: []
@@ -41,7 +56,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
41
56
  version: '0'
42
57
  requirements: []
43
58
  rubyforge_project:
44
- rubygems_version: 1.8.24
59
+ rubygems_version: 1.8.25
45
60
  signing_key:
46
61
  specification_version: 3
47
62
  summary: Setter Library
@@ -1,3 +0,0 @@
1
- module Setter
2
- VERSION = "0.0.0"
3
- end