eimxml 0.0.2 → 0.0.3.1
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/Rakefile +24 -95
- data/Rakefile.utirake +374 -0
- data/lib/eim_xml.rb +95 -220
- data/lib/eim_xml/dsl.rb +105 -0
- data/lib/eim_xml/formatter.rb +123 -0
- data/lib/eim_xml/formatter/element_wrapper.rb +7 -0
- data/lib/eim_xml/parser.rb +12 -40
- data/lib/eim_xml/xhtml.rb +84 -56
- data/lib/eim_xml/xhtml/dsl.rb +18 -0
- data/{test → spec}/assertions_test.rb +1 -0
- data/spec/dsl_spec.rb +217 -0
- data/spec/eim_xml_spec.rb +441 -0
- data/spec/formatter_spec.rb +260 -0
- data/spec/parser_spec.rb +102 -0
- data/spec/xhtml_spec.rb +524 -0
- metadata +52 -38
- data/README +0 -58
- data/test/eim_xml_test.rb +0 -648
- data/test/parser_test.rb +0 -102
- data/test/xhtml_test.rb +0 -340
data/test/parser_test.rb
DELETED
@@ -1,102 +0,0 @@
|
|
1
|
-
# Test for eim_xml/parser.rb
|
2
|
-
#
|
3
|
-
# Copyright (C) 2006, KURODA Hiraku <hiraku@hinet.mydns.jp>
|
4
|
-
# You can redistribute it and/or modify it under GPL2.
|
5
|
-
|
6
|
-
require "test/unit"
|
7
|
-
require "eim_xml/parser"
|
8
|
-
|
9
|
-
class ParserTest < Test::Unit::TestCase
|
10
|
-
include EimXML
|
11
|
-
|
12
|
-
def parse(src)
|
13
|
-
Parser.new(src).parse
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_parse
|
17
|
-
s = " <e /> "
|
18
|
-
assert_equal(Parser.new(s).parse, parse(s))
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_parse_empty_element
|
22
|
-
assert_equal(Element.new("e"), parse("<e />"))
|
23
|
-
assert_equal(Element.new("e"), parse("<e/>"))
|
24
|
-
|
25
|
-
assert_equal(Element.new("e", "key"=>"value"), parse(%[<e key="value"/>]))
|
26
|
-
assert_equal(Element.new("e", "key"=>"value"), parse(%[<e key='value'/>]))
|
27
|
-
assert_equal(Element.new("e", "key"=>"value"), parse(%[<e key="value" />]))
|
28
|
-
assert_equal(Element.new("e", "key"=>"value"), parse(%[<e key='value' />]))
|
29
|
-
|
30
|
-
assert_equal(Element.new("e", "key"=>"value", "key2"=>"value2"), parse(%[<e key="value" key2="value2"/>]))
|
31
|
-
assert_equal(Element.new("e", "key"=>"value", "key2"=>"value2"), parse(%[<e key="value" key2="value2" />]))
|
32
|
-
|
33
|
-
s = " <e1 /> <e2 /> "
|
34
|
-
p = Parser.new(s)
|
35
|
-
assert_equal(Element.new("e1"), p.parse)
|
36
|
-
assert_equal(Element.new("e2"), p.parse)
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_parse_nonempty_element
|
40
|
-
assert_equal(Element.new("super") << Element.new("sub"), parse("<super><sub /></super>"))
|
41
|
-
e = assert_raises(ParseError){parse("<el></e>")}
|
42
|
-
assert_equal("End tag mismatched.", e.message)
|
43
|
-
e = assert_raises(ParseError){parse("<el><></el>")}
|
44
|
-
assert_equal("Syntax error.", e.message)
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_parse_string
|
48
|
-
e = parse("string&")
|
49
|
-
assert_instance_of(PCString, e)
|
50
|
-
assert_equal("string&", e.to_s)
|
51
|
-
e = parse(" string & ")
|
52
|
-
assert_instance_of(PCString, e)
|
53
|
-
assert_equal("string &", e.to_s)
|
54
|
-
|
55
|
-
e = Element.new("e")
|
56
|
-
e << PCString.new("string")
|
57
|
-
assert_equal(e, parse("<e> string </e>"))
|
58
|
-
assert_equal(e, parse("<e>string</e>"))
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_hold_space
|
62
|
-
s = "<e> string with space\n</e>"
|
63
|
-
e = Element.new("e")
|
64
|
-
e << PCString.new("string with space", true)
|
65
|
-
assert_equal(e, parse(s))
|
66
|
-
|
67
|
-
e = Element.new("e").hold_space
|
68
|
-
e << PCString.new(" string with space\n", true)
|
69
|
-
assert_not_equal(e, Parser.new(s).parse)
|
70
|
-
assert_equal(e, Parser.new(s).parse(true))
|
71
|
-
assert_equal(e, Parser.new(s, "dummy", "e").parse)
|
72
|
-
assert_equal(e, Parser.new(s, /dummy/, /e/).parse)
|
73
|
-
assert_equal(e, Parser.new(s, :dummy, :e).parse)
|
74
|
-
assert_equal(e, Parser.new(s, :dummy, /^(.*:)?e$/).parse)
|
75
|
-
|
76
|
-
s = "<ns:e> string with space\n</ns:e>"
|
77
|
-
e = Element.new("ns:e")
|
78
|
-
e << PCString.new("string with space")
|
79
|
-
assert_equal(e, Parser.new(s).parse)
|
80
|
-
|
81
|
-
e = Element.new("ns:e").hold_space
|
82
|
-
e << PCString.new(" string with space\n")
|
83
|
-
assert_equal(e, Parser.new(s, /^(.*:)?e$/).parse)
|
84
|
-
|
85
|
-
s = "<a> string without space <b> string with space <a> string with space 2 </a> </b> </a>"
|
86
|
-
oa = Element.new("a") << PCString.new("string without space")
|
87
|
-
b = Element.new("b").hold_space
|
88
|
-
b << PCString.new(" string with space ")
|
89
|
-
ia = Element.new("a").hold_space
|
90
|
-
ia << PCString.new(" string with space 2 ")
|
91
|
-
b << ia
|
92
|
-
b << PCString.new(" ")
|
93
|
-
oa << b
|
94
|
-
assert_equal(oa, Parser.new(s, "b").parse)
|
95
|
-
|
96
|
-
s = "<a><b/></a>"
|
97
|
-
a = Element.new("a").hold_space
|
98
|
-
b = Element.new("b").hold_space
|
99
|
-
a << b
|
100
|
-
assert_equal(a, Parser.new(s, "a").parse)
|
101
|
-
end
|
102
|
-
end
|
data/test/xhtml_test.rb
DELETED
@@ -1,340 +0,0 @@
|
|
1
|
-
# Test for eim_xml/xhtml.rb
|
2
|
-
#
|
3
|
-
# Copyright (C) 2007, KURODA Hiraku <hiraku@hinet.mydns.jp>
|
4
|
-
# You can redistribute it and/or modify it under GPL2.
|
5
|
-
|
6
|
-
require "eim_xml/xhtml"
|
7
|
-
require "eim_xml/assertions"
|
8
|
-
require "test/unit"
|
9
|
-
require "stringio"
|
10
|
-
|
11
|
-
class XHTMLTest < Test::Unit::TestCase
|
12
|
-
include EimXML::XHTML
|
13
|
-
include EimXML::Assertions
|
14
|
-
Element = EimXML::Element
|
15
|
-
|
16
|
-
def test_base_
|
17
|
-
assert_raise(NoMethodError){DSL.base_}
|
18
|
-
end
|
19
|
-
|
20
|
-
def setup
|
21
|
-
@od = OpenDSL.new
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_html
|
25
|
-
h = HTML.new(:attr=>"value")
|
26
|
-
assert_equal(Element.new(:html, :attr=>"value"), h)
|
27
|
-
|
28
|
-
h = HTML.new do |e|
|
29
|
-
e <<= Element.new(:sub)
|
30
|
-
end
|
31
|
-
h2 = HTML.new
|
32
|
-
h2 << Element.new(:sub)
|
33
|
-
assert_equal(h, h2)
|
34
|
-
|
35
|
-
assert_raise(NoMethodError){EimXML::DSL.html}
|
36
|
-
assert_match(HTML.new(:key=>"v"), DSL.html(:key=>"v"))
|
37
|
-
@od.html(:key=>"v").should == HTML.new(:key=>"v")
|
38
|
-
|
39
|
-
h = HTML.new
|
40
|
-
h.to_xml.should == "<html />"
|
41
|
-
h.prefix='<?xml version="1.0"?>'
|
42
|
-
h.to_xml.should == %[<?xml version="1.0"?>\n<html />]
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_head
|
46
|
-
assert_equal(:head, HEAD.new.name)
|
47
|
-
assert_kind_of(HEAD, DSL.head)
|
48
|
-
@od.head.should be_kind_of(HEAD)
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_meta
|
52
|
-
assert_equal(:meta, META.new.name)
|
53
|
-
assert_kind_of(META, DSL.meta)
|
54
|
-
@od.meta.should be_kind_of(META)
|
55
|
-
end
|
56
|
-
|
57
|
-
def test_link
|
58
|
-
assert_equal(:link, LINK.new.name)
|
59
|
-
assert_kind_of(LINK, DSL.link)
|
60
|
-
@od.link.should be_kind_of(LINK)
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_style
|
64
|
-
assert_equal(:style, STYLE.new.name)
|
65
|
-
assert_kind_of(STYLE, DSL.style)
|
66
|
-
@od.style.should be_kind_of(STYLE)
|
67
|
-
end
|
68
|
-
|
69
|
-
def test_script
|
70
|
-
assert_equal(:script, SCRIPT.new.name)
|
71
|
-
assert_kind_of(SCRIPT, DSL.script)
|
72
|
-
@od.script.should be_kind_of(SCRIPT)
|
73
|
-
end
|
74
|
-
|
75
|
-
def test_title
|
76
|
-
assert_equal(:title, TITLE.new.name)
|
77
|
-
assert_kind_of(TITLE, DSL.title)
|
78
|
-
@od.title.should be_kind_of(TITLE)
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_body
|
82
|
-
assert_equal(:body, BODY.new.name)
|
83
|
-
assert_kind_of(BODY, DSL.body)
|
84
|
-
@od.body.should be_kind_of(BODY)
|
85
|
-
end
|
86
|
-
|
87
|
-
def test_pre
|
88
|
-
assert_equal(:pre, PRE.new.name)
|
89
|
-
assert_kind_of(PRE, DSL.pre)
|
90
|
-
@od.pre.should be_kind_of(PRE)
|
91
|
-
PRE.new.hold_space?.should be_true
|
92
|
-
end
|
93
|
-
|
94
|
-
def test_hn
|
95
|
-
h1 = Hn.new(1)
|
96
|
-
h6 = Hn.new(6)
|
97
|
-
assert_equal(:h1, h1.name)
|
98
|
-
assert_kind_of(H1, h1)
|
99
|
-
assert_equal(:h6, h6.name)
|
100
|
-
assert_kind_of(H6, h6)
|
101
|
-
assert_raises(ArgumentError){Hn.new(7)}
|
102
|
-
assert_raises(ArgumentError){Hn.new(0)}
|
103
|
-
|
104
|
-
h = Hn.new(1, :key=>:value) do |hn|
|
105
|
-
hn << "test"
|
106
|
-
end
|
107
|
-
assert_equal(:value, h[:key])
|
108
|
-
assert_equal("test", h[0])
|
109
|
-
|
110
|
-
[
|
111
|
-
[H1, DSL.h1, @od.h1],
|
112
|
-
[H2, DSL.h2, @od.h2],
|
113
|
-
[H3, DSL.h3, @od.h3],
|
114
|
-
[H4, DSL.h4, @od.h4],
|
115
|
-
[H5, DSL.h5, @od.h5],
|
116
|
-
[H6, DSL.h6, @od.h6]
|
117
|
-
].each do |klass, dsl, od|
|
118
|
-
dsl.should be_kind_of(klass)
|
119
|
-
od.should be_kind_of(klass)
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
def test_p
|
124
|
-
assert_equal(:p, P.new.name)
|
125
|
-
assert_kind_of(P, DSL.p)
|
126
|
-
@od.p.should be_kind_of(P)
|
127
|
-
end
|
128
|
-
|
129
|
-
def test_a
|
130
|
-
assert_equal(:a, A.new.name)
|
131
|
-
assert_kind_of(A, DSL.a)
|
132
|
-
@od.a.should be_kind_of(A)
|
133
|
-
end
|
134
|
-
|
135
|
-
def test_em
|
136
|
-
assert_equal(:em, EM.new.name)
|
137
|
-
assert_kind_of(EM, DSL.em)
|
138
|
-
@od.em.should be_kind_of(EM)
|
139
|
-
end
|
140
|
-
|
141
|
-
def test_strong
|
142
|
-
assert_equal(:strong, STRONG.new.name)
|
143
|
-
assert_kind_of(STRONG, DSL.strong)
|
144
|
-
@od.strong.should be_kind_of(STRONG)
|
145
|
-
end
|
146
|
-
|
147
|
-
def test_div
|
148
|
-
assert_equal(:div, DIV.new.name)
|
149
|
-
assert_kind_of(DIV, DSL.div)
|
150
|
-
@od.div.should be_kind_of(DIV)
|
151
|
-
end
|
152
|
-
|
153
|
-
def test_ul
|
154
|
-
assert_equal(:ul, UL.new.name)
|
155
|
-
assert_kind_of(UL, DSL.ul)
|
156
|
-
@od.ul.should be_kind_of(UL)
|
157
|
-
end
|
158
|
-
|
159
|
-
def test_ol
|
160
|
-
assert_equal(:ol, OL.new.name)
|
161
|
-
assert_kind_of(OL, DSL.ol)
|
162
|
-
@od.ol.should be_kind_of(OL)
|
163
|
-
end
|
164
|
-
|
165
|
-
def test_li
|
166
|
-
assert_equal(:li, LI.new.name)
|
167
|
-
assert_kind_of(LI, DSL.li)
|
168
|
-
@od.li.should be_kind_of(LI)
|
169
|
-
end
|
170
|
-
|
171
|
-
def test_dl
|
172
|
-
DL.new.name.should == :dl
|
173
|
-
DSL.dl.should be_kind_of(DL)
|
174
|
-
@od.dl.should be_kind_of(DL)
|
175
|
-
end
|
176
|
-
|
177
|
-
def test_dt
|
178
|
-
DT.new.name.should == :dt
|
179
|
-
DSL.dt.should be_kind_of(DT)
|
180
|
-
@od.dt.should be_kind_of(DT)
|
181
|
-
end
|
182
|
-
|
183
|
-
def test_dd
|
184
|
-
DD.new.name.should == :dd
|
185
|
-
DSL.dd.should be_kind_of(DD)
|
186
|
-
@od.dd.should be_kind_of(DD)
|
187
|
-
end
|
188
|
-
|
189
|
-
def test_table
|
190
|
-
assert_equal(:table, TABLE.new.name)
|
191
|
-
assert_kind_of(TABLE, DSL.table)
|
192
|
-
@od.table.should be_kind_of(TABLE)
|
193
|
-
end
|
194
|
-
|
195
|
-
def test_caption
|
196
|
-
assert_equal(:caption, CAPTION.new.name)
|
197
|
-
assert_kind_of(CAPTION, DSL.caption)
|
198
|
-
@od.caption.should be_kind_of(CAPTION)
|
199
|
-
end
|
200
|
-
|
201
|
-
def test_tr
|
202
|
-
assert_equal(:tr, TR.new.name)
|
203
|
-
assert_kind_of(TR, DSL.tr)
|
204
|
-
@od.tr.should be_kind_of(TR)
|
205
|
-
end
|
206
|
-
|
207
|
-
def test_th
|
208
|
-
assert_equal(:th, TH.new.name)
|
209
|
-
assert_kind_of(TH, DSL.th)
|
210
|
-
@od.th.should be_kind_of(TH)
|
211
|
-
end
|
212
|
-
|
213
|
-
def test_td
|
214
|
-
assert_equal(:td, TD.new.name)
|
215
|
-
assert_kind_of(TD, DSL.td)
|
216
|
-
@od.td.should be_kind_of(TD)
|
217
|
-
end
|
218
|
-
|
219
|
-
def test_form
|
220
|
-
assert_equal(:form, FORM.new.name)
|
221
|
-
assert_kind_of(FORM, DSL.form)
|
222
|
-
@od.form.should be_kind_of(FORM)
|
223
|
-
end
|
224
|
-
|
225
|
-
def test_text_area
|
226
|
-
assert_equal(Element.new(:textarea, :name=>"item"), TEXTAREA.new("item"))
|
227
|
-
assert_equal(Element.new(:textarea, :name=>:item), TEXTAREA.new(:item))
|
228
|
-
assert_equal(Element.new(:textarea, :name=>"item", :class=>"cv"), TEXTAREA.new("item", :class=>"cv"))
|
229
|
-
|
230
|
-
t = DSL.textarea("t")
|
231
|
-
assert_kind_of(TEXTAREA, t)
|
232
|
-
assert_equal("t", t[:name])
|
233
|
-
|
234
|
-
t = @od.textarea("t")
|
235
|
-
t.should be_kind_of(TEXTAREA)
|
236
|
-
t[:name].should == "t"
|
237
|
-
end
|
238
|
-
|
239
|
-
def test_input
|
240
|
-
assert_equal(Element.new(:input, :type=>:test, :name=>:item, :value=>"v"), INPUT.new(:test, :item, "v"))
|
241
|
-
assert_equal(Element.new(:input, :type=>"test", :name=>"item", :value=>"v"), INPUT.new("test", "item", "v"))
|
242
|
-
assert_equal(Element.new(:input, :type=>:test, :name=>:item, :value=>"v", :class=>"c"), INPUT.new(:test, :item, "v", :class=>"c"))
|
243
|
-
|
244
|
-
assert_equal(Element.new(:input, :type=>:submit, :value=>"v"), INPUT.new(:submit, nil, "v"))
|
245
|
-
assert_equal(Element.new(:input, :type=>:submit, :name=>"item"), INPUT.new(:submit, "item", nil))
|
246
|
-
|
247
|
-
i = DSL.input(:dummy, :n, :v)
|
248
|
-
assert_kind_of(INPUT, i)
|
249
|
-
assert_match(INPUT.new(:dummy, :n, :v), i)
|
250
|
-
|
251
|
-
i = @od.input(:dummy, :n, :v)
|
252
|
-
i.should be_kind_of(INPUT)
|
253
|
-
i.should == INPUT.new(:dummy, :n, :v)
|
254
|
-
end
|
255
|
-
|
256
|
-
def test_hidden
|
257
|
-
assert_equal(Element.new(:input, :type=>:hidden, :name=>"item", :value=>"v"), HIDDEN.new("item", "v"))
|
258
|
-
assert_equal(Element.new(:input, :type=>:hidden, :name=>:item, :value=>"v"), HIDDEN.new(:item, "v"))
|
259
|
-
assert_equal(Element.new(:input, :type=>:hidden, :name=>:item, :value=>"v", :class=>"c"), HIDDEN.new(:item, "v", :class=>"c"))
|
260
|
-
|
261
|
-
h = DSL.hidden(:n, :v)
|
262
|
-
assert_kind_of(HIDDEN, h)
|
263
|
-
assert_match(HIDDEN.new(:n, :v), h)
|
264
|
-
|
265
|
-
h = @od.hidden(:n, :v)
|
266
|
-
h.should be_kind_of(HIDDEN)
|
267
|
-
h.should == HIDDEN.new(:n, :v)
|
268
|
-
end
|
269
|
-
|
270
|
-
def test_submit
|
271
|
-
assert_equal(Element.new(:input, :type=>:submit), SUBMIT.new)
|
272
|
-
assert_equal(Element.new(:input, :type=>:submit, :value=>"OK"), SUBMIT.new(:value=>"OK"))
|
273
|
-
assert_equal(Element.new(:input, :type=>:submit, :value=>"OK", :class=>"c"), SUBMIT.new(:value=>"OK", :class=>"c"))
|
274
|
-
opt = {:value=>"v", :name=>"n"}
|
275
|
-
opt2 = opt.dup
|
276
|
-
SUBMIT.new(opt2)
|
277
|
-
assert_equal(opt, opt2)
|
278
|
-
|
279
|
-
s = DSL.submit
|
280
|
-
assert_kind_of(SUBMIT, s)
|
281
|
-
assert_match(SUBMIT.new, s)
|
282
|
-
assert(!s[:name])
|
283
|
-
assert(!s[:value])
|
284
|
-
s = DSL.submit(:name=>:s, :value=>:v)
|
285
|
-
assert_equal(:s, s[:name])
|
286
|
-
assert_equal(:v, s[:value])
|
287
|
-
|
288
|
-
s = @od.submit
|
289
|
-
s.should be_kind_of(SUBMIT)
|
290
|
-
s.should == SUBMIT.new
|
291
|
-
s[:name].should be_nil
|
292
|
-
s[:value].should be_nil
|
293
|
-
s = @od.submit(:name=>:s, :value=>:v)
|
294
|
-
s.should == SUBMIT.new(:name=>:s, :value=>:v)
|
295
|
-
end
|
296
|
-
|
297
|
-
def test_text
|
298
|
-
assert_equal(Element.new(:input, :type=>:text, :name=>:item), TEXT.new(:item))
|
299
|
-
assert_equal(Element.new(:input, :type=>:text, :name=>"item"), TEXT.new("item"))
|
300
|
-
assert_equal(Element.new(:input, :type=>:text, :name=>:item, :value=>"txt"), TEXT.new(:item, "txt"))
|
301
|
-
assert_equal(Element.new(:input, :type=>:text, :name=>:item, :value=>"txt", :class=>"c"), TEXT.new(:item, "txt", :class=>"c"))
|
302
|
-
|
303
|
-
t = DSL.text(:n, :v)
|
304
|
-
assert_kind_of(TEXT, t)
|
305
|
-
assert_match(TEXT.new(:n, :v), t)
|
306
|
-
|
307
|
-
t = @od.text(:n, :v)
|
308
|
-
t.should be_kind_of(TEXT)
|
309
|
-
t.should == TEXT.new(:n, :v)
|
310
|
-
end
|
311
|
-
end
|
312
|
-
|
313
|
-
describe EimXML::XHTML::OpenDSL do
|
314
|
-
it "replace EimXML::XHTML::DSL" do
|
315
|
-
e = EimXML::XHTML::OpenDSL.html do |d|
|
316
|
-
d.head do
|
317
|
-
d.title.add "Title"
|
318
|
-
end
|
319
|
-
d.body do
|
320
|
-
d.h1.add "Sample"
|
321
|
-
d.p do
|
322
|
-
d.add "text"
|
323
|
-
d.add "next"
|
324
|
-
end
|
325
|
-
end
|
326
|
-
end
|
327
|
-
e.should == EimXML::XHTML::DSL.html do
|
328
|
-
head do
|
329
|
-
title.add "Title"
|
330
|
-
end
|
331
|
-
body do
|
332
|
-
h1.add "Sample"
|
333
|
-
p do
|
334
|
-
add "text"
|
335
|
-
add "next"
|
336
|
-
end
|
337
|
-
end
|
338
|
-
end
|
339
|
-
end
|
340
|
-
end
|