qor_dsl 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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