ns-options 1.0.0.rc1 → 1.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,37 +12,50 @@ module NsOptions::Proxy
12
12
  def self.included(receiver)
13
13
  NsOptions::RootMethods.new(receiver, NAMESPACE).define
14
14
  receiver.class_eval { extend ProxyMethods }
15
- receiver.class_eval { include ProxyMethods } if receiver.kind_of?(Class)
16
15
 
17
16
  if receiver.kind_of?(Class)
18
- receiver.class_eval do
19
17
 
20
- # This hook copies the proxy definition to any subclasses
21
- def self.inherited(subclass)
22
- subclass.__proxy_options__.build_from(self.__proxy_options__)
23
- end
18
+ receiver.class_eval { include ProxyMethods }
19
+ receiver.class_eval { extend ClassReceiverExtendMethods }
20
+ receiver.class_eval { include ClassReceiverIncludeMethods }
24
21
 
25
- # default initializer method
26
- def initialize(configs=nil)
27
- self.apply(configs || {})
28
- end
22
+ else # Module
29
23
 
30
- # equality method override for class-instance proxies
31
- def ==(other_proxy_instance)
32
- __proxy_options__ == other_proxy_instance.__proxy_options__
33
- end
24
+ receiver.class_eval { extend ModuleReceiverExtendMethods }
34
25
 
35
- end
36
- else # Module
37
- receiver.class_eval do
26
+ end
27
+ end
38
28
 
39
- # default initializer method
40
- def self.new(configs=nil)
41
- self.apply(configs || {})
42
- end
29
+ module ClassReceiverExtendMethods
43
30
 
44
- end
31
+ # This hook copies the proxy definition to any subclasses
32
+ def inherited(subclass)
33
+ subclass.__proxy_options__.build_from(self.__proxy_options__)
45
34
  end
35
+
36
+ end
37
+
38
+ module ClassReceiverIncludeMethods
39
+
40
+ # default initializer method
41
+ def initialize(configs=nil)
42
+ self.apply(configs || {})
43
+ end
44
+
45
+ # equality method override for class-instance proxies
46
+ def ==(other_proxy_instance)
47
+ __proxy_options__ == other_proxy_instance.__proxy_options__
48
+ end
49
+
50
+ end
51
+
52
+ module ModuleReceiverExtendMethods
53
+
54
+ # default initializer method
55
+ def new(configs=nil)
56
+ self.apply(configs || {})
57
+ end
58
+
46
59
  end
47
60
 
48
61
  module ProxyMethods
@@ -61,14 +74,21 @@ module NsOptions::Proxy
61
74
  end
62
75
  alias_method :ns, :namespace
63
76
 
77
+ def option_type_class(*args, &block)
78
+ __proxy_options__.option_type_class(*args, &block)
79
+ end
80
+ alias_method :opt_type_class, :option_type_class
81
+
82
+ def has_option?(*args, &block); __proxy_options__.has_option?(*args, &block); end
83
+ def has_namespace?(*args, &block); __proxy_options__.has_namespace?(*args, &block); end
84
+ def required_set?(*args, &block); __proxy_options__.required_set?(*args, &block); end
85
+ def valid?(*args, &block); __proxy_options__.valid?(*args, &block); end
86
+
64
87
  def apply(*args, &block); __proxy_options__.apply(*args, &block); end
65
88
  def to_hash(*args, &block); __proxy_options__.to_hash(*args, &block); end
66
89
  def each(*args, &block); __proxy_options__.each(*args, &block); end
67
90
  def define(*args, &block); __proxy_options__.define(*args, &block); end
68
91
 
69
- def required_set?(*args, &block); __proxy_options__.required_set?(*args, &block); end
70
- def valid?(*args, &block); __proxy_options__.valid?(*args, &block); end
71
-
72
92
  def inspect(*args, &block)
73
93
  "#<#{self.class}:#{'0x%x' % (self.object_id << 1)}:#{__proxy_options__.__name__} #{__proxy_options__.to_hash.inspect}>"
74
94
  end
@@ -1,3 +1,3 @@
1
1
  module NsOptions
2
- VERSION = "1.0.0.rc1"
2
+ VERSION = "1.0.0.rc2"
3
3
  end
data/ns-options.gemspec CHANGED
@@ -2,10 +2,11 @@
2
2
  require File.expand_path('../lib/ns-options/version', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
- gem.authors = ["Collin Redding"]
6
- gem.email = ["collin.redding@reelfx.com"]
5
+ gem.authors = ["Collin Redding", "Kelly Redding"]
6
+ gem.email = ["collin.redding@me.com", "kelly@kellyredding.com"]
7
7
  gem.description = %q{A DSL for defining, organizing and accessing options.}
8
8
  gem.summary = %q{A DSL for defining, organizing and accessing options.}
9
+ gem.homepage = "https://github.com/redding/ns-options"
9
10
 
10
11
  gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
11
12
  gem.files = `git ls-files`.split("\n")
@@ -14,5 +15,5 @@ Gem::Specification.new do |gem|
14
15
  gem.require_paths = ["lib"]
15
16
  gem.version = NsOptions::VERSION
16
17
 
17
- gem.add_development_dependency("assert", ["~>0.8"])
18
+ gem.add_development_dependency("assert", ["~>1.0"])
18
19
  end
@@ -6,6 +6,10 @@ module SomeProxy
6
6
  class SomeThing
7
7
  include NsOptions::Proxy
8
8
 
9
+ def initialize(opts=nil)
10
+ super(opts)
11
+ end
12
+
9
13
  opt :value1
10
14
  opt :value2
11
15
 
@@ -13,17 +13,22 @@ module NsOptions::Proxy
13
13
  end
14
14
 
15
15
  should "respond to proxied namespace methods" do
16
- assert_respond_to :option, subject
17
- assert_respond_to :opt, subject
18
- assert_respond_to :namespace, subject
19
- assert_respond_to :ns, subject
20
- assert_respond_to :apply, subject
21
- assert_respond_to :to_hash, subject
22
- assert_respond_to :each, subject
23
- assert_respond_to :define, subject
24
- assert_respond_to :inspect, subject
25
- assert_respond_to :required_set?, subject
26
- assert_respond_to :valid?, subject
16
+ assert_respond_to :option, subject
17
+ assert_respond_to :opt, subject
18
+ assert_respond_to :option_type_class, subject
19
+ assert_respond_to :opt_type_class, subject
20
+ assert_respond_to :namespace, subject
21
+ assert_respond_to :ns, subject
22
+ assert_respond_to :apply, subject
23
+ assert_respond_to :to_hash, subject
24
+ assert_respond_to :each, subject
25
+ assert_respond_to :define, subject
26
+ assert_respond_to :inspect, subject
27
+ assert_respond_to :has_option?, subject
28
+ assert_respond_to :has_namespace?, subject
29
+ assert_respond_to :required_set?, subject
30
+ assert_respond_to :valid?, subject
31
+ assert_respond_to :__data__, subject
27
32
  end
28
33
 
29
34
  should "create options directly" do
metadata CHANGED
@@ -1,23 +1,24 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ns-options
3
3
  version: !ruby/object:Gem::Version
4
- hash: -1692815510
4
+ hash: -3815139810
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
9
  - 0
10
10
  - rc
11
- - 1
12
- version: 1.0.0.rc1
11
+ - 2
12
+ version: 1.0.0.rc2
13
13
  platform: ruby
14
14
  authors:
15
15
  - Collin Redding
16
+ - Kelly Redding
16
17
  autorequire:
17
18
  bindir: bin
18
19
  cert_chain: []
19
20
 
20
- date: 2012-11-19 00:00:00 Z
21
+ date: 2012-11-28 00:00:00 Z
21
22
  dependencies:
22
23
  - !ruby/object:Gem::Dependency
23
24
  name: assert
@@ -26,17 +27,18 @@ dependencies:
26
27
  requirements:
27
28
  - - ~>
28
29
  - !ruby/object:Gem::Version
29
- hash: 27
30
+ hash: 15
30
31
  segments:
32
+ - 1
31
33
  - 0
32
- - 8
33
- version: "0.8"
34
+ version: "1.0"
34
35
  type: :development
35
36
  requirement: *id001
36
37
  prerelease: false
37
38
  description: A DSL for defining, organizing and accessing options.
38
39
  email:
39
- - collin.redding@reelfx.com
40
+ - collin.redding@me.com
41
+ - kelly@kellyredding.com
40
42
  executables: []
41
43
 
42
44
  extensions: []
@@ -85,7 +87,7 @@ files:
85
87
  - test/unit/proxy_method_tests.rb
86
88
  - test/unit/proxy_tests.rb
87
89
  - test/unit/root_methods_tests.rb
88
- homepage:
90
+ homepage: https://github.com/redding/ns-options
89
91
  licenses: []
90
92
 
91
93
  post_install_message: