gf-treevisitor 0.0.16 → 0.0.18

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.16
1
+ 0.0.18
data/lib/treevisitor.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class TreeVisitor
2
- VERSION = '0.0.16'
2
+ VERSION = '0.0.18'
3
3
  end
@@ -30,17 +30,19 @@ class TreeNode < AbsNode
30
30
 
31
31
  private
32
32
 
33
- def node(name, &block)
33
+ def node(*args, &block)
34
34
  parent_node = @scope_stack.length > 0 ? @scope_stack[-1] : nil
35
- tree_node = @tree_node_class.new(name, parent_node)
35
+ args << parent_node
36
+ tree_node = @tree_node_class.new(*args)
36
37
  @scope_stack.push tree_node
37
- class_eval(&block)
38
+ class_eval(&block) if block
38
39
  @scope_stack.pop
39
40
  end
40
41
 
41
- def leaf(name)
42
+ def leaf(*args)
42
43
  tree_node = @scope_stack[-1]
43
- @leaf_node_class.new(name, tree_node)
44
+ args << tree_node
45
+ @leaf_node_class.new(*args)
44
46
  end
45
47
  end
46
48
 
@@ -15,6 +15,35 @@ class DLeafNode < LeafNode
15
15
  end
16
16
  end
17
17
 
18
+ class ArgsTreeNode < TreeNode
19
+
20
+ attr_reader :description
21
+
22
+ def initialize(name, description, parent)
23
+ super(name, parent)
24
+ @description = description
25
+ end
26
+
27
+ def to_s
28
+ "a: #{description}"
29
+ end
30
+ end
31
+
32
+ class ArgsLeafNode < LeafNode
33
+
34
+ attr_reader :description
35
+
36
+ def initialize(name, description, parent)
37
+ super(name, parent)
38
+ @description = description
39
+ end
40
+
41
+ def to_s
42
+ "a: #{description}"
43
+ end
44
+ end
45
+
46
+
18
47
  class TCTreeNodeDsl < Test::Unit::TestCase
19
48
 
20
49
  def test_dsl
@@ -26,6 +55,7 @@ class TCTreeNodeDsl < Test::Unit::TestCase
26
55
  node "sub" do
27
56
  leaf "l3"
28
57
  end
58
+ node "woleaves"
29
59
  end
30
60
  end
31
61
 
@@ -34,14 +64,13 @@ class TCTreeNodeDsl < Test::Unit::TestCase
34
64
  root
35
65
  |-- l1
36
66
  |-- l2
37
- `-- sub
38
- `-- l3
67
+ |-- sub
68
+ | `-- l3
69
+ `-- woleaves
39
70
  EOS
40
71
  assert_equal out, tree.to_str
41
-
42
72
  end
43
73
 
44
-
45
74
  def test_derivated
46
75
  tree = TreeNode.create(DTreeNode, DLeafNode) do
47
76
  node "root" do
@@ -75,4 +104,25 @@ EOS
75
104
  assert_equal out, tree.to_str
76
105
  end
77
106
 
107
+ def test_derivated_args
108
+ tree = TreeNode.create(ArgsTreeNode, ArgsLeafNode) do
109
+ node "root", "droot" do
110
+ leaf "l1", "dl1"
111
+ leaf "l2", "dl2"
112
+ node "sub", "dsub" do
113
+ leaf "l3", "dl3"
114
+ end
115
+ end
116
+ end
117
+
118
+ # puts tree.to_str
119
+ out =<<EOS
120
+ a: droot
121
+ |-- a: dl1
122
+ |-- a: dl2
123
+ `-- a: dsub
124
+ `-- a: dl3
125
+ EOS
126
+ assert_equal out, tree.to_str
127
+ end
78
128
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gf-treevisitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.16
4
+ version: 0.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - gf