qor_dsl 0.0.4 → 0.0.5

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/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,14 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ qor_dsl (0.0.5)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+
10
+ PLATFORMS
11
+ ruby
12
+
13
+ DEPENDENCIES
14
+ qor_dsl!
@@ -40,12 +40,12 @@ module Qor
40
40
  node_root
41
41
  end
42
42
 
43
- def find(*arguments)
44
- root.find(*arguments)
43
+ def find(*arguments, &block)
44
+ root.find(*arguments, &block)
45
45
  end
46
46
 
47
- def first(*arguments)
48
- root.first(*arguments)
47
+ def first(*arguments, &block)
48
+ root.first(*arguments, &block)
49
49
  end
50
50
  end
51
51
  end
@@ -26,11 +26,11 @@ module Qor
26
26
  self.__children[type.to_sym] = child
27
27
 
28
28
  method_defination = <<-DOC
29
- def #{type}(name=nil, opts={}, &blk)
29
+ def #{type}(name=nil, *data, &blk)
30
30
  config = __children['#{type}'.to_sym]
31
31
  node = Qor::Dsl::Node.new(name)
32
32
  node.add_config(config)
33
- node.options = opts
33
+ node.data = *data
34
34
  node.block = blk
35
35
  node.config.instance_eval(&blk) if block_given? && (config.__children.size > 0)
36
36
  __node.add_child(node)
data/lib/qor_dsl/node.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Qor
2
2
  module Dsl
3
3
  class Node
4
- attr_accessor :name, :config, :parent, :children, :options, :block
4
+ attr_accessor :name, :config, :parent, :children, :data, :options, :block
5
5
 
6
6
  def initialize(name=nil, options={})
7
7
  self.name = name
@@ -12,6 +12,17 @@ module Qor
12
12
  "{#{config.__name}: #{name || 'nil'}}"
13
13
  end
14
14
 
15
+ def options
16
+ return @options if @options.is_a?(Hash)
17
+ return data[-1] if data.is_a?(Array) && data[-1].is_a?(Hash)
18
+ return data if data.is_a?(Hash)
19
+ {}
20
+ end
21
+
22
+ def value
23
+ block.nil? ? (options[:value] || name) : block.call
24
+ end
25
+
15
26
  def add_config(config)
16
27
  self.config = config
17
28
  config.__node = self
@@ -36,10 +47,11 @@ module Qor
36
47
  children << child
37
48
  end
38
49
 
39
- def find(type=nil, name=nil)
50
+ def find(type=nil, name=nil, &block)
40
51
  selected_children = children.select do |child|
41
52
  (type.nil? ? true : (child.config.__name.to_s == type.to_s)) &&
42
- (name.nil? ? true : (child.name.to_s == name.to_s))
53
+ (name.nil? ? true : (child.name.to_s == name.to_s)) &&
54
+ (block.nil? ? true : block.call(child))
43
55
  end
44
56
 
45
57
  return selected_children[0] if !name.nil? && selected_children.length == 1
@@ -47,22 +59,18 @@ module Qor
47
59
  selected_children
48
60
  end
49
61
 
50
- def first(type=nil, name=nil)
51
- selected_children = find(type, name)
62
+ def first(type=nil, name=nil, &block)
63
+ selected_children = find(type, name, &block)
52
64
  selected_children.is_a?(Array) ? selected_children[0] : selected_children
53
65
  end
54
66
 
55
- def value
56
- options[:value] || (block.nil? ? name : block.call)
57
- end
58
-
59
67
  def inspect
60
68
  result = [
61
69
  ['name', name],
62
70
  ['parent', parent && parent.inspect_name],
63
71
  ['config', config.__name],
64
72
  ['children', children.map(&:inspect_name)],
65
- ['options', options],
73
+ ['data', data],
66
74
  ['block', block]
67
75
  ].inject({}) do |s, value|
68
76
  s[value[0]] = value[1] if value[1] && value[1].to_s.length > 0
data/qor_dsl.gemspec CHANGED
@@ -11,5 +11,5 @@ Gem::Specification.new do |gem|
11
11
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
12
12
  gem.name = "qor_dsl"
13
13
  gem.require_paths = ["lib"]
14
- gem.version = "0.0.4"
14
+ gem.version = "0.0.5"
15
15
  end
data/test/layout.rb CHANGED
@@ -1,7 +1,11 @@
1
- template do
1
+ template "daytime", "v1", :since => "09:00", :to => "12:00" do
2
2
  "Hello World"
3
3
  end
4
4
 
5
+ template "daytime", "v2", :since => "13:00", :to => "18:00" do
6
+ "Hello World2"
7
+ end
8
+
5
9
  gadget :product_link, :floating => true
6
10
 
7
11
  gadget :quick_buy, :floating => true do
data/test/layout_test.rb CHANGED
@@ -7,14 +7,27 @@ describe Layout do
7
7
  @root = Layout::Configuration.root
8
8
  end
9
9
 
10
- it "has four children" do
11
- # test query
10
+ it "layout config testing" do
11
+ # Find by type
12
12
  Layout::Configuration.find(:gadget).length.must_equal 2
13
- # test normal find
13
+
14
+ # Find by name
14
15
  Layout::Configuration.find(:gadget, 'quick_buy').name.must_equal :quick_buy
15
- # test Inherit
16
+
17
+ # Find by block
18
+ Layout::Configuration.first(:template) do |n|
19
+ n.options[:since] > "12:50"
20
+ end.value.must_equal 'Hello World2'
21
+
22
+ # Inherit
16
23
  Layout::Configuration.find(:gadget, :product_link).find(:template)[0].value.must_equal "Hello World"
17
24
 
18
- # More is coming... (test multi, alias_node)
25
+ # Store any data
26
+ Layout::Configuration.first(:template).data.must_equal ["v1", {:since => "09:00", :to => "12:00"}]
27
+
28
+ # Options
29
+ Layout::Configuration.find(:template)[1].options.must_equal({:since => "13:00", :to => "18:00"})
30
+
31
+ # More is coming... (multi, alias_node)
19
32
  end
20
33
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qor_dsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -19,6 +19,8 @@ extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
21
  - .gitignore
22
+ - Gemfile
23
+ - Gemfile.lock
22
24
  - README.md
23
25
  - Rakefile
24
26
  - lib/qor_dsl.rb