ztk 1.4.8 → 1.4.9

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.
@@ -6,23 +6,25 @@ module ZTK::DSL::Core
6
6
 
7
7
  def self.included(base)
8
8
  base.class_eval do
9
+ base.send(:extend, ZTK::DSL::Core::Options::ClassMethods)
10
+ base.add_option(:attribute)
9
11
  base.send(:extend, ZTK::DSL::Core::Attributes::ClassMethods)
10
12
  end
11
13
  end
12
14
 
13
15
  def attributes
14
- @attributes ||= {}
16
+ @attributes ||= Hash.new
15
17
  end
16
18
 
17
19
  # @author Zachary Patten <zachary AT jovelabs DOT com>
18
20
  module ClassMethods
19
21
 
20
22
  def attribute(key, options={})
21
- @attributes ||= {}
22
- @attributes[key] = options[:default]
23
+ attribute_options[key] = options
23
24
 
24
25
  send(:define_method, key) do |*args|
25
26
  if args.count == 0
27
+ attributes[key] ||= self.class.attribute_options[key][:default]
26
28
  attributes[key]
27
29
  else
28
30
  send("#{key}=", *args)
@@ -0,0 +1,25 @@
1
+ module ZTK::DSL::Core
2
+
3
+ # @author Zachary Patten <zachary AT jovelabs DOT com>
4
+ # @api private
5
+ module Options
6
+
7
+ def self.included(base)
8
+ base.class_eval do
9
+ base.send(:extend, ZTK::DSL::Core::Options::ClassMethods)
10
+ end
11
+ end
12
+
13
+ # @author Zachary Patten <zachary AT jovelabs DOT com>
14
+ module ClassMethods
15
+
16
+ def add_option(key)
17
+ option_key = "#{key}_options"
18
+ cattr_accessor option_key
19
+ send(option_key) || send("#{option_key}=", {})
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+ end
data/lib/ztk/dsl/core.rb CHANGED
@@ -5,11 +5,12 @@ module ZTK::DSL
5
5
  # @author Zachary Patten <zachary AT jovelabs DOT com>
6
6
  # @api private
7
7
  module Core
8
- autoload :Attributes, "ztk/dsl/core/attributes"
9
- autoload :Actions, "ztk/dsl/core/actions"
10
- autoload :Dataset, "ztk/dsl/core/dataset"
11
- autoload :IO, "ztk/dsl/core/io"
12
- autoload :Relations, "ztk/dsl/core/relations"
8
+ autoload :Attributes, 'ztk/dsl/core/attributes'
9
+ autoload :Actions, 'ztk/dsl/core/actions'
10
+ autoload :Dataset, 'ztk/dsl/core/dataset'
11
+ autoload :IO, 'ztk/dsl/core/io'
12
+ autoload :Options, 'ztk/dsl/core/options'
13
+ autoload :Relations, 'ztk/dsl/core/relations'
13
14
 
14
15
  def self.included(base)
15
16
  base.class_eval do
@@ -22,6 +23,7 @@ module ZTK::DSL
22
23
  base.send(:include, ZTK::DSL::Core::Actions)
23
24
  base.send(:include, ZTK::DSL::Core::Dataset)
24
25
  base.send(:include, ZTK::DSL::Core::IO)
26
+ base.send(:include, ZTK::DSL::Core::Options)
25
27
  base.send(:include, ZTK::DSL::Core::Relations)
26
28
  end
27
29
  end
data/lib/ztk/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module ZTK
2
2
 
3
3
  # ZTK Version String
4
- VERSION = "1.4.8"
4
+ VERSION = "1.4.9"
5
5
 
6
6
  end
data/spec/ztk/dsl_spec.rb CHANGED
@@ -64,6 +64,17 @@ describe ZTK::DSL do
64
64
  dsl_test.name.should == data
65
65
  end
66
66
 
67
+ it "should allow setting a default value for an attribute" do
68
+ data = "Hello World"
69
+ class DSLTest < ZTK::DSL::Base
70
+ attribute :name, :default => "Hello World"
71
+ end
72
+
73
+ dsl_test = DSLTest.new
74
+
75
+ dsl_test.name.should == data
76
+ end
77
+
67
78
  it "should throw an exception when setting an invalid attribute" do
68
79
  data = "Hello World @ #{Time.now.utc}"
69
80
  class DSLTest < ZTK::DSL::Base
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ztk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.8
4
+ version: 1.4.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -206,6 +206,7 @@ files:
206
206
  - lib/ztk/dsl/core/attributes.rb
207
207
  - lib/ztk/dsl/core/dataset.rb
208
208
  - lib/ztk/dsl/core/io.rb
209
+ - lib/ztk/dsl/core/options.rb
209
210
  - lib/ztk/dsl/core/relations.rb
210
211
  - lib/ztk/dsl/core/relations/belongs_to.rb
211
212
  - lib/ztk/dsl/core/relations/has_many.rb
@@ -264,7 +265,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
264
265
  version: '0'
265
266
  segments:
266
267
  - 0
267
- hash: 1371839736310854390
268
+ hash: 2449655142974466757
268
269
  required_rubygems_version: !ruby/object:Gem::Requirement
269
270
  none: false
270
271
  requirements:
@@ -273,7 +274,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
273
274
  version: '0'
274
275
  segments:
275
276
  - 0
276
- hash: 1371839736310854390
277
+ hash: 2449655142974466757
277
278
  requirements: []
278
279
  rubyforge_project:
279
280
  rubygems_version: 1.8.25