gf-treevisitor 0.0.16 → 0.0.18

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