rsyntaxtree 0.7.1 → 0.7.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Gemfile +1 -1
- data/README.md +9 -8
- data/bin/rsyntaxtree +22 -15
- data/fonts/NotoSans-Bold.ttf +0 -0
- data/fonts/NotoSans-BoldItalic.ttf +0 -0
- data/fonts/NotoSans-Italic.ttf +0 -0
- data/fonts/NotoSans-Regular.ttf +0 -0
- data/fonts/NotoSerif-Bold.ttf +0 -0
- data/fonts/NotoSerif-BoldItalic.ttf +0 -0
- data/fonts/NotoSerif-Italic.ttf +0 -0
- data/fonts/NotoSerif-Regular.ttf +0 -0
- data/lib/rsyntaxtree.rb +77 -44
- data/lib/rsyntaxtree/element.rb +2 -20
- data/lib/rsyntaxtree/elementlist.rb +2 -18
- data/lib/rsyntaxtree/error_message.rb +23 -18
- data/lib/rsyntaxtree/graph.rb +305 -0
- data/lib/rsyntaxtree/string_parser.rb +28 -38
- data/lib/rsyntaxtree/svg_graph.rb +133 -314
- data/lib/rsyntaxtree/tree_graph.rb +151 -318
- data/lib/rsyntaxtree/utils.rb +20 -0
- data/lib/rsyntaxtree/version.rb +1 -1
- data/rsyntaxtree.gemspec +1 -1
- metadata +19 -14
- data/fonts/DroidSans.ttf +0 -0
- data/fonts/DroidSerif-Regular.ttf +0 -0
- data/fonts/NotoSansMonoCJKjp-Regular.otf +0 -0
- data/lib/rsyntaxtree/imgutils.rb +0 -70
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b2b0490e0b866d5e82213a7e131af2eb12f4561b5d2132298324e2309303ad65
|
4
|
+
data.tar.gz: aa27a23a4c922af2c2d3f701ca6cc571fab074eecc3cd327c2296fd79b1d42ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2885be41a0cda5efb42ee408f2ec24fc6da741a9460c50a4bb3376a7f70463748960de0be1c7a5f7822592d04c4b79b50f4e90ebe4b1c0964e2d4acffd28be8
|
7
|
+
data.tar.gz: b861f941a2082d9c02119bb404e96dd121b739315df0188d31382adccf6810f85b57289c3675fcb1e07bc287387720a33df8892c1e02a13f6f524f76e0b41d97
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -2,8 +2,6 @@
|
|
2
2
|
|
3
3
|
**RSyntaxTree** is a graphical syntax tree generator written in the Ruby programming language inspired by [phpSyntaxTree](http://ironcreek.net/phpsyntaxtree/).
|
4
4
|
|
5
|
-
- - -
|
6
|
-
|
7
5
|
### Web Interface
|
8
6
|
|
9
7
|
Working web interface of is available at <https://yohasebe.com/rsyntaxtree>.
|
@@ -17,7 +15,7 @@ Working web interface of is available at <https://yohasebe.com/rsyntaxtree>.
|
|
17
15
|
For the web interface, see Usage section of <https://yohasebe.com/rsyntaxtree>.
|
18
16
|
|
19
17
|
For the command-line interface, type `$rsyntaxtree -h` after installation. Here's what you get:
|
20
|
-
|
18
|
+
|
21
19
|
```text
|
22
20
|
RSyntaxTree, (linguistic) syntax tree generator written in Ruby.
|
23
21
|
|
@@ -27,14 +25,15 @@ where [options] are:
|
|
27
25
|
-o, --outdir=<s> Output directory (default: ./)
|
28
26
|
-f, --format=<s> Output format: png, pdf, or svg (default: png)
|
29
27
|
-l, --leafstyle=<s> visual style of tree leaves: auto, triangle, bar, or nothing (default: auto)
|
30
|
-
-n, --fontstyle=<s> Font style
|
28
|
+
-n, --fontstyle=<s> Font style: sans, serif, cjk (default: sans)
|
31
29
|
-t, --font=<s> Path to a ttf font used to generate tree (optional)
|
32
30
|
-s, --fontsize=<i> Size: 8-26 (default: 16)
|
33
|
-
-m, --margin=<i> Margin: 0-120 (default: 0)
|
34
31
|
-c, --color=<s> Color text and bars: on or off (default: on)
|
35
32
|
-y, --symmetrize=<s> Generate symmetrical, balanced tree: on or off (default: on)
|
36
33
|
-a, --autosub=<s> Put subscript numbers to nodes: on or off (default: off)
|
37
|
-
-
|
34
|
+
-m, --margin=<i> Margin: 0-120 (default: 0)
|
35
|
+
-v, --vheight=<f> Connector Height: 0.5-2.0 (default: 1.0)
|
36
|
+
-e, --version Print version and exit
|
38
37
|
-h, --help Show this message
|
39
38
|
```
|
40
39
|
|
@@ -46,17 +45,19 @@ There are several modes in which the connectors between terminal nodes and their
|
|
46
45
|
|
47
46
|
You can put a subscript to any node by putting the _ character between the main label and the subscript. For example, NP_TOP will be rendered as NP<sub>TOP</sub>. Or you can select the “Auto subscript” option so that nodes of the same label will be automatically numbered. (e.g. NP<sub>1</sub>, NP<sub>2</sub>)</p>
|
48
47
|
|
48
|
+
See https://yohasebe.com/rsyntaxtree for more detailed info about the syntax.
|
49
|
+
|
49
50
|
### Example
|
50
51
|
|
51
52
|
Bracket notation (auto-subscript-on):
|
52
53
|
|
53
54
|
```text
|
54
|
-
[S [NP RSyntaxTree^][VP [V generates][NP multilingual syntax trees]]]
|
55
|
+
[S [NP RSyntaxTree^][VP [V generates][NP [Adj multilingual] [NP syntax trees]]]]
|
55
56
|
```
|
56
57
|
|
57
58
|
Resulting PNG
|
58
59
|
|
59
|
-
![RSyntaxTree generates multilingual syntax trees](https://i.gyazo.com/
|
60
|
+
![RSyntaxTree generates multilingual syntax trees](https://i.gyazo.com/6bb68b0bdb35d7a10c4a11d5788d484f.png)
|
60
61
|
|
61
62
|
### Development
|
62
63
|
|
data/bin/rsyntaxtree
CHANGED
@@ -4,10 +4,10 @@
|
|
4
4
|
$LOAD_PATH << File.join( File.dirname(__FILE__), '../lib')
|
5
5
|
|
6
6
|
require 'rsyntaxtree'
|
7
|
-
require '
|
7
|
+
require 'optimist'
|
8
8
|
|
9
|
-
opts =
|
10
|
-
version "RSyntaxTree #{RSyntaxTree::VERSION} (c)
|
9
|
+
opts = Optimist::options do
|
10
|
+
version "RSyntaxTree #{RSyntaxTree::VERSION} (c) 2021 Yoichiro Hasebe"
|
11
11
|
banner <<-EOS
|
12
12
|
RSyntaxTree, (linguistic) syntax tree generator written in Ruby.
|
13
13
|
|
@@ -18,17 +18,19 @@ EOS
|
|
18
18
|
|
19
19
|
opt :outdir, "Output directory",
|
20
20
|
:default => "./"
|
21
|
-
opt :format, "Output format: png, pdf, or svg",
|
21
|
+
opt :format, "Output format: png, gif, jpg, pdf, or svg",
|
22
22
|
:default => "png"
|
23
23
|
opt :leafstyle, "visual style of tree leaves: auto, triangle, bar, or nothing",
|
24
24
|
:default => "auto"
|
25
|
-
opt :fontstyle, "Font style (available when ttf font is specified): sans, serif,
|
25
|
+
opt :fontstyle, "Font style (available when ttf font is specified): sans, serif, cjk",
|
26
26
|
:default => "sans"
|
27
27
|
opt :font, "Path to a ttf font used to generate tree (optional)", :type => String
|
28
28
|
opt :fontsize, "Size: 8-26",
|
29
29
|
:default => 16
|
30
30
|
opt :margin, "Margin: 0-120",
|
31
31
|
:default => 0
|
32
|
+
opt :vheight, "Connector Height: 0.5-2.0",
|
33
|
+
:default => 1.0
|
32
34
|
opt :color, "Color text and bars: on or off",
|
33
35
|
:default => "on"
|
34
36
|
opt :symmetrize, "Generate symmetrical, balanced tree: on or off",
|
@@ -37,16 +39,17 @@ EOS
|
|
37
39
|
:default => "off"
|
38
40
|
end
|
39
41
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
42
|
+
Optimist::die :outdir, "must be an exsting directory path" unless FileTest::directory?(opts[:outdir])
|
43
|
+
Optimist::die :format, "must be png, jpg, gif, or svg" unless /\A(png|jpg|gif|pdf|svg)\z/ =~ opts[:format]
|
44
|
+
Optimist::die :leafstyle, "must be auto, triangle, bar, or nothing" unless /\A(auto|triangle|bar|nothing)\z/ =~ opts[:leafstyle]
|
45
|
+
Optimist::die :fontstyle, "must be sans, serif, cjk" unless /\A(sans|serif|cjk)\z/ =~ opts[:fontstyle]
|
46
|
+
Optimist::die :font, "must be path to an existing ttf font" if opts[:font] && !File::exists?(opts[:font])
|
47
|
+
Optimist::die :fontsize, "must be in the range of 8-26" unless opts[:fontsize] >= 8 && opts[:fontsize] <= 26
|
48
|
+
Optimist::die :color, "must be either on or off" unless /\A(on|off)\z/ =~ opts[:color]
|
49
|
+
Optimist::die :symmetrize, "must be either on or off" unless /\A(on|off)\z/ =~ opts[:symmetrize]
|
50
|
+
Optimist::die :autosub, "must be either on or off" unless /\A(on|off)\z/ =~ opts[:autosub]
|
51
|
+
Optimist::die :margin, "must be in the range of 0-120" if opts[:margin] < 0 || opts[:margin] > 120
|
52
|
+
Optimist::die :vheight, "must be in the range of 0.5-2.0" if opts[:vheight] < 0.5 || opts[:vheight] > 2.0
|
50
53
|
|
51
54
|
string_opts = {}
|
52
55
|
opts.each do |key, value|
|
@@ -68,6 +71,10 @@ outfile = File.new(File.expand_path(string_opts[:outdir]) + "/syntree." + ext, "
|
|
68
71
|
case ext
|
69
72
|
when "png"
|
70
73
|
outfile.write rsg.draw_png
|
74
|
+
when "jpg"
|
75
|
+
outfile.write rsg.draw_jpg
|
76
|
+
when "gif"
|
77
|
+
outfile.write rsg.draw_gif
|
71
78
|
when "pdf"
|
72
79
|
outfile.write rsg.draw_pdf
|
73
80
|
when "svg"
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/rsyntaxtree.rb
CHANGED
@@ -12,25 +12,11 @@
|
|
12
12
|
# excellent program phpSyntaxTree.
|
13
13
|
# Copyright (c) 2007-2018 Yoichiro Hasebe <yohasebe@gmail.com>
|
14
14
|
# Copyright (c) 2003-2004 Andre Eisenbach <andre@ironcreek.net>
|
15
|
-
#
|
16
|
-
# This program is free software; you can redistribute it and/or modify
|
17
|
-
# it under the terms of the GNU General Public License as published by
|
18
|
-
# the Free Software Foundation; either version 2 of the License, or
|
19
|
-
# (at your option) any later version.
|
20
|
-
#
|
21
|
-
# This program is distributed in the hope that it will be useful,
|
22
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
23
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
24
|
-
# GNU General Public License for more details.
|
25
|
-
#
|
26
|
-
# You should have received a copy of the GNU General Public License
|
27
|
-
# along with this program; if not, write to the Free Software
|
28
|
-
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
29
15
|
|
30
16
|
$LOAD_PATH << File.join( File.dirname(__FILE__), 'rsyntaxtree')
|
31
17
|
|
32
|
-
require '
|
33
|
-
require '
|
18
|
+
require 'cgi'
|
19
|
+
require 'utils'
|
34
20
|
require 'element'
|
35
21
|
require 'elementlist'
|
36
22
|
require 'string_parser'
|
@@ -38,10 +24,14 @@ require 'tree_graph'
|
|
38
24
|
require 'svg_graph'
|
39
25
|
require 'error_message'
|
40
26
|
require 'version'
|
41
|
-
require 'pp'
|
42
27
|
|
43
28
|
FONT_DIR = File.expand_path(File.dirname(__FILE__) + "/../fonts")
|
44
29
|
|
30
|
+
ETYPE_UNDEFINED = 0
|
31
|
+
ETYPE_NODE = 1
|
32
|
+
ETYPE_LEAF = 2
|
33
|
+
SUBSCRIPT_CONST = 0.7
|
34
|
+
|
45
35
|
class RSGenerator
|
46
36
|
def initialize(params = {})
|
47
37
|
new_params = {}
|
@@ -49,7 +39,7 @@ class RSGenerator
|
|
49
39
|
key = keystr.to_sym
|
50
40
|
case key
|
51
41
|
when :data
|
52
|
-
data =
|
42
|
+
data = CGI.unescape(value)
|
53
43
|
data = data.gsub('-AMP-', '&')
|
54
44
|
.gsub('-PERCENT-', "%")
|
55
45
|
.gsub('-PRIME-', "'")
|
@@ -57,31 +47,43 @@ class RSGenerator
|
|
57
47
|
.gsub('-OABRACKET-', '<')
|
58
48
|
.gsub('-CABRACKET-', '>')
|
59
49
|
new_params[key] = data
|
50
|
+
new_params[:multibyte] = data.contains_cjk?
|
60
51
|
when :symmetrize, :color, :autosub
|
61
52
|
new_params[key] = value && value != "off" ? true : false
|
62
53
|
when :fontsize
|
63
54
|
new_params[key] = value.to_i
|
64
55
|
when :margin
|
65
56
|
new_params[key] = value.to_i
|
57
|
+
when :vheight
|
58
|
+
new_params[key] = value.to_f
|
66
59
|
when :fontstyle
|
67
60
|
if value == "noto-sans" || value == "sans"
|
68
|
-
new_params[:font] = FONT_DIR + "/
|
61
|
+
new_params[:font] = FONT_DIR + "/NotoSans-Regular.ttf"
|
62
|
+
new_params[:font_it] = FONT_DIR + "/NotoSans-Italic.ttf"
|
63
|
+
new_params[:font_bd] = FONT_DIR + "/NotoSans-Bold.ttf"
|
64
|
+
new_params[:font_bdit] = FONT_DIR + "/NotoSans-BoldItalic.ttf"
|
65
|
+
new_params[:font_cjk] = FONT_DIR + "/NotoSansCJKjp-Regular.otf"
|
66
|
+
new_params[:fontstyle] = "sans"
|
69
67
|
elsif value == "noto-serif" || value == "serif"
|
70
|
-
new_params[:font] = FONT_DIR + "/
|
71
|
-
|
72
|
-
new_params[:
|
73
|
-
|
74
|
-
new_params[:
|
75
|
-
|
76
|
-
new_params[:font] = FONT_DIR + "/DroidSerif-Regular.ttf"
|
68
|
+
new_params[:font] = FONT_DIR + "/NotoSerif-Regular.ttf"
|
69
|
+
new_params[:font_it] = FONT_DIR + "/NotoSerif-Italic.ttf"
|
70
|
+
new_params[:font_bd] = FONT_DIR + "/NotoSerif-Bold.ttf"
|
71
|
+
new_params[:font_bdit] = FONT_DIR + "/NotoSerif-BoldItalic.ttf"
|
72
|
+
new_params[:font_cjk] = FONT_DIR + "/NotoSerifCJKjp-Regular.otf"
|
73
|
+
new_params[:fontstyle] = "serif"
|
77
74
|
elsif value == "cjk zenhei" || value == "cjk"
|
78
75
|
new_params[:font] = FONT_DIR + "/wqy-zenhei.ttf"
|
76
|
+
new_params[:font_it] = FONT_DIR + "/NotoSans-Italic.ttf"
|
77
|
+
new_params[:font_bd] = FONT_DIR + "/NotoSans-Bold.ttf"
|
78
|
+
new_params[:font_bdit] = FONT_DIR + "/NotoSans-BoldItalic.ttf"
|
79
|
+
new_params[:font_cjk] = FONT_DIR + "/wqy-zenhei.ttf"
|
80
|
+
new_params[:fontstyle] = "sans"
|
79
81
|
end
|
80
82
|
else
|
81
83
|
new_params[key] = value
|
82
84
|
end
|
83
85
|
end
|
84
|
-
|
86
|
+
|
85
87
|
@params = {
|
86
88
|
:symmetrize => true,
|
87
89
|
:color => true,
|
@@ -89,49 +91,80 @@ class RSGenerator
|
|
89
91
|
:fontsize => 18,
|
90
92
|
:format => "png",
|
91
93
|
:leafstyle => "auto",
|
92
|
-
:font => FONT_DIR + "/NotoSansCKjp-Regular.otf",
|
93
94
|
:filename => "syntree",
|
94
95
|
:data => "",
|
95
|
-
:margin => 0
|
96
|
+
:margin => 0,
|
97
|
+
:vheight => 1.0,
|
98
|
+
:fontstyle => "sans",
|
99
|
+
:font => "/NotoSansCJKjp-Regular.otf",
|
100
|
+
:font_it => "/NotoSans-Italic.ttf",
|
101
|
+
:font_bd => "/NotoSans-Bold.ttf",
|
102
|
+
:font_bdit => "/NotoSans-BoldItalic.ttf",
|
96
103
|
}
|
97
|
-
|
104
|
+
@metrics = {
|
105
|
+
:e_width => 120,
|
106
|
+
:e_padd => 14,
|
107
|
+
:v_space => 20,
|
108
|
+
:h_space => 20,
|
109
|
+
:b_side => 10,
|
110
|
+
:b_topbot => 10
|
111
|
+
}
|
112
|
+
|
98
113
|
@params.merge! new_params
|
114
|
+
@params[:fontsize] = @params[:fontsize] * 2
|
115
|
+
@params[:margin] = @params[:margin] * 2
|
116
|
+
@metrics[:v_space] = @metrics[:v_space] * @params[:vheight]
|
99
117
|
end
|
100
118
|
|
101
119
|
def self.check_data(text)
|
102
120
|
sp = StringParser.new(text)
|
103
121
|
sp.valid?
|
104
122
|
end
|
105
|
-
|
123
|
+
|
106
124
|
def draw_png
|
107
125
|
@params[:format] = "png"
|
108
126
|
draw_tree
|
109
127
|
end
|
110
128
|
|
129
|
+
def draw_jpg
|
130
|
+
@params[:format] = "jpg"
|
131
|
+
draw_tree
|
132
|
+
end
|
133
|
+
|
134
|
+
def draw_gif
|
135
|
+
@params[:format] = "gif"
|
136
|
+
draw_tree
|
137
|
+
end
|
138
|
+
|
111
139
|
def draw_pdf
|
112
140
|
@params[:format] = "pdf"
|
113
141
|
draw_tree
|
114
142
|
end
|
115
|
-
|
116
|
-
def draw_tree
|
117
|
-
sp = StringParser.new(@params[:data])
|
118
|
-
sp.parse
|
119
|
-
sp.auto_subscript if @params[:autosub]
|
120
|
-
elist = sp.get_elementlist
|
121
|
-
graph = TreeGraph.new(elist,
|
122
|
-
@params[:symmetrize], @params[:color], @params[:leafstyle], @params[:font], @params[:fontsize], @params[:format], @params[:margin])
|
123
|
-
graph.to_blob(@params[:format])
|
124
|
-
end
|
125
|
-
|
143
|
+
|
126
144
|
def draw_svg
|
127
145
|
@params[:format] = "svg"
|
128
146
|
sp = StringParser.new(@params[:data].gsub('&', '&').gsub('%', '%'))
|
129
147
|
sp.parse
|
130
148
|
sp.auto_subscript if @params[:autosub]
|
131
149
|
elist = sp.get_elementlist
|
132
|
-
graph = SVGGraph.new(elist,
|
133
|
-
@params[:symmetrize], @params[:color], @params[:leafstyle], @params[:
|
150
|
+
graph = SVGGraph.new(elist, @metrics,
|
151
|
+
@params[:symmetrize], @params[:color], @params[:leafstyle], @params[:multibyte],
|
152
|
+
@params[:fontstyle], @params[:fontsize],
|
153
|
+
)
|
134
154
|
graph.svg_data
|
135
155
|
end
|
156
|
+
|
157
|
+
def draw_tree
|
158
|
+
sp = StringParser.new(@params[:data])
|
159
|
+
sp.parse
|
160
|
+
sp.auto_subscript if @params[:autosub]
|
161
|
+
elist = sp.get_elementlist
|
162
|
+
graph = TreeGraph.new(elist, @metrics,
|
163
|
+
@params[:symmetrize], @params[:color], @params[:leafstyle], @params[:multibyte],
|
164
|
+
@params[:fontstyle], @params[:font], @params[:font_it], @params[:font_bd], @params[:font_bdit],
|
165
|
+
@params[:font_cjk], @params[:fontsize], @params[:margin],
|
166
|
+
)
|
167
|
+
graph.to_blob(@params[:format])
|
168
|
+
end
|
136
169
|
end
|
137
170
|
|
data/lib/rsyntaxtree/element.rb
CHANGED
@@ -10,26 +10,8 @@
|
|
10
10
|
# This file is part of RSyntaxTree, which is a ruby port of Andre Eisenbach's
|
11
11
|
# excellent program phpSyntaxTree.
|
12
12
|
#
|
13
|
-
# Copyright (c) 2007-
|
13
|
+
# Copyright (c) 2007-2021 Yoichiro Hasebe <yohasebe@gmail.com>
|
14
14
|
# Copyright (c) 2003-2004 Andre Eisenbach <andre@ironcreek.net>
|
15
|
-
#
|
16
|
-
# This program is free software; you can redistribute it and/or modify
|
17
|
-
# it under the terms of the GNU General Public License as published by
|
18
|
-
# the Free Software Foundation; either version 2 of the License, or
|
19
|
-
# (at your option) any later version.
|
20
|
-
#
|
21
|
-
# This program is distributed in the hope that it will be useful,
|
22
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
23
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
24
|
-
# GNU General Public License for more details.
|
25
|
-
#
|
26
|
-
# You should have received a copy of the GNU General Public License
|
27
|
-
# along with this program; if not, write to the Free Software
|
28
|
-
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
29
|
-
|
30
|
-
ETYPE_UNDEFINED = 0
|
31
|
-
ETYPE_NODE = 1
|
32
|
-
ETYPE_LEAF = 2
|
33
15
|
|
34
16
|
class Element
|
35
17
|
|
@@ -50,7 +32,7 @@ class Element
|
|
50
32
|
@triangle = false # draw triangle instead of stright bar when in auto mode
|
51
33
|
end
|
52
34
|
end
|
53
|
-
|
35
|
+
|
54
36
|
# Debug helper function
|
55
37
|
def dump
|
56
38
|
printf( "ID : %d\n", @id );
|
@@ -10,22 +10,8 @@
|
|
10
10
|
# This file is part of RSyntaxTree, which is a ruby port of Andre Eisenbach's
|
11
11
|
# excellent program phpSyntaxTree.
|
12
12
|
#
|
13
|
-
# Copyright (c) 2007-
|
13
|
+
# Copyright (c) 2007-2021 Yoichiro Hasebe <yohasebe@gmail.com>
|
14
14
|
# Copyright (c) 2003-2004 Andre Eisenbach <andre@ironcreek.net>
|
15
|
-
#
|
16
|
-
# This program is free software; you can redistribute it and/or modify
|
17
|
-
# it under the terms of the GNU General Public License as published by
|
18
|
-
# the Free Software Foundation; either version 2 of the License, or
|
19
|
-
# (at your option) any later version.
|
20
|
-
#
|
21
|
-
# This program is distributed in the hope that it will be useful,
|
22
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
23
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
24
|
-
# GNU General Public License for more details.
|
25
|
-
#
|
26
|
-
# You should have received a copy of the GNU General Public License
|
27
|
-
# along with this program; if not, write to the Free Software
|
28
|
-
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
29
15
|
|
30
16
|
require 'element'
|
31
17
|
|
@@ -36,7 +22,7 @@ class ElementList
|
|
36
22
|
@elements = Array.new # The element array
|
37
23
|
@iterator = -1 # Iterator index (used for get_first / get_next)
|
38
24
|
end
|
39
|
-
|
25
|
+
|
40
26
|
def add(element)
|
41
27
|
@elements << element
|
42
28
|
if(element.parent != 0)
|
@@ -132,6 +118,4 @@ class ElementList
|
|
132
118
|
end
|
133
119
|
return maxlevel + 1;
|
134
120
|
end
|
135
|
-
|
136
121
|
end
|
137
|
-
|