eim_xml 0.0.3 → 1.0.0

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/spec/parser_spec.rb DELETED
@@ -1,102 +0,0 @@
1
- require "eim_xml/parser"
2
-
3
- module Module.new::M
4
- include EimXML
5
-
6
- describe Parser do
7
- def parse(src)
8
- Parser.new(src).parse
9
- end
10
-
11
- it "'parser' method for test" do
12
- s = " <e /> "
13
- parse(s).should == Parser.new(s).parse
14
- end
15
-
16
- it "#parse with empty element" do
17
- parse("<e />").should == Element.new("e")
18
- parse("<e/>").should == Element.new("e")
19
-
20
- parse(%[<e key="value"/>]).should == Element.new("e", :key=>"value")
21
- parse(%[<e key='value'/>]).should == Element.new("e", :key=>"value")
22
- parse(%[<e key="value" />]).should == Element.new("e", :key=>"value")
23
- parse(%[<e key='value' />]).should == Element.new("e", :key=>"value")
24
-
25
- parse(%[<e key="value" key2="value2"/>]).should == Element.new("e", :key=>"value", :key2=>"value2")
26
- parse(%[<e key="value" key2="value2" />]).should == Element.new("e", :key=>"value", :key2=>"value2")
27
-
28
- s = " <e1 /> <e2 /> "
29
- p = Parser.new(s)
30
- p.parse.should == PCString.new(" ")
31
- p.parse.should == Element.new("e1")
32
- p.parse.should == PCString.new(" ")
33
- p.parse.should == Element.new("e2")
34
- end
35
-
36
- it "#parse with nonempty element" do
37
- parse("<super><sub /></super>").should == Element.new("super") << Element.new("sub")
38
-
39
- parse("<out><in></in></out>").should == Element.new("out") << Element.new("in")
40
-
41
- lambda{parse("<el></e>")}.should raise_error(ParseError, "End tag mismatched.")
42
- lambda{parse("<el><></el>")}.should raise_error(ParseError, "Syntax error.")
43
- end
44
-
45
- it "#parse with string" do
46
- e = parse("string&amp;")
47
- e.should be_kind_of(PCString)
48
- e.to_s.should == "string&amp;"
49
- e = parse(" string &amp; ")
50
- e.should be_kind_of(PCString)
51
- e.to_s.should == " string &amp; "
52
-
53
- e = Element.new("e")
54
- e << PCString.new(" string ")
55
- parse("<e> string </e>").should == e
56
-
57
- e = Element.new("e")
58
- e << PCString.new("string")
59
- parse("<e>string</e>").should == e
60
- end
61
-
62
- it "#parse escaped characters" do
63
- e = parse("&amp;&quot;&apos;&lt;&gt;")
64
- e.to_s.should == "&amp;&quot;&apos;&lt;&gt;"
65
- e.src.should == "&\"'<>"
66
- end
67
-
68
- it "#parse with holding space" do
69
- s = "<e> string with space\n</e>"
70
- e = Element.new("e")
71
- e << PCString.new(" string with space\n")
72
- parse(s).should == e
73
- parse(s).to_s.should == s
74
-
75
- s = "<ns:e> string with space\n</ns:e>"
76
- e = Element.new("ns:e")
77
- e << PCString.new(" string with space\n")
78
- parse(s).should == e
79
- parse(s).to_s.should == s
80
-
81
- s = "<a> string without space <b> string with space <a> string with space 2 </a> </b> </a>"
82
- oa = Element.new("a") << PCString.new(" string without space ")
83
- b = Element.new("b")
84
- b << PCString.new(" string with space ")
85
- ia = Element.new("a")
86
- ia << PCString.new(" string with space 2 ")
87
- b << ia
88
- b << PCString.new(" ")
89
- oa << b
90
- oa << PCString.new(" ")
91
- parse(s).should == oa
92
- parse(s).to_s.should == s
93
-
94
- s = "<a><b/></a>"
95
- a = Element.new("a")
96
- b = Element.new("b")
97
- a << b
98
- parse(s).should == a
99
- parse(s).to_s.should == "<a><b /></a>"
100
- end
101
- end
102
- end
data/spec/xhtml_spec.rb DELETED
@@ -1,490 +0,0 @@
1
- require "stringio"
2
- require "eim_xml/xhtml/dsl"
3
-
4
- module Module.new::M
5
- include EimXML
6
- include EimXML::XHTML
7
- XDSL = XHTML::DSL
8
-
9
- describe XHTML do
10
- it "DSL.base_ should raise NoMethodError" do
11
- lambda{XDSL.base_}.should raise_error(NoMethodError)
12
- end
13
-
14
- it "HTML" do
15
- h = HTML.new(:attr=>"value")
16
- h.should == Element.new(:html, :attr=>"value")
17
-
18
- h = HTML.new do |e|
19
- e <<= Element.new(:sub)
20
- end
21
- h2 = HTML.new
22
- h2 << Element.new(:sub)
23
- h2.should == h
24
-
25
- lambda{EimXML::DSL.html}.should raise_error(NoMethodError)
26
- XDSL.html(:key=>"v").should == HTML.new(:key=>"v")
27
- OpenDSL.html(:key=>"v").should == HTML.new(:key=>"v")
28
-
29
- h = HTML.new
30
- h.write_to.should == "<html />"
31
- h.prefix='<?xml version="1.0"?>'
32
- h.write_to.should == %[<?xml version="1.0"?>\n<html />]
33
- end
34
-
35
- it "HEAD" do
36
- HEAD.new.name.should == :head
37
- XDSL.head.should be_kind_of(HEAD)
38
- OpenDSL.head.should be_kind_of(HEAD)
39
- end
40
-
41
- it "META" do
42
- META.new.name.should == :meta
43
- XDSL.meta.should be_kind_of(META)
44
- OpenDSL.meta.should be_kind_of(META)
45
- end
46
-
47
- it "LINK" do
48
- LINK.new.name.should == :link
49
- XDSL.link.should be_kind_of(LINK)
50
- OpenDSL.link.should be_kind_of(LINK)
51
- end
52
-
53
- it "STYLE" do
54
- STYLE.new.name.should == :style
55
- XDSL.style.should be_kind_of(STYLE)
56
- OpenDSL.style.should be_kind_of(STYLE)
57
- end
58
-
59
- it "SCRIPT" do
60
- SCRIPT.new.name.should == :script
61
- XDSL.script.should be_kind_of(SCRIPT)
62
- OpenDSL.script.should be_kind_of(SCRIPT)
63
- end
64
-
65
- it "TITLE" do
66
- TITLE.new.name.should == :title
67
- XDSL.title.should be_kind_of(TITLE)
68
- OpenDSL.title.should be_kind_of(TITLE)
69
- end
70
-
71
- it "BODY" do
72
- BODY.new.name.should == :body
73
- XDSL.body.should be_kind_of(BODY)
74
- OpenDSL.body.should be_kind_of(BODY)
75
- end
76
-
77
- it "PRE" do
78
- PRE.new.name.should == :pre
79
- XDSL.pre.should be_kind_of(PRE)
80
- OpenDSL.pre.should be_kind_of(PRE)
81
- end
82
-
83
- it "Hn" do
84
- h1 = Hn.new(1)
85
- h6 = Hn.new(6)
86
- h1.name.should == :h1
87
- h1.should be_kind_of(H1)
88
- h6.name.should == :h6
89
- h6.should be_kind_of(H6)
90
- lambda{Hn.new(7)}.should raise_error(ArgumentError)
91
- lambda{Hn.new(0)}.should raise_error(ArgumentError)
92
-
93
- h = Hn.new(1, :key=>:value) do |hn|
94
- hn << "test"
95
- end
96
- h[:key].should == :value
97
- h[0].should == "test"
98
-
99
- [
100
- [H1, XDSL.h1, OpenDSL.h1],
101
- [H2, XDSL.h2, OpenDSL.h2],
102
- [H3, XDSL.h3, OpenDSL.h3],
103
- [H4, XDSL.h4, OpenDSL.h4],
104
- [H5, XDSL.h5, OpenDSL.h5],
105
- [H6, XDSL.h6, OpenDSL.h6]
106
- ].each do |klass, dsl, od|
107
- dsl.should be_kind_of(klass)
108
- od.should be_kind_of(klass)
109
- end
110
- end
111
-
112
- it "P" do
113
- P.new.name.should == :p
114
- XDSL.p.should be_kind_of(P)
115
- OpenDSL.p.should be_kind_of(P)
116
- end
117
-
118
- it "A" do
119
- A.new.name.should == :a
120
- XDSL.a.should be_kind_of(A)
121
- OpenDSL.a.should be_kind_of(A)
122
- end
123
-
124
- it "EM" do
125
- EM.new.name.should == :em
126
- XDSL.em.should be_kind_of(EM)
127
- OpenDSL.em.should be_kind_of(EM)
128
- end
129
-
130
- it "STRONG" do
131
- STRONG.new.name.should == :strong
132
- XDSL.strong.should be_kind_of(STRONG)
133
- OpenDSL.strong.should be_kind_of(STRONG)
134
- end
135
-
136
- it "DIV" do
137
- DIV.new.name.should == :div
138
- XDSL.div.should be_kind_of(DIV)
139
- OpenDSL.div.should be_kind_of(DIV)
140
- end
141
-
142
- it "SPAN" do
143
- SPAN.new.name.should == :span
144
- XDSL.span.should be_kind_of(SPAN)
145
- OpenDSL.span.should be_kind_of(SPAN)
146
- end
147
-
148
- it "UL" do
149
- UL.new.name.should == :ul
150
- XDSL.ul.should be_kind_of(UL)
151
- OpenDSL.ul.should be_kind_of(UL)
152
- end
153
-
154
- it "OL" do
155
- OL.new.name.should == :ol
156
- XDSL.ol.should be_kind_of(OL)
157
- OpenDSL.ol.should be_kind_of(OL)
158
- end
159
-
160
- it "LI" do
161
- LI.new.name.should == :li
162
- XDSL.li.should be_kind_of(LI)
163
- OpenDSL.li.should be_kind_of(LI)
164
- end
165
-
166
- it "DL" do
167
- DL.new.name.should == :dl
168
- XDSL.dl.should be_kind_of(DL)
169
- OpenDSL.dl.should be_kind_of(DL)
170
- end
171
-
172
- it "DT" do
173
- DT.new.name.should == :dt
174
- XDSL.dt.should be_kind_of(DT)
175
- OpenDSL.dt.should be_kind_of(DT)
176
- end
177
-
178
- it "DD" do
179
- DD.new.name.should == :dd
180
- XDSL.dd.should be_kind_of(DD)
181
- OpenDSL.dd.should be_kind_of(DD)
182
- end
183
-
184
- it "TABLE" do
185
- TABLE.new.name.should == :table
186
- XDSL.table.should be_kind_of(TABLE)
187
- OpenDSL.table.should be_kind_of(TABLE)
188
- end
189
-
190
- it "CAPTION" do
191
- CAPTION.new.name.should == :caption
192
- XDSL.caption.should be_kind_of(CAPTION)
193
- OpenDSL.caption.should be_kind_of(CAPTION)
194
- end
195
-
196
- it "TR" do
197
- TR.new.name.should == :tr
198
- XDSL.tr.should be_kind_of(TR)
199
- OpenDSL.tr.should be_kind_of(TR)
200
- end
201
-
202
- it "TH" do
203
- TH.new.name.should == :th
204
- XDSL.th.should be_kind_of(TH)
205
- OpenDSL.th.should be_kind_of(TH)
206
- end
207
-
208
- it "TD" do
209
- TD.new.name.should == :td
210
- XDSL.td.should be_kind_of(TD)
211
- OpenDSL.td.should be_kind_of(TD)
212
- end
213
-
214
- it "FORM" do
215
- FORM.new.name.should == :form
216
- XDSL.form.should be_kind_of(FORM)
217
- OpenDSL.form.should be_kind_of(FORM)
218
-
219
- FORM.new.should_not include(HIDDEN)
220
- end
221
-
222
- it "FORM.new should be able to receive CGI::Session object and set random token" do
223
- s = mock("session")
224
- h = {}
225
- s.should_receive(:[]).any_number_of_times{|k| h[k]}
226
- s.should_receive(:[]=).any_number_of_times{|k, v| h[k]=v}
227
- f = FORM.new(:session=>s)
228
- h["token"].size.should == 40
229
- h["token"].should =~ /\A[0-9a-f]{40}\z/
230
- f.should include(HIDDEN.new(:name=>"token", :value=>h["token"]))
231
-
232
- s = mock("session")
233
- h = {}
234
- s.should_receive(:[]).any_number_of_times{|k| h[k]}
235
- s.should_receive(:[]=).any_number_of_times{|k, v| h[k]=v}
236
- f = FORM.new(:session=>s, :session_name=>"random_key")
237
- h["token"].should be_nil
238
- h["random_key"].size.should == 40
239
- h["random_key"].should =~ /\A[0-9a-f]{40}\z/
240
- f.should include(HIDDEN.new(:name=>"random_key", :value=>h["random_key"]))
241
-
242
- s = mock("session")
243
- h = {}
244
- s.should_receive(:[]).any_number_of_times{|k| h[k]}
245
- s.should_receive(:[]=).any_number_of_times{|k, v| h[k]=v}
246
- FORM.new(:session=>s)
247
- token = s["token"]
248
- FORM.new(:session=>s).should include(HIDDEN.new(:name=>"token", :value=>token))
249
- s["token"].should == token
250
- end
251
-
252
- it "TEXTAREA" do
253
- TEXTAREA.new(:name=>"item").should == Element.new(:textarea, :name=>"item")
254
- TEXTAREA.new(:name=>:item).should == Element.new(:textarea, :name=>:item)
255
- TEXTAREA.new(:name=>"item", :class=>"cv").should == Element.new(:textarea, :name=>"item", :class=>"cv")
256
-
257
- t = XDSL.textarea(:name=>"t")
258
- t.should be_kind_of(TEXTAREA)
259
- t[:name].should == "t"
260
-
261
- t = OpenDSL.textarea(:name=>"t")
262
- t.should be_kind_of(TEXTAREA)
263
- t[:name].should == "t"
264
- end
265
-
266
- it "INPUT" do
267
- INPUT.new(:type=>:test, :name=>:item, :value=>"v").should == Element.new(:input, :type=>:test, :name=>:item, :value=>"v")
268
- INPUT.new(:type=>"test", :name=>"item", :value=>"v").should == Element.new(:input, :type=>"test", :name=>"item", :value=>"v")
269
- INPUT.new(:type=>:test, :name=>:item, :value=>"v", :class=>"c").should == Element.new(:input, :type=>:test, :name=>:item, :value=>"v", :class=>"c")
270
-
271
- INPUT.new(:type=>:submit, :value=>"v").should == Element.new(:input, :type=>:submit, :value=>"v")
272
- INPUT.new(:type=>:submit, :name=>"item").should == Element.new(:input, :type=>:submit, :name=>"item")
273
-
274
- i = XDSL.input(:type=>:dummy, :name=>:n, :value=>:v)
275
- i.should be_kind_of(INPUT)
276
- i.should =~ INPUT.new(:type=>:dummy, :name=>:n, :value=>:v)
277
-
278
- i = OpenDSL.input(:type=>:dummy, :name=>:n, :value=>:v)
279
- i.should be_kind_of(INPUT)
280
- i.should == INPUT.new(:type=>:dummy, :name=>:n, :value=>:v)
281
- end
282
-
283
- it "HIDDEN" do
284
- HIDDEN.new(:name=>"item", :value=>"v").should == Element.new(:input, :type=>:hidden, :name=>"item", :value=>"v")
285
- HIDDEN.new(:name=>:item, :value=>"v").should == Element.new(:input, :type=>:hidden, :name=>:item, :value=>"v")
286
- HIDDEN.new(:name=>:item, :value=>"v", :class=>"c").should == Element.new(:input, :type=>:hidden, :name=>:item, :value=>"v", :class=>"c")
287
-
288
- h = XDSL.hidden(:name=>:n, :value=>:v)
289
- h.should be_kind_of(HIDDEN)
290
- h.should =~ HIDDEN.new(:name=>:n, :value=>:v)
291
-
292
- h = OpenDSL.hidden(:name=>:n, :value=>:v)
293
- h.should be_kind_of(HIDDEN)
294
- h.should == HIDDEN.new(:name=>:n, :value=>:v)
295
- end
296
-
297
- it "SUBMIT" do
298
- SUBMIT.new.should == Element.new(:input, :type=>:submit)
299
- SUBMIT.new(:value=>"OK").should == Element.new(:input, :type=>:submit, :value=>"OK")
300
- SUBMIT.new(:value=>"OK", :class=>"c").should == Element.new(:input, :type=>:submit, :value=>"OK", :class=>"c")
301
- opt = {:value=>"v", :name=>"n"}
302
- opt2 = opt.dup
303
- SUBMIT.new(opt2)
304
- opt2.should == opt
305
-
306
- s = XDSL.submit
307
- s.should be_kind_of(SUBMIT)
308
- s.should =~ SUBMIT.new
309
- (!s[:name]).should be_true
310
- (!s[:value]).should be_true
311
- s = XDSL.submit(:name=>:s, :value=>:v)
312
- s[:name].should == :s
313
- s[:value].should == :v
314
-
315
- s = OpenDSL.submit
316
- s.should be_kind_of(SUBMIT)
317
- s.should == SUBMIT.new
318
- s[:name].should be_nil
319
- s[:value].should be_nil
320
- s = OpenDSL.submit(:name=>:s, :value=>:v)
321
- s.should == SUBMIT.new(:name=>:s, :value=>:v)
322
- end
323
-
324
- it "TEXT" do
325
- TEXT.new(:name=>:item).should == Element.new(:input, :type=>:text, :name=>:item)
326
- TEXT.new(:name=>"item").should == Element.new(:input, :type=>:text, :name=>"item")
327
- TEXT.new(:name=>:item, :value=>"txt").should == Element.new(:input, :type=>:text, :name=>:item, :value=>"txt")
328
- TEXT.new(:name=>:item, :value=>"txt", :class=>"c").should == Element.new(:input, :type=>:text, :name=>:item, :value=>"txt", :class=>"c")
329
-
330
- t = XDSL.text(:name=>:n, :value=>:v)
331
- t.should be_kind_of(TEXT)
332
- t.should =~ TEXT.new(:name=>:n, :value=>:v)
333
-
334
- t = OpenDSL.text(:name=>:n, :value=>:v)
335
- t.should be_kind_of(TEXT)
336
- t.should == TEXT.new(:name=>:n, :value=>:v)
337
- end
338
-
339
- it "PASSWORD" do
340
- PASSWORD.new(:name=>:item).should == Element.new(:input, :type=>:password, :name=>:item)
341
- PASSWORD.new(:name=>"item").should == Element.new(:input, :type=>:password, :name=>"item")
342
- PASSWORD.new(:name=>:item, :value=>"txt").should == Element.new(:input, :type=>:password, :name=>:item, :value=>"txt")
343
- PASSWORD.new(:name=>:item, :value=>"txt", :class=>"c").should == Element.new(:input, :type=>:password, :name=>:item, :value=>"txt", :class=>"c")
344
-
345
- t = XDSL.password(:name=>:n, :value=>:v)
346
- t.should be_kind_of(PASSWORD)
347
- t.should =~ PASSWORD.new(:name=>:n, :value=>:v)
348
-
349
- t = OpenDSL.password(:name=>:n, :value=>:v)
350
- t.should be_kind_of(PASSWORD)
351
- t.should == PASSWORD.new(:name=>:n, :value=>:v)
352
- end
353
-
354
- it "BR" do
355
- BR.new.name.should == :br
356
- XDSL.br.should be_kind_of(BR)
357
- OpenDSL.br.should be_kind_of(BR)
358
- end
359
-
360
- it "HR" do
361
- HR.new.name.should == :hr
362
- XDSL.hr.should be_kind_of(HR)
363
- OpenDSL.hr.should be_kind_of(HR)
364
- end
365
- end
366
-
367
- describe EimXML::XHTML::OpenDSL do
368
- it "replace EimXML::XHTML::DSL" do
369
- e = EimXML::XHTML::OpenDSL.html do |d|
370
- d.head do
371
- d.title.add "Title"
372
- end
373
- d.body do
374
- d.h1.add "Sample"
375
- d.p do
376
- d.add "text"
377
- d.add "next"
378
- end
379
- end
380
- end
381
- e.should == EimXML::XHTML::DSL.html do
382
- head do
383
- title.add "Title"
384
- end
385
- body do
386
- h1.add "Sample"
387
- p do
388
- add "text"
389
- add "next"
390
- end
391
- end
392
- end
393
- end
394
- end
395
-
396
- describe EimXML::XHTML::Formatter do
397
- describe "#write" do
398
- it "should set :preservers=>PRESERVE_SPACES to default option" do
399
- e = EimXML::XHTML::HTML.new
400
- EimXML::Formatter.should_receive(:write).with(e, :preservers=>EimXML::XHTML::PRESERVE_SPACES, :opt=>:dummy)
401
- EimXML::XHTML::Formatter.write(e, :opt=>:dummy)
402
- end
403
-
404
- it "should return string" do
405
- h = EimXML::XHTML::DSL.html do
406
- head do
407
- style.add("style\ntext")
408
- script.add("script\ntext")
409
- end
410
- body do
411
- div.add("text\nin\ndiv")
412
- pre.add("pre\nt")
413
- h1.add("1\nt")
414
- h2.add("2\nt")
415
- h3.add("3\nt")
416
- h4.add("4\nt")
417
- h5.add("5\nt")
418
- h6.add("6\nt")
419
- p.add("p\nt")
420
- a.add("a\nt")
421
- em.add("e\nt")
422
- strong.add("s\nt")
423
- span.add("sp\nt")
424
- li.add("li\nt")
425
- dt.add("dt\nt")
426
- dd.add("dd\nt")
427
- caption.add("c\nt")
428
- th.add("th\nt")
429
- td.add("td\nt")
430
- end
431
- end
432
-
433
- s = <<EOT
434
- <html>
435
- <head>
436
- <style>style
437
- text</style>
438
- <script>script
439
- text</script>
440
- </head>
441
- <body>
442
- <div>
443
- text
444
- in
445
- div
446
- </div>
447
- <pre>pre
448
- t</pre>
449
- <h1>1
450
- t</h1>
451
- <h2>2
452
- t</h2>
453
- <h3>3
454
- t</h3>
455
- <h4>4
456
- t</h4>
457
- <h5>5
458
- t</h5>
459
- <h6>6
460
- t</h6>
461
- <p>p
462
- t</p>
463
- <a>a
464
- t</a>
465
- <em>e
466
- t</em>
467
- <strong>s
468
- t</strong>
469
- <span>sp
470
- t</span>
471
- <li>li
472
- t</li>
473
- <dt>dt
474
- t</dt>
475
- <dd>dd
476
- t</dd>
477
- <caption>c
478
- t</caption>
479
- <th>th
480
- t</th>
481
- <td>td
482
- t</td>
483
- </body>
484
- </html>
485
- EOT
486
- EimXML::XHTML::Formatter.write(h).should == s
487
- end
488
- end
489
- end
490
- end