rogdl 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +5 -0
- data/README.txt +51 -0
- data/lib/array.rb +18 -0
- data/lib/fixnum.rb +10 -0
- data/lib/hash.rb +10 -0
- data/lib/nil.rb +21 -0
- data/lib/node.rb +139 -0
- data/lib/parser.rb +398 -0
- data/lib/rogdl.rb +14 -0
- data/lib/schema.rb +140 -0
- data/lib/string.rb +38 -0
- data/lib/symbol.rb +9 -0
- data/lib/writer.rb +117 -0
- data/test/test_array.rb +30 -0
- data/test/test_fixnum.rb +13 -0
- data/test/test_hash.rb +19 -0
- data/test/test_nil.rb +30 -0
- data/test/test_node.rb +279 -0
- data/test/test_parser.rb +189 -0
- data/test/test_rogdl.rb +11 -0
- data/test/test_schema.rb +66 -0
- data/test/test_string.rb +32 -0
- data/test/test_symbol.rb +13 -0
- data/test/test_writer.rb +71 -0
- metadata +70 -0
data/test/test_parser.rb
ADDED
@@ -0,0 +1,189 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'lib/rogdl'
|
3
|
+
|
4
|
+
class TestParser < Test::Unit::TestCase
|
5
|
+
include Rogdl
|
6
|
+
|
7
|
+
def test_initialize
|
8
|
+
parser = Parser.new
|
9
|
+
assert_equal false, parser.nil?
|
10
|
+
assert_equal [[]], parser.lines
|
11
|
+
end
|
12
|
+
|
13
|
+
def xtest_parse
|
14
|
+
text = <<TEXT
|
15
|
+
# leading comments
|
16
|
+
|
17
|
+
parent
|
18
|
+
child
|
19
|
+
grandchild #trailing comments
|
20
|
+
# comments in the middle
|
21
|
+
sibling
|
22
|
+
|
23
|
+
TEXT
|
24
|
+
|
25
|
+
parent = Parser.parse(text)
|
26
|
+
assert_equal 'parent', parent.gname
|
27
|
+
assert_equal 2, parent.glength
|
28
|
+
assert_equal 'grandchild', parent.child.grandchild.gname
|
29
|
+
assert_equal '<parent><child>grandchild</child><sibling/></parent>', parent.to_xml
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
def tconvert(convert_me, expected)
|
36
|
+
parser = Parser.new
|
37
|
+
parser.lines = convert_me
|
38
|
+
converted = parser.convert
|
39
|
+
assert_equal true, (expected == converted)
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_convert
|
43
|
+
|
44
|
+
tconvert([['a']], Node.new('a'))
|
45
|
+
tconvert([['ab']], Node.new('ab'))
|
46
|
+
tconvert([['a','b']], Node.new('a').add('b'))
|
47
|
+
tconvert([['a'], [nil, 'b']], Node.new('a').add('b'))
|
48
|
+
|
49
|
+
tconvert([[],['a']], Node.new('a'))
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
def expect(string, lines)
|
54
|
+
parser = Parser.new
|
55
|
+
parser.translate(string)
|
56
|
+
|
57
|
+
assert_equal lines, parser.lines
|
58
|
+
end
|
59
|
+
|
60
|
+
def expect_raise(string)
|
61
|
+
assert_raise RuntimeError do
|
62
|
+
Parser.new.translate(string)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_whitespace
|
67
|
+
expect(' ', [[]])
|
68
|
+
expect(' ', [[]])
|
69
|
+
expect(' ', [[]])
|
70
|
+
expect(' ', [[nil]])
|
71
|
+
expect(' ', [[nil]])
|
72
|
+
expect(' ', [[nil]])
|
73
|
+
expect(' ', [[nil]])
|
74
|
+
expect(' ', [[nil,nil]])
|
75
|
+
|
76
|
+
expect(' a', [[nil, 'a']])
|
77
|
+
expect(' a', [[nil, nil, 'a']])
|
78
|
+
|
79
|
+
expect(" a\n b", [[nil, 'a'], [nil, 'b']])
|
80
|
+
expect(" a\n b", [[nil, nil, 'a'], [nil, nil, 'b']])
|
81
|
+
|
82
|
+
expect(' #', [[]])
|
83
|
+
expect(" \n", [[],[]])
|
84
|
+
expect(" #\n", [[],[]])
|
85
|
+
expect " \na", [[],['a']]
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_simple_strings
|
89
|
+
expect('a', [['a']])
|
90
|
+
expect('ab', [['ab']])
|
91
|
+
expect('a b', [['a','b']])
|
92
|
+
expect(' a', [[nil, 'a']])
|
93
|
+
expect(' a ', [[nil, 'a']])
|
94
|
+
expect(' a ', [[nil, 'a']])
|
95
|
+
|
96
|
+
expect('ab cd', [['ab','cd']])
|
97
|
+
expect(' ab cd', [[nil, 'ab','cd']])
|
98
|
+
expect(' ab cd ', [[nil, 'ab', 'cd']])
|
99
|
+
expect(' ab cd ', [[nil, 'ab', 'cd']])
|
100
|
+
|
101
|
+
expect("a\nb", [['a'],['b']])
|
102
|
+
expect("ab\ncd", [['ab'], ['cd']])
|
103
|
+
expect("a b\nc d", [['a','b'], ['c','d']])
|
104
|
+
expect(" a\n b", [[nil, 'a'], [nil, 'b']])
|
105
|
+
expect(" a \n b ", [[nil, 'a'], [nil, 'b']])
|
106
|
+
expect(" a \n b ", [[nil, 'a'], [nil, 'b']])
|
107
|
+
|
108
|
+
expect("ab cd\nef gh", [['ab','cd'], ['ef','gh']])
|
109
|
+
expect(" ab cd\n ef gh", [[nil, 'ab','cd'], [nil, 'ef','gh']])
|
110
|
+
expect(" ab cd \n ef gh ", [[nil, 'ab', 'cd'], [nil, 'ef', 'gh']])
|
111
|
+
expect(" ab cd \n ef gh ", [[nil, 'ab', 'cd'], [nil, 'ef', 'gh']])
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_sq_strings
|
116
|
+
expect("'a'", [['a']])
|
117
|
+
expect("'ab'", [['ab']])
|
118
|
+
expect("'a b'", [['a b']])
|
119
|
+
expect("'a' 'b'", [['a','b']])
|
120
|
+
expect("'a b'", [['a b']])
|
121
|
+
expect(%s{'!@#$%^&*()<>?:"|_+,./;[]-='}.to_s, [[%s{!@#$%^&*()<>?:"|_+,./;[]-=}.to_s]])
|
122
|
+
expect("'\\''",[["'"]])
|
123
|
+
|
124
|
+
expect_raise("'\n")
|
125
|
+
expect_raise("'\n'")
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_dq_strings
|
129
|
+
expect('"a"', [['a']])
|
130
|
+
expect('"ab"', [['ab']])
|
131
|
+
expect('"a b"', [['a b']])
|
132
|
+
expect('"a" "b"', [['a','b']])
|
133
|
+
expect('"a b"', [['a b']])
|
134
|
+
expect(%s{"!@#$%^&*()<>?:'|_+,./;[]-="}.to_s, [[%s{!@#$%^&*()<>?:'|_+,./;[]-=}.to_s]])
|
135
|
+
expect('"' + '\\' + '"' + '"',[['"']])
|
136
|
+
|
137
|
+
expect_raise('"' + "\n")
|
138
|
+
expect_raise('"' + "\n" + '"')
|
139
|
+
end
|
140
|
+
|
141
|
+
def test_comments
|
142
|
+
expect('#a', [[]])
|
143
|
+
expect(' #a', [[]])
|
144
|
+
expect(' #a', [[nil]])
|
145
|
+
expect('#####', [[]])
|
146
|
+
expect("#a\n#b", [[], []])
|
147
|
+
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_phrases
|
151
|
+
expect('a (b)', [['a'], [nil, 'b']])
|
152
|
+
expect('a ( b)', [['a'], [nil, 'b']])
|
153
|
+
expect('a (b )', [['a'], [nil, 'b']])
|
154
|
+
expect('a ( b )', [['a'], [nil, 'b']])
|
155
|
+
expect('a (b c)', [['a'], [nil, 'b', 'c']])
|
156
|
+
|
157
|
+
expect('"a" ("b")', [['a'], [nil, 'b']])
|
158
|
+
expect('"a" ( "b")', [['a'], [nil, 'b']])
|
159
|
+
expect('"a" ("b" )', [['a'], [nil, 'b']])
|
160
|
+
expect('"a" ( "b" )', [['a'], [nil, 'b']])
|
161
|
+
expect('"a" ("b" "c")', [['a'], [nil, 'b', 'c']])
|
162
|
+
expect('"a" ("b c")', [['a'], [nil, 'b c']])
|
163
|
+
|
164
|
+
expect("'a' ('b')", [['a'], [nil, 'b']])
|
165
|
+
expect("'a' ( 'b')", [['a'], [nil, 'b']])
|
166
|
+
expect("'a' ('b' )", [['a'], [nil, 'b']])
|
167
|
+
expect("'a' ( 'b' )", [['a'], [nil, 'b']])
|
168
|
+
expect("'a' ('b' 'c')", [['a'], [nil, 'b', 'c']])
|
169
|
+
expect("'a' ('b c')", [['a'], [nil, 'b c']])
|
170
|
+
|
171
|
+
|
172
|
+
end
|
173
|
+
|
174
|
+
|
175
|
+
def test_clauses
|
176
|
+
expect('a (b, c)', [['a'], [nil, 'b'], [nil, 'c']])
|
177
|
+
expect('a (b, c, d)', [['a'], [nil, 'b'], [nil, 'c'], [nil, 'd']])
|
178
|
+
expect('"a" ("b", "c")', [['a'], [nil, 'b'], [nil, 'c']])
|
179
|
+
expect("'a' ('b', 'c')", [['a'], [nil, 'b'], [nil, 'c']])
|
180
|
+
|
181
|
+
expect("a (b c)", [['a'], [nil, 'b', 'c']])
|
182
|
+
expect("a (b c)\n", [['a'], [nil, 'b', 'c'], []])
|
183
|
+
expect("a\n b (c d)", [['a'], [nil, 'b'], [nil, nil, 'c', 'd']])
|
184
|
+
expect("a\n b (c)\n d (e)", [['a'], [nil, 'b'], [nil, nil, 'c'], [nil, 'd'], [nil, nil, 'e']])
|
185
|
+
end
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
end
|
data/test/test_rogdl.rb
ADDED
data/test/test_schema.rb
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'lib/rogdl'
|
3
|
+
|
4
|
+
|
5
|
+
class TestSchema < Test::Unit::TestCase
|
6
|
+
include Rogdl
|
7
|
+
|
8
|
+
def test_initialize
|
9
|
+
schema = Schema.new(Node.new('a'))
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_validate1
|
13
|
+
schema = Schema.new(Parser.parse_file("./rspec/clouds_schema.ogdl"))
|
14
|
+
messages = schema.validate(Node.new('blah'))
|
15
|
+
assert_equal "Expecting 'families', but found 'blah'", messages.first
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_validate2
|
19
|
+
schema = Schema.new(Parser.parse_file("./rspec/clouds_schema.ogdl"))
|
20
|
+
messages = schema.validate(Node.new('families'))
|
21
|
+
assert_equal "Found node named 'families' that should have one or more children named: 'family'", messages.first
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_validate3
|
25
|
+
cloud_string = <<CLOUDS
|
26
|
+
families
|
27
|
+
family
|
28
|
+
name
|
29
|
+
description
|
30
|
+
CLOUDS
|
31
|
+
schema = Schema.new(Parser.parse_file("./rspec/clouds_schema.ogdl"))
|
32
|
+
messages = schema.validate(Parser.parse(cloud_string))
|
33
|
+
assert_equal "Found node named 'family' that should have one or more children named: 'cloud'", messages.first
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_validate4
|
37
|
+
cloud_string = <<CLOUDS
|
38
|
+
families
|
39
|
+
family
|
40
|
+
#name missing!!
|
41
|
+
description
|
42
|
+
cloud
|
43
|
+
name
|
44
|
+
CLOUDS
|
45
|
+
schema = Schema.new(Parser.parse_file("./rspec/clouds_schema.ogdl"))
|
46
|
+
messages = schema.validate(Parser.parse(cloud_string))
|
47
|
+
assert_equal "Found node named 'family' that should have exactly one child named: 'name'", messages.first
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_validate5
|
51
|
+
cloud_string = <<CLOUDS
|
52
|
+
families
|
53
|
+
family
|
54
|
+
name
|
55
|
+
description
|
56
|
+
cloud
|
57
|
+
name
|
58
|
+
genus
|
59
|
+
genus
|
60
|
+
CLOUDS
|
61
|
+
schema = Schema.new(Parser.parse_file("./rspec/clouds_schema.ogdl"))
|
62
|
+
messages = schema.validate(Parser.parse(cloud_string))
|
63
|
+
assert_equal "Found node named 'cloud' that should have zero or one child named: 'genus'", messages.first
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
data/test/test_string.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'lib/rogdl'
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
class TestString < Test::Unit::TestCase
|
5
|
+
include Rogdl
|
6
|
+
|
7
|
+
def test_camel_case
|
8
|
+
assert_equal 'someText', 'some text'.camel_case
|
9
|
+
assert_equal 'someText', 'some_text'.camel_case
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_upper_camel_case
|
13
|
+
assert_equal 'SomeText', 'some text'.upper_camel_case
|
14
|
+
assert_equal 'SomeText', 'some_text'.upper_camel_case
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_pluralize
|
18
|
+
assert_equal 'dogs', 'dog'.pluralize
|
19
|
+
assert_equal 'buses', 'bus'.pluralize
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_to_b
|
23
|
+
assert_equal true, 'true'.to_b
|
24
|
+
assert_equal false, 'false'.to_b
|
25
|
+
assert_equal false, 'blah'.to_b
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_to_n
|
29
|
+
assert_equal 'a', 'a'.to_n.gname
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
data/test/test_symbol.rb
ADDED
data/test/test_writer.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'lib/node'
|
3
|
+
require 'lib/writer'
|
4
|
+
require 'lib/parser'
|
5
|
+
|
6
|
+
class TestWriter < Test::Unit::TestCase
|
7
|
+
include Rogdl
|
8
|
+
|
9
|
+
def test_initialize
|
10
|
+
writer = Writer.new
|
11
|
+
assert_equal({}, writer.templates)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_hi
|
15
|
+
parent = Node.new("parent")
|
16
|
+
writer = Writer.new
|
17
|
+
writer.templates["parent"] = "hi"
|
18
|
+
array = writer.write(parent)
|
19
|
+
assert_equal ["hi"], array
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_simple
|
23
|
+
parent = Node.new("parent")
|
24
|
+
writer = Writer.new
|
25
|
+
writer.templates["parent"] = "<%= self.gname %>"
|
26
|
+
array = writer.write(parent)
|
27
|
+
assert_equal ["parent"], array
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_simple2
|
31
|
+
parent = Node.new("parent")
|
32
|
+
parent.add Node.new("child")
|
33
|
+
writer = Writer.new
|
34
|
+
writer.templates["parent"] = "<%= self.gvalue %>"
|
35
|
+
array = writer.write(parent)
|
36
|
+
assert_equal ["child"], array
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_simple3
|
40
|
+
parent = Node.new("parent")
|
41
|
+
parent.add Node.new("child")
|
42
|
+
writer = Writer.new
|
43
|
+
writer.templates["parent"] = "<hi><%= self.gvalue %></hi>"
|
44
|
+
array = writer.write(parent)
|
45
|
+
assert_equal ["<hi>child</hi>"], array
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_nested
|
49
|
+
parent = Node.new("parent")
|
50
|
+
parent.add Node.new("child")
|
51
|
+
writer = Writer.new
|
52
|
+
writer.templates["parent"] = %q{<hi><%= self.gfirst.render %></hi>}
|
53
|
+
writer.templates["child"] = %q{<bye><%= self.gname %></bye>}
|
54
|
+
array = writer.write(parent)
|
55
|
+
assert_equal ["<hi><bye>child</bye></hi>"], array
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_override_template_name
|
59
|
+
parent = Node.new("parent")
|
60
|
+
parent.add Node.new("child")
|
61
|
+
writer = Writer.new
|
62
|
+
writer.templates["parent"] = %q{<hi><%= self.gfirst.render('alternate') %></hi>}
|
63
|
+
writer.templates["child"] = %q{<bye><%= self.gname %></bye>}
|
64
|
+
writer.templates["alternate"] = %q{<goodbye><%= self.gname %></goodbye>}
|
65
|
+
array = writer.write(parent)
|
66
|
+
assert_equal ["<hi><goodbye>child</goodbye></hi>"], array
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
end
|
metadata
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.9.2
|
3
|
+
specification_version: 1
|
4
|
+
name: rogdl
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: 0.1.0
|
7
|
+
date: 2007-08-20 00:00:00 -05:00
|
8
|
+
summary: A package for parsing OGDL files
|
9
|
+
require_paths:
|
10
|
+
- lib/rogdl
|
11
|
+
email: ben.hidalgo@gmail.com
|
12
|
+
homepage:
|
13
|
+
rubyforge_project:
|
14
|
+
description:
|
15
|
+
autorequire:
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: false
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
post_install_message:
|
29
|
+
authors:
|
30
|
+
- Ben Hidalgo
|
31
|
+
files:
|
32
|
+
- lib/array.rb
|
33
|
+
- lib/fixnum.rb
|
34
|
+
- lib/hash.rb
|
35
|
+
- lib/nil.rb
|
36
|
+
- lib/node.rb
|
37
|
+
- lib/parser.rb
|
38
|
+
- lib/rogdl.rb
|
39
|
+
- lib/schema.rb
|
40
|
+
- lib/string.rb
|
41
|
+
- lib/symbol.rb
|
42
|
+
- lib/writer.rb
|
43
|
+
- test/test_array.rb
|
44
|
+
- test/test_fixnum.rb
|
45
|
+
- test/test_hash.rb
|
46
|
+
- test/test_nil.rb
|
47
|
+
- test/test_node.rb
|
48
|
+
- test/test_parser.rb
|
49
|
+
- test/test_rogdl.rb
|
50
|
+
- test/test_schema.rb
|
51
|
+
- test/test_string.rb
|
52
|
+
- test/test_symbol.rb
|
53
|
+
- test/test_writer.rb
|
54
|
+
- README.txt
|
55
|
+
- History.txt
|
56
|
+
test_files: []
|
57
|
+
|
58
|
+
rdoc_options: []
|
59
|
+
|
60
|
+
extra_rdoc_files:
|
61
|
+
- README.txt
|
62
|
+
- History.txt
|
63
|
+
executables: []
|
64
|
+
|
65
|
+
extensions: []
|
66
|
+
|
67
|
+
requirements: []
|
68
|
+
|
69
|
+
dependencies: []
|
70
|
+
|