easydsl 0.1.1 → 0.1.2

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.
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