easydsl 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a6f2bb1a8dbc0ece711617165a48837362dbb071
4
- data.tar.gz: d30bc490e726fc53603234e473806df65d0d3c73
3
+ metadata.gz: 15e90cbb3aa3b31d9b1431a5a03150fcce3ee8fe
4
+ data.tar.gz: 22764b495dcf37ed851751466b834776d946bf9d
5
5
  SHA512:
6
- metadata.gz: e99e1c93f4a53df6d15574757f72d769e1e44f0398326ec03de6c6818579d4fdc23ab0dffd375625b136b08f651207377674cb78edff21c5975a144ee5d6f61b
7
- data.tar.gz: 923bfc0dc4af71e2d6dd61b6f8e8af75dbd6dd04896c9579671037377f0fd6964ae7c605fe26a08e095411e311f0e7e754674e356c6e6ed5c6b38813e58057f5
6
+ metadata.gz: 018ac1248ba9677c22587f3e8d97a74b747c92d8361e6c9a1581615d119e7dee001856ffee64e846bf7c3520250feb51f4fd8407ab73093ccc65aa18f7889e6b
7
+ data.tar.gz: 5f7fc73e69c593f80308b108eccb254e6bb96fd359ea760149f4ca0747de3822db0c9f1e834de7c56fe140d5e525fd55baa31e4408fc29e748c3e98e4ee1c2c1
data/.rubocop.yml CHANGED
@@ -44,3 +44,9 @@ Rails:
44
44
 
45
45
  Metrics/ClassLength:
46
46
  Max: 150
47
+
48
+ Style/AccessorMethodName:
49
+ Enabled: false
50
+
51
+ Style/PredicateName:
52
+ Enabled: false
data/lib/easydsl.rb CHANGED
@@ -7,6 +7,6 @@ module Easydsl
7
7
  raise(ArgumentError, 'A block is mandatory.') unless block_given?
8
8
  tree = NodeBuilder.new('root')
9
9
  tree.instance_exec(&block)
10
- Node.new(tree.name, tree.args, 0, nil, tree.nodes)
10
+ Node.new(tree.get_name, tree.get_args, 0, nil, tree.get_nodes)
11
11
  end
12
12
  end
data/lib/easydsl/node.rb CHANGED
@@ -3,66 +3,89 @@ require 'easydsl/node_array'
3
3
 
4
4
  module Easydsl
5
5
  class Node
6
- attr_reader :name, :index, :parent, :singleton
7
- attr_accessor :args
8
-
9
6
  def initialize(name, args, index, parent, node_builders = [])
10
7
  @name = name.to_s.chomp('!').to_sym
11
8
  @singleton = name[-1] == '!'
12
9
  @args = args
13
10
  @index = index
14
11
  @parent = parent
15
- node_builders.each_with_index do |item, i|
16
- add_child(item.name, item.args, i, self, item.nodes)
17
- end
12
+ add_hierarchy(self, node_builders, 0)
18
13
  end
19
14
 
20
- def nodes
15
+ def get_nodes
21
16
  @nodes ||= Hash.new { |h, k| h[k] = NodeArray.new }
22
17
  end
23
18
 
24
- def all_nodes
19
+ def get_all_nodes
25
20
  all = []
26
21
  nodes.each { |k, _v| all += nodes[k] }
27
- all.sort! { |a, b| a.index <=> b.index }
22
+ all.sort! { |a, b| a.get_index <=> b.get_index }
23
+ end
24
+
25
+ def get_name
26
+ @name
27
+ end
28
+
29
+ def get_args
30
+ @args
31
+ end
32
+
33
+ def set_args(value)
34
+ @args = value
28
35
  end
29
36
 
30
- def max_index
31
- all_nodes.map(&:index).max || 0
37
+ def get_max_index
38
+ get_all_nodes.map(&:get_index).max || 0
39
+ end
40
+
41
+ def get_index
42
+ @index
43
+ end
44
+
45
+ def get_parent
46
+ @parent
32
47
  end
33
48
 
34
49
  def define(&block)
35
50
  add_block(&block)
36
51
  end
37
52
 
53
+ def is_singleton?
54
+ @singleton
55
+ end
56
+
38
57
  protected
39
58
 
59
+ def nodes
60
+ get_nodes
61
+ end
62
+
40
63
  def add_hierarchy(to, tree, base_index)
41
64
  tree.each_with_index do |item, index|
42
- to.add_child(item.name, item.args, base_index + index, to, item.nodes)
65
+ to.add_child(item.get_name, item.get_args, base_index + index, to, item.get_nodes)
43
66
  end
44
67
  end
45
68
 
46
69
  def add_block(&block)
47
70
  tree = NodeBuilder.new('tree')
48
71
  tree.instance_exec(&block)
49
- add_hierarchy(self, tree.nodes, max_index)
72
+ add_hierarchy(self, tree.get_nodes, get_max_index)
50
73
  end
51
74
 
52
75
  def add_child(name, args, index, parent, node_builders = [])
53
76
  node = handle_singleton(name, args, node_builders)
54
77
  return node unless node.nil?
55
78
  node = Node.new(name, args, index, parent, node_builders)
56
- nodes[node.name] << node
79
+ nodes[node.get_name] << node
57
80
  node
58
81
  end
59
82
 
60
83
  def handle_singleton(name, args, node_builders = [])
61
84
  return nil unless nodes.key?(name)
62
85
  node = nodes[name].first
63
- return nil if node.nil? || node.singleton == false
64
- node.args = args
65
- add_hierarchy(node, node_builders, node.max_index)
86
+ return nil if node.nil? || node.is_singleton? == false
87
+ node.set_args(args)
88
+ add_hierarchy(node, node_builders, node.get_max_index)
66
89
  nodes[name].first
67
90
  end
68
91
 
@@ -79,7 +102,7 @@ module Easydsl
79
102
  child = if collection.count > 0
80
103
  collection.first
81
104
  else
82
- add_child(method_symbol, args, max_index, self)
105
+ add_child(method_symbol, args, get_max_index, self)
83
106
  end
84
107
  child.add_block(&block)
85
108
  end
@@ -100,9 +123,9 @@ module Easydsl
100
123
  def handle_assignment(method_symbol, *args)
101
124
  collection = nodes[method_symbol]
102
125
  if collection.count > 0
103
- collection.first.args = args
126
+ collection.first.set_args(args)
104
127
  else
105
- add_child(method_symbol, args, max_index, self)
128
+ add_child(method_symbol, args, get_max_index, self)
106
129
  end
107
130
  end
108
131
 
@@ -1,11 +1,17 @@
1
1
  module Easydsl
2
2
  class NodeBuilder
3
- attr_reader :name, :args
4
-
5
- def nodes
3
+ def get_nodes
6
4
  @nodes ||= []
7
5
  end
8
6
 
7
+ def get_name
8
+ @name
9
+ end
10
+
11
+ def get_args
12
+ @args
13
+ end
14
+
9
15
  def initialize(name, *args)
10
16
  @name = name
11
17
  @args = args
@@ -13,7 +19,7 @@ module Easydsl
13
19
 
14
20
  def method_missing(method_symbol, *args, &block)
15
21
  child = NodeBuilder.new(method_symbol, *args)
16
- nodes.push(child)
22
+ get_nodes.push(child)
17
23
  child.instance_exec(&block) if block_given?
18
24
  end
19
25
  end
@@ -1,3 +1,3 @@
1
1
  module Easydsl
2
- VERSION = '0.1.1'.freeze
2
+ VERSION = '0.1.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easydsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mirko Mignini
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-31 00:00:00.000000000 Z
11
+ date: 2016-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler