ox 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of ox might be problematic. Click here for more details.
- data/LICENSE +27 -0
- data/README +153 -0
- data/ext/ox/base64.c +123 -0
- data/ext/ox/base64.h +44 -0
- data/ext/ox/cache.c +148 -0
- data/ext/ox/cache.h +43 -0
- data/ext/ox/cache8.c +80 -0
- data/ext/ox/cache8.h +43 -0
- data/ext/ox/cache8_test.c +69 -0
- data/ext/ox/cache_test.c +69 -0
- data/ext/ox/dump.c +901 -0
- data/ext/ox/extconf.rb +7 -0
- data/ext/ox/gen_load.c +196 -0
- data/ext/ox/obj_load.c +802 -0
- data/ext/ox/ox.c +456 -0
- data/ext/ox/ox.h +190 -0
- data/ext/ox/parse.c +629 -0
- data/lib/ox.rb +97 -0
- data/lib/ox/cdata.rb +12 -0
- data/lib/ox/comment.rb +13 -0
- data/lib/ox/doctype.rb +13 -0
- data/lib/ox/document.rb +20 -0
- data/lib/ox/element.rb +67 -0
- data/lib/ox/node.rb +24 -0
- data/test/Sample.graffle +2318 -0
- data/test/cache16_test.rb +17 -0
- data/test/cache8_test.rb +17 -0
- data/test/cache_test.rb +17 -0
- data/test/files.rb +34 -0
- data/test/func.rb +228 -0
- data/test/gen_sample.rb +22 -0
- data/test/obj_sample.rb +19 -0
- data/test/ox/change.rb +16 -0
- data/test/ox/dir.rb +21 -0
- data/test/ox/doc.rb +39 -0
- data/test/ox/file.rb +33 -0
- data/test/ox/group.rb +18 -0
- data/test/ox/hasprops.rb +18 -0
- data/test/ox/layer.rb +14 -0
- data/test/ox/line.rb +22 -0
- data/test/ox/oval.rb +12 -0
- data/test/ox/rect.rb +12 -0
- data/test/ox/shape.rb +37 -0
- data/test/ox/text.rb +23 -0
- data/test/perf_gen.rb +193 -0
- data/test/perf_mars.rb +97 -0
- data/test/perf_obj.rb +201 -0
- data/test/perf_pod.rb +88 -0
- data/test/perf_write.rb +80 -0
- data/test/sample.rb +62 -0
- data/test/test.rb +70 -0
- metadata +106 -0
data/test/perf_obj.rb
ADDED
@@ -0,0 +1,201 @@
|
|
1
|
+
#!/usr/bin/env ruby -wW1
|
2
|
+
|
3
|
+
$: << '.'
|
4
|
+
$: << '..'
|
5
|
+
$: << '../lib'
|
6
|
+
$: << '../ext'
|
7
|
+
|
8
|
+
if __FILE__ == $0
|
9
|
+
if (i = ARGV.index('-I'))
|
10
|
+
x,path = ARGV.slice!(i, 2)
|
11
|
+
$: << path
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
require 'optparse'
|
16
|
+
require 'ox'
|
17
|
+
require 'sample'
|
18
|
+
require 'test/ox/doc'
|
19
|
+
require 'files'
|
20
|
+
|
21
|
+
$verbose = 0
|
22
|
+
$ox_only = false
|
23
|
+
$circular = false
|
24
|
+
|
25
|
+
do_sample = false
|
26
|
+
do_files = false
|
27
|
+
|
28
|
+
do_load = false
|
29
|
+
do_dump = false
|
30
|
+
do_read = false
|
31
|
+
do_write = false
|
32
|
+
$iter = 1000
|
33
|
+
|
34
|
+
opts = OptionParser.new
|
35
|
+
opts.on("-v", "increase verbosity") { $verbose += 1 }
|
36
|
+
|
37
|
+
opts.on("-x", "ox only") { $ox_only = true }
|
38
|
+
opts.on("-c", "circular options") { $circular = true }
|
39
|
+
|
40
|
+
opts.on("-s", "load and dump as sample Ruby object") { do_sample = true }
|
41
|
+
opts.on("-f", "load and dump as files Ruby object") { do_files = true }
|
42
|
+
|
43
|
+
opts.on("-l", "load") { do_load = true }
|
44
|
+
opts.on("-d", "dump") { do_dump = true }
|
45
|
+
opts.on("-r", "read") { do_read = true }
|
46
|
+
opts.on("-w", "write") { do_write = true }
|
47
|
+
opts.on("-a", "load, dump, read and write") { do_load = true; do_dump = true; do_read = true; do_write = true }
|
48
|
+
|
49
|
+
opts.on("-i", "--iterations [Int]", Integer, "iterations") { |i| $iter = i }
|
50
|
+
|
51
|
+
opts.on("-h", "--help", "Show this display") { puts opts; Process.exit!(0) }
|
52
|
+
files = opts.parse(ARGV)
|
53
|
+
|
54
|
+
if files.empty?
|
55
|
+
data = []
|
56
|
+
obj = do_sample ? sample_doc(2) : files('..')
|
57
|
+
mars = Marshal.dump(obj)
|
58
|
+
xml = Ox.dump(obj, :indent => 0, circular: $circular)
|
59
|
+
File.open('sample.xml', 'w') { |f| f.write(xml) }
|
60
|
+
File.open('sample.marshal', 'w') { |f| f.write(mars) }
|
61
|
+
data << { :file => 'sample.xml', :obj => obj, :xml => xml, :marshal => mars }
|
62
|
+
else
|
63
|
+
puts "loading and parsing #{files}\n\n"
|
64
|
+
data = files.map do |f|
|
65
|
+
xml = File.read(f)
|
66
|
+
obj = Ox.load(xml);
|
67
|
+
mars = Marshal.dump(obj)
|
68
|
+
{ :file => f, :obj => obj, :xml => xml, :marshal => mars }
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
$ox_load_time = 0
|
73
|
+
$mars_load_time = 0
|
74
|
+
$ox_dump_time = 0
|
75
|
+
$mars_dump_time = 0
|
76
|
+
|
77
|
+
def perf_load(d)
|
78
|
+
filename = d[:file]
|
79
|
+
marshal_filename = 'sample.marshal'
|
80
|
+
xml = d[:xml]
|
81
|
+
mars = d[:marshal]
|
82
|
+
|
83
|
+
if 0 < $verbose
|
84
|
+
obj = Ox.load(xml, :mode => :object, :trace => $verbose)
|
85
|
+
return
|
86
|
+
end
|
87
|
+
start = Time.now
|
88
|
+
(1..$iter).each do
|
89
|
+
obj = Ox.load(xml, :mode => :object)
|
90
|
+
end
|
91
|
+
$ox_load_time = Time.now - start
|
92
|
+
puts "Parsing #{$iter} times with Ox took #{$ox_load_time} seconds."
|
93
|
+
|
94
|
+
return if $ox_only
|
95
|
+
|
96
|
+
start = Time.now
|
97
|
+
(1..$iter).each do
|
98
|
+
obj = Marshal.load(mars)
|
99
|
+
end
|
100
|
+
$mars_load_time = Time.now - start
|
101
|
+
puts "Marshalling #{$iter} times took #{$mars_load_time} seconds."
|
102
|
+
puts ">>> Ox is %0.1f faster than Marshal loading.\n\n" % [$mars_load_time/$ox_load_time]
|
103
|
+
end
|
104
|
+
|
105
|
+
def perf_dump(d)
|
106
|
+
obj = d[:obj]
|
107
|
+
|
108
|
+
start = Time.now
|
109
|
+
(1..$iter).each do
|
110
|
+
xml = Ox.dump(obj, :indent => 2, :circular => $circular)
|
111
|
+
#puts "*** ox:\n#{xml}"
|
112
|
+
end
|
113
|
+
$ox_dump_time = Time.now - start
|
114
|
+
puts "Ox dumping #{$iter} times with ox took #{$ox_dump_time} seconds."
|
115
|
+
|
116
|
+
return if $ox_only
|
117
|
+
|
118
|
+
obj = d[:obj]
|
119
|
+
start = Time.now
|
120
|
+
(1..$iter).each do
|
121
|
+
m = Marshal.dump(obj)
|
122
|
+
end
|
123
|
+
$mars_dump_time = Time.now - start
|
124
|
+
puts "Marshal dumping #{$iter} times took #{$mars_dump_time} seconds."
|
125
|
+
puts ">>> Ox is %0.1f faster than Marshal dumping.\n\n" % [$mars_dump_time/$ox_dump_time]
|
126
|
+
end
|
127
|
+
|
128
|
+
def perf_read(d)
|
129
|
+
ox_read_time = 0
|
130
|
+
mars_read_time = 0
|
131
|
+
|
132
|
+
filename = d[:file]
|
133
|
+
marshal_filename = 'sample.marshal'
|
134
|
+
xml = d[:xml]
|
135
|
+
mars = d[:marshal]
|
136
|
+
|
137
|
+
# now load from the file
|
138
|
+
start = Time.now
|
139
|
+
(1..$iter).each do
|
140
|
+
obj = Ox.load_file(filename, :mode => :object)
|
141
|
+
end
|
142
|
+
ox_read_time = Time.now - start
|
143
|
+
puts "Loading and parsing #{$iter} times with ox took #{ox_read_time} seconds."
|
144
|
+
|
145
|
+
if !$ox_only
|
146
|
+
start = Time.now
|
147
|
+
(1..$iter).each do
|
148
|
+
m = File.read(marshal_filename)
|
149
|
+
obj = Marshal.load(m)
|
150
|
+
end
|
151
|
+
mars_read_time = Time.now - start
|
152
|
+
puts "Reading and marshalling #{$iter} times took #{mars_read_time} seconds."
|
153
|
+
puts ">>> Ox is %0.1f faster than Marshal loading and parsing.\n\n" % [mars_read_time/ox_read_time]
|
154
|
+
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
def perf_write(d)
|
159
|
+
ox_write_time = 0
|
160
|
+
mars_write_time = 0
|
161
|
+
|
162
|
+
ox_filename = 'out.xml'
|
163
|
+
marshal_filename = 'out.marshal'
|
164
|
+
obj = d[:obj]
|
165
|
+
|
166
|
+
start = Time.now
|
167
|
+
(1..$iter).each do
|
168
|
+
xml = Ox.to_file(ox_filename, obj, :indent => 0)
|
169
|
+
end
|
170
|
+
ox_write_time = Time.now - start
|
171
|
+
puts "Ox dumping #{$iter} times with ox took #{ox_write_time} seconds."
|
172
|
+
|
173
|
+
if !$ox_only
|
174
|
+
start = Time.now
|
175
|
+
(1..$iter).each do
|
176
|
+
m = Marshal.dump(obj, circular: $circular)
|
177
|
+
File.open(marshal_filename, "w") { |f| f.write(m) }
|
178
|
+
end
|
179
|
+
mars_write_time = Time.now - start
|
180
|
+
puts "Marshal dumping and writing #{$iter} times took #{mars_write_time} seconds."
|
181
|
+
puts ">>> Ox is %0.1f faster than Marshal dumping.\n\n" % [mars_write_time/ox_write_time]
|
182
|
+
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
#if do_sample or do_files
|
187
|
+
data.each do |d|
|
188
|
+
puts "Using file #{d[:file]}."
|
189
|
+
|
190
|
+
perf_load(d) if do_load
|
191
|
+
perf_dump(d) if do_dump
|
192
|
+
if do_load and do_dump
|
193
|
+
puts ">>> Ox is %0.1f faster than Marshal dumping and loading.\n\n" % [($mars_load_time + $mars_dump_time)/($ox_load_time + $ox_dump_time)] unless 0 == $mars_load_time
|
194
|
+
end
|
195
|
+
|
196
|
+
perf_read(d) if do_read
|
197
|
+
perf_write(d) if do_write
|
198
|
+
|
199
|
+
end
|
200
|
+
#end
|
201
|
+
|
data/test/perf_pod.rb
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
#!/usr/bin/env ruby -wW1
|
2
|
+
|
3
|
+
$: << '.'
|
4
|
+
$: << '..'
|
5
|
+
$: << '../lib'
|
6
|
+
$: << '../ext'
|
7
|
+
|
8
|
+
if __FILE__ == $0
|
9
|
+
if (i = ARGV.index('-I'))
|
10
|
+
x,path = ARGV.slice!(i, 2)
|
11
|
+
$: << path
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
require 'optparse'
|
16
|
+
require 'ox'
|
17
|
+
require 'pod/cfg'
|
18
|
+
require 'pod/xml'
|
19
|
+
|
20
|
+
$verbose = 0
|
21
|
+
$use_opt_format = false
|
22
|
+
|
23
|
+
do_load = false
|
24
|
+
do_dump = false
|
25
|
+
|
26
|
+
opts = OptionParser.new
|
27
|
+
opts.on("-v", "increase verbosity") { $verbose += 1 }
|
28
|
+
opts.on("-o", "optimized format") { $use_opt_format = true }
|
29
|
+
opts.on("-h", "--help", "Show this display") { puts opts; Process.exit!(0) }
|
30
|
+
files = opts.parse(ARGV)
|
31
|
+
|
32
|
+
|
33
|
+
$ox_load_time = 0
|
34
|
+
$opt_load_time = 0
|
35
|
+
$no_load_time = 0
|
36
|
+
$ox_dump_time = 0
|
37
|
+
$no_dump_time = 0
|
38
|
+
|
39
|
+
files = Dir.glob('data/**/*.xml')
|
40
|
+
xml_data = files.map { |f| File.read(f) }
|
41
|
+
|
42
|
+
objs = []
|
43
|
+
start = Time.now
|
44
|
+
xml_data.each do |xml|
|
45
|
+
objs << Ox.load(xml, :mode => :object, :trace => 0)
|
46
|
+
end
|
47
|
+
$ox_load_time = Time.now - start
|
48
|
+
puts "Loading #{files.size} files with Ox took #{$ox_load_time} seconds."
|
49
|
+
|
50
|
+
start = Time.now
|
51
|
+
objs.each do |o|
|
52
|
+
xml = Ox.dump(o, :opt_format => $use_opt_format, :indent => 0)
|
53
|
+
end
|
54
|
+
$ox_dump_time = Time.now - start
|
55
|
+
puts "Dumping #{files.size} files with Ox took #{$ox_dump_time} seconds."
|
56
|
+
|
57
|
+
|
58
|
+
opt_data = objs.map { |o| Ox.dump(o, :opt_format => $use_opt_format, :indent => 0) }
|
59
|
+
mode = $use_opt_format ? :optimized : :object
|
60
|
+
objs = []
|
61
|
+
start = Time.now
|
62
|
+
opt_data.each do |xml|
|
63
|
+
objs << Ox.load(xml, :mode => mode, :trace => 0)
|
64
|
+
end
|
65
|
+
$opt_load_time = Time.now - start
|
66
|
+
puts "Loading #{files.size} files with Optimized Ox took #{$opt_load_time} seconds.\n\n"
|
67
|
+
|
68
|
+
|
69
|
+
objs = []
|
70
|
+
start = Time.now
|
71
|
+
xml_data.each do |xml|
|
72
|
+
objs << ::Pod::Xml.to_obj(xml)
|
73
|
+
end
|
74
|
+
$no_load_time = Time.now - start
|
75
|
+
puts "Loading Pod::Xml #{files.size} files took #{$no_load_time} seconds."
|
76
|
+
|
77
|
+
start = Time.now
|
78
|
+
objs.each do |o|
|
79
|
+
xml = ::Pod::Xml.to_xml(o)
|
80
|
+
end
|
81
|
+
$no_dump_time = Time.now - start
|
82
|
+
puts "Dumping #{files.size} files with Pod::Xml took #{$no_dump_time} seconds.\n\n"
|
83
|
+
|
84
|
+
puts ">>> Ox is %0.1f faster than Pod::Xml loading." % [$no_load_time/$ox_load_time]
|
85
|
+
puts ">>> Optimized Ox is %0.1f faster than Pod::Xml loading." % [$no_load_time/$opt_load_time]
|
86
|
+
puts ">>> Ox is %0.1f faster than Pod::Xml dumping.\n\n" % [$no_dump_time/$ox_dump_time]
|
87
|
+
|
88
|
+
puts ">>> Ox is %0.1f faster than Pod::Xml dumping and loading." % [($no_dump_time + $no_load_time)/($ox_dump_time + $opt_load_time)]
|
data/test/perf_write.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
#!/usr/bin/env ruby -wW1
|
2
|
+
|
3
|
+
$: << '.'
|
4
|
+
|
5
|
+
if __FILE__ == $0
|
6
|
+
if (i = ARGV.index('-I'))
|
7
|
+
x,path = ARGV.slice!(i, 2)
|
8
|
+
$: << path
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
require 'optparse'
|
13
|
+
require 'pp'
|
14
|
+
require 'nokogiri'
|
15
|
+
require 'ox'
|
16
|
+
|
17
|
+
ox_only = false
|
18
|
+
it = 1000
|
19
|
+
|
20
|
+
opts = OptionParser.new
|
21
|
+
opts.on("-x", "ox only") { ox_only = true }
|
22
|
+
opts.on("-i", "--iterations [Int]", Integer, "iterations") { |i| it = i }
|
23
|
+
opts.on("-h", "--help", "Show this display") { puts opts }
|
24
|
+
files = opts.parse(ARGV)
|
25
|
+
|
26
|
+
obj = nil
|
27
|
+
|
28
|
+
puts "to String and writing #{files}\n\n"
|
29
|
+
|
30
|
+
data = files.map do |f|
|
31
|
+
ox_obj = Ox.parse_file(f)
|
32
|
+
xml = File.read(f)
|
33
|
+
no_obj = Nokogiri::XML::Document.parse(xml, nil, nil, Nokogiri::XML::ParseOptions::DEFAULT_XML | Nokogiri::XML::ParseOptions::NOBLANKS)
|
34
|
+
[f, ox_obj, no_obj]
|
35
|
+
end
|
36
|
+
|
37
|
+
start = Time.now
|
38
|
+
data.each do |d|
|
39
|
+
(1..it).each do
|
40
|
+
xml = d[1].to_s
|
41
|
+
end
|
42
|
+
end
|
43
|
+
ox_time = Time.now - start
|
44
|
+
puts "to String #{it} times with ox took #{ox_time} seconds."
|
45
|
+
|
46
|
+
#puts obj.to_s
|
47
|
+
|
48
|
+
=begin
|
49
|
+
start = Time.now
|
50
|
+
data.each do |d|
|
51
|
+
(1..it).each do
|
52
|
+
xml = d[1].to_s
|
53
|
+
end
|
54
|
+
end
|
55
|
+
ox_time = Time.now - start
|
56
|
+
puts "to file #{it} times with ox took #{ox_time} seconds.\n\n"
|
57
|
+
=end
|
58
|
+
if !ox_only
|
59
|
+
|
60
|
+
start = Time.now
|
61
|
+
data.each do |d|
|
62
|
+
(1..it).each do
|
63
|
+
xml = d[2].to_s
|
64
|
+
end
|
65
|
+
end
|
66
|
+
no_time = Time.now - start
|
67
|
+
puts "to String #{it} times with nokogiri took #{no_time} seconds."
|
68
|
+
=begin
|
69
|
+
start = Time.now
|
70
|
+
data.each do |d|
|
71
|
+
xml = d[1]
|
72
|
+
(1..it).each do
|
73
|
+
xml = d[2].to_s
|
74
|
+
end
|
75
|
+
end
|
76
|
+
no_time = Time.now - start
|
77
|
+
puts "to file #{it} times with nokogiri took #{no_time} seconds.\n\n"
|
78
|
+
=end
|
79
|
+
puts "Ox is %0.1f faster than Nokogiri" % [no_time/ox_time]
|
80
|
+
end
|
data/test/sample.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
#!/usr/bin/env ruby -wW2
|
2
|
+
|
3
|
+
if $0 == __FILE__
|
4
|
+
$: << '.'
|
5
|
+
$: << '..'
|
6
|
+
$: << '../lib'
|
7
|
+
$: << '../ext'
|
8
|
+
end
|
9
|
+
|
10
|
+
require 'pp'
|
11
|
+
require 'ox'
|
12
|
+
require 'test/ox/doc'
|
13
|
+
|
14
|
+
|
15
|
+
def sample_doc(size=3)
|
16
|
+
colors = [ :black, :gray, :white, :red, :blue, :yellow, :green, :purple, :orange ]
|
17
|
+
|
18
|
+
d = ::Test::Ox::Doc.new('Sample')
|
19
|
+
|
20
|
+
# add some history
|
21
|
+
(0..size * 10).each do |i|
|
22
|
+
d.add_change("Changed at t+#{i}.")
|
23
|
+
end
|
24
|
+
|
25
|
+
# add some layers
|
26
|
+
(1..size).each do |i|
|
27
|
+
layer = ::Test::Ox::Layer.new("Layer-#{i}")
|
28
|
+
(1..size).each do |j|
|
29
|
+
g = ::Test::Ox::Group.new
|
30
|
+
(1..size).each do |k|
|
31
|
+
g2 = ::Test::Ox::Group.new
|
32
|
+
r = ::Test::Ox::Rect.new(j * 40 + 10.0, i * 10.0,
|
33
|
+
10.123456 / k, 10.0 / k, colors[(i + j + k) % colors.size])
|
34
|
+
r.add_prop(:part_of, layer.name)
|
35
|
+
g2 << r
|
36
|
+
g2 << ::Test::Ox::Text.new("#{k} in #{j}", r.left, r.top, r.width, r.height)
|
37
|
+
g << g2
|
38
|
+
end
|
39
|
+
g2 = ::Test::Ox::Group.new
|
40
|
+
(1..size).each do |k|
|
41
|
+
o = ::Test::Ox::Oval.new(j * 40 + 12.0, i * 10.0 + 2.0,
|
42
|
+
6.0 / k, 6.0 / k, colors[(i + j + k) % colors.size])
|
43
|
+
o.add_prop(:inside, true)
|
44
|
+
g << o
|
45
|
+
end
|
46
|
+
g << g2
|
47
|
+
layer << g
|
48
|
+
end
|
49
|
+
d.layers[layer.name] = layer
|
50
|
+
end
|
51
|
+
|
52
|
+
# some properties
|
53
|
+
d.add_prop(:purpose, 'an example')
|
54
|
+
|
55
|
+
#pp d
|
56
|
+
#Ox.dump(d, :indent => 0)
|
57
|
+
d
|
58
|
+
end
|
59
|
+
|
60
|
+
if $0 == __FILE__
|
61
|
+
File.open('foo.xml', "w") { |f| f.write(Ox.dump(sample_doc(3), :indent => 2)) }
|
62
|
+
end
|
data/test/test.rb
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
#!/usr/bin/env ruby -wW1
|
2
|
+
|
3
|
+
$: << '.'
|
4
|
+
$: << 'lib'
|
5
|
+
$: << 'ext'
|
6
|
+
|
7
|
+
if __FILE__ == $0
|
8
|
+
if (i = ARGV.index('-I'))
|
9
|
+
x,path = ARGV.slice!(i, 2)
|
10
|
+
$: << path
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
require 'optparse'
|
15
|
+
require 'pp'
|
16
|
+
require 'ox'
|
17
|
+
|
18
|
+
opts = OptionParser.new
|
19
|
+
opts.on("-v", "--verbose", "display parse information") { Ox.debug = Ox.debug + 1 }
|
20
|
+
opts.on("-h", "--help", "Show this display") { puts opts }
|
21
|
+
files = opts.parse(ARGV)
|
22
|
+
|
23
|
+
module Park
|
24
|
+
class Animal
|
25
|
+
def initialize
|
26
|
+
@type = nil
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class Zoo
|
31
|
+
|
32
|
+
def self.create(n)
|
33
|
+
z = self.new
|
34
|
+
z.lion = n
|
35
|
+
z.tiger = n * 2
|
36
|
+
x
|
37
|
+
end
|
38
|
+
|
39
|
+
def initialize
|
40
|
+
@lion = nil
|
41
|
+
@tiger = nil
|
42
|
+
@bear = nil
|
43
|
+
@oh_my = nil
|
44
|
+
@oh_pi = nil
|
45
|
+
@big_guy = nil
|
46
|
+
@tea_time = nil
|
47
|
+
@minutes = nil
|
48
|
+
@empty = nil
|
49
|
+
@mixed = nil
|
50
|
+
@clueless = nil
|
51
|
+
@clues = nil
|
52
|
+
@nest = nil
|
53
|
+
@bb = "<base64>"
|
54
|
+
@roar = (3..7)
|
55
|
+
end
|
56
|
+
|
57
|
+
end # Zoo
|
58
|
+
end # Park
|
59
|
+
|
60
|
+
files.each do |f|
|
61
|
+
puts "parsing #{f}"
|
62
|
+
obj = Ox.file_to_obj(f)
|
63
|
+
puts "result:"
|
64
|
+
pp obj
|
65
|
+
#puts "***\n#{obj.instance_variable_get(:@raw)}***"
|
66
|
+
obj.instance_variable_set(:@roar, (3..7))
|
67
|
+
#Ox.to_file(obj, "foo.xml")
|
68
|
+
s = Ox.dump(obj, :indent => -1)
|
69
|
+
puts s
|
70
|
+
end
|