treebank 1.1.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/README +2 -1
  2. data/lib/treebank.rb +5 -8
  3. data/test/test_treebank.rb +12 -12
  4. metadata +2 -2
data/README CHANGED
@@ -28,7 +28,7 @@ in a bracketed tree format.
28
28
 
29
29
  Bracketed tree strings can be used to create Node trees.
30
30
 
31
- irb(main):006:0> t = Treebank::Node.new.from_s('(parent (child1) (child2))')
31
+ irb(main):006:0> t = Treebank::Node.from_s('(parent (child1) (child2))')
32
32
  => <Treebank::Node parent [child1 child2]>
33
33
  irb(main):007:0> puts t
34
34
  (parent (child1) (child2))
@@ -42,6 +42,7 @@ linguistic structure.
42
42
 
43
43
  * 1-0-0 ... First release
44
44
  * 1-1-0 ... Removed unnecessary fsa dependency from gemspec
45
+ * 2-0-0 ... Changed from_s initialization
45
46
 
46
47
  = See Also
47
48
 
data/lib/treebank.rb CHANGED
@@ -18,7 +18,7 @@
18
18
  # Treebank is the namespace that contains all tree-related functions.
19
19
  module Treebank
20
20
 
21
- VERSION = "1.1.0"
21
+ VERSION = "2.0.0"
22
22
 
23
23
  # An enumerable list of tokens in a string representation of a tree
24
24
  #
@@ -244,14 +244,11 @@ module Treebank
244
244
  # * right ... right bracket symbol
245
245
  #
246
246
  # This function uses a Treebank::Parser object to create the tree from
247
- # _s_. This raises an error if this node is not empty.
248
- def from_s(s, left = '(', right = ')')
249
- raise 'This node is not empty.' if not self.empty?
250
- nodes = Parser.new(TokenStream.new(s, left, right), self.class).collect
247
+ # _s_.
248
+ def Node.from_s(s, left = '(', right = ')')
249
+ nodes = Parser.new(TokenStream.new(s, left, right), self).collect
251
250
  raise "#{s} defines multiple trees" if nodes.length != 1
252
- @label = nodes.first.label
253
- @children = nodes.first.collect
254
- self
251
+ nodes.first
255
252
  end
256
253
 
257
254
  # Stringify
@@ -68,7 +68,7 @@ module ParseTreeMixin
68
68
  def test_tree_parse
69
69
  p = Treebank::Parser.new(Treebank::TokenStream.new('(A) (B)'), @node_class)
70
70
  trees = p.collect
71
- assert_equal [@node_class.new.from_s('(A)'), @node_class.new.from_s('(B)')], trees
71
+ assert_equal [@node_class.from_s('(A)'), @node_class.from_s('(B)')], trees
72
72
  assert_kind_of @node_class, trees[0]
73
73
  assert_kind_of @node_class, trees[1]
74
74
  t = Treebank::Parser.new(Treebank::TokenStream.new('(A (B) (C))'), @node_class).collect.first
@@ -79,7 +79,7 @@ module ParseTreeMixin
79
79
  end
80
80
 
81
81
  def test_string_in_constructor
82
- assert_equal [@node_class.new.from_s('(A)'), @node_class.new.from_s('(B)')], Treebank::Parser.new('(A) (B)', @node_class).collect
82
+ assert_equal [@node_class.from_s('(A)'), @node_class.from_s('(B)')], Treebank::Parser.new('(A) (B)', @node_class).collect
83
83
  end
84
84
 
85
85
  end
@@ -133,7 +133,7 @@ module NodeTestMixin
133
133
  # Test adding children in the constructor
134
134
  def test_constructor_children
135
135
  t = @node_class.new('a', ['b', 'c', 'd'])
136
- assert_equal @node_class.new.from_s('(a (b) (c) (d) )'), t, 'Children in constructor'
136
+ assert_equal @node_class.from_s('(a (b) (c) (d) )'), t, 'Children in constructor'
137
137
  end
138
138
 
139
139
  # Add children
@@ -163,17 +163,17 @@ module NodeTestMixin
163
163
  (N (boy)))
164
164
  (VP
165
165
  (V (ran))))'
166
- t = @node_class.new.from_s(s)
166
+ t = @node_class.from_s(s)
167
167
  assert_kind_of @node_class, t, 'from_s'
168
168
  assert_equal s, "#{t}", 'to_s'
169
- m = @node_class.new.from_s(multiline_s)
169
+ m = @node_class.from_s(multiline_s)
170
170
  assert_equal t, m, 'Single-/multi-line equal'
171
171
  end
172
172
 
173
173
  # Simple enumeration
174
174
  def test_enumeration
175
175
  # Enumerate all children.
176
- t = @node_class.new.from_s('(a (b (R) (S) ) (c (T) (U)) )')
176
+ t = @node_class.from_s('(a (b (R) (S) ) (c (T) (U)) )')
177
177
  assert_equal ['a', 'b', 'c', 'R', 'S', 'T', 'U'], t.each_breadth_first.collect {|node| node.label}, 'Full breadth first'
178
178
  assert_equal ['a', 'b', 'R', 'S', 'c', 'T', 'U'], t.each_depth_first.collect {|node| node.label}, 'Full depth first'
179
179
  # Enumerate children beneath a node.
@@ -188,10 +188,10 @@ module NodeTestMixin
188
188
 
189
189
  # Tree equivalence
190
190
  def test_equivalence
191
- t1 = @node_class.new.from_s('(a (b (R) (S) ) (c (T) (U)) )')
192
- t2 = @node_class.new.from_s('(a (b (R) (S) ) (c (T) (U)) )')
193
- s1 = @node_class.new.from_s('(a (b (R) (S) ) (c (T) ) )')
194
- s2 = @node_class.new.from_s('(a (c (R) (S) ) (b (T) (U) ) )')
191
+ t1 = @node_class.from_s('(a (b (R) (S) ) (c (T) (U)) )')
192
+ t2 = @node_class.from_s('(a (b (R) (S) ) (c (T) (U)) )')
193
+ s1 = @node_class.from_s('(a (b (R) (S) ) (c (T) ) )')
194
+ s2 = @node_class.from_s('(a (c (R) (S) ) (b (T) (U) ) )')
195
195
  assert_equal t1, t2, 'Tree equivalence'
196
196
  assert_not_equal t1, s1, 'Tree non-equivalence: different terminals'
197
197
  assert_not_equal t1, s2, 'Tree non-equivalence: reversed non-terminal labels'
@@ -199,7 +199,7 @@ module NodeTestMixin
199
199
  end
200
200
 
201
201
  def test_leaves
202
- t = @node_class.new.from_s('(a (b c) (d e))')
202
+ t = @node_class.from_s('(a (b c) (d e))')
203
203
  leaves = t.each_depth_first.collect
204
204
  c = leaves[2]
205
205
  e = leaves[4]
@@ -229,7 +229,7 @@ class ParentedNodeTest < Test::Unit::TestCase
229
229
  end
230
230
 
231
231
  def test_ancestor_enumeration
232
- t = @node_class.new.from_s('(a (b (R) (S) ) (c (T) (U)) )')
232
+ t = @node_class.from_s('(a (b (R) (S) ) (c (T) (U)) )')
233
233
  assert_equal [t], t.each_parent.collect, 'Ancestors from head'
234
234
  u = t.each_depth_first.find {|node| node.label == 'U'}
235
235
  assert_equal ['U', 'c', 'a'], u.each_parent.collect {|node| node.label}, 'Ancestors from leaf'
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: treebank
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.1.0
7
- date: 2006-12-05 00:00:00 -08:00
6
+ version: 2.0.0
7
+ date: 2007-01-12 00:00:00 -08:00
8
8
  summary: Treebank implements support for ordered n-ary branching tree structures
9
9
  require_paths:
10
10
  - lib