instant_dsl 0.5.0 → 0.6.0

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.
Files changed (4) hide show
  1. data/README +9 -3
  2. data/VERSION +1 -1
  3. data/lib/instant_dsl.rb +14 -1
  4. metadata +3 -3
data/README CHANGED
@@ -16,12 +16,18 @@ require 'instant_dsl'
16
16
 
17
17
  PageDSL = InstantDSL[:title, :items]
18
18
 
19
- page = PageDSL.new
19
+ @name = 'Janosch'
20
+
21
+ page = PageDSL.new(self)
22
+ # the (optional) parameter is the scope from which
23
+ # instance variables are copied
20
24
 
21
25
  page.instance_eval do
22
- title 'hey'
26
+ title 'hey ' + @name
23
27
  items 'box', 'bib'
24
28
  items 'bob'
25
29
  end
26
30
 
27
- page.dsl_values # => {:title => ['hey'], :items => ['box', 'bib', 'bob']}
31
+ page.items 'blab'
32
+
33
+ page.dsl_values # => {:title => ['hey Janosch'], :items => ['box', 'bib', 'bob', 'blab']}
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.0
1
+ 0.6.0
@@ -1,5 +1,7 @@
1
1
 
2
2
  module InstantDSL
3
+
4
+ # returns a module that can be mixed in or used to extend
3
5
  def self.new(*actions)
4
6
  mod = Module.new
5
7
 
@@ -9,7 +11,8 @@ module InstantDSL
9
11
 
10
12
  actions.each do |act|
11
13
  mod.send :define_method, act do |*args|
12
- @__instant_dsl_values ||= Hash.new {|hsh,k| hsh[k] = [] }
14
+ @__instant_dsl_values ||=
15
+ Hash.new {|hsh,k| hsh[k] = [] }
13
16
  @__instant_dsl_values[act] += args
14
17
  self
15
18
  end
@@ -17,9 +20,19 @@ module InstantDSL
17
20
  mod
18
21
  end
19
22
 
23
+ # returns a class with the module mixed in already
20
24
  def self.[](*actions)
21
25
  kls = Class.new
22
26
  kls.send :include, self.new(*actions)
27
+ # copy instance variables on class initialization
28
+ kls.send :define_method, :initialize do |source_scope=Object.new|
29
+ source_scope.instance_variables.each do |name|
30
+ unless self.instance_variable_defined?(name)
31
+ self.instance_variable_set(name,
32
+ source_scope.instance_variable_get(name))
33
+ end
34
+ end
35
+ end
23
36
  kls
24
37
  end
25
38
  end
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 5
7
+ - 6
8
8
  - 0
9
- version: 0.5.0
9
+ version: 0.6.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - jbe
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-12-08 00:00:00 +01:00
17
+ date: 2010-12-09 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies: []
20
20