eim_xml 0.0.4 → 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,524 +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 "IMG" do
60
- IMG.new.name.should == :img
61
- XDSL.img.should be_kind_of(IMG)
62
- OpenDSL.img.should be_kind_of(IMG)
63
- end
64
-
65
- it "SCRIPT" do
66
- SCRIPT.new.name.should == :script
67
- XDSL.script.should be_kind_of(SCRIPT)
68
- OpenDSL.script.should be_kind_of(SCRIPT)
69
- end
70
-
71
- it "TITLE" do
72
- TITLE.new.name.should == :title
73
- XDSL.title.should be_kind_of(TITLE)
74
- OpenDSL.title.should be_kind_of(TITLE)
75
- end
76
-
77
- it "BODY" do
78
- BODY.new.name.should == :body
79
- XDSL.body.should be_kind_of(BODY)
80
- OpenDSL.body.should be_kind_of(BODY)
81
- end
82
-
83
- it "PRE" do
84
- PRE.new.name.should == :pre
85
- XDSL.pre.should be_kind_of(PRE)
86
- OpenDSL.pre.should be_kind_of(PRE)
87
- end
88
-
89
- it "Hn" do
90
- h1 = Hn.new(1)
91
- h6 = Hn.new(6)
92
- h1.name.should == :h1
93
- h1.should be_kind_of(H1)
94
- h6.name.should == :h6
95
- h6.should be_kind_of(H6)
96
- lambda{Hn.new(7)}.should raise_error(ArgumentError)
97
- lambda{Hn.new(0)}.should raise_error(ArgumentError)
98
-
99
- h = Hn.new(1, :key=>:value) do |hn|
100
- hn << "test"
101
- end
102
- h[:key].should == :value
103
- h[0].should == "test"
104
-
105
- [
106
- [H1, XDSL.h1, OpenDSL.h1],
107
- [H2, XDSL.h2, OpenDSL.h2],
108
- [H3, XDSL.h3, OpenDSL.h3],
109
- [H4, XDSL.h4, OpenDSL.h4],
110
- [H5, XDSL.h5, OpenDSL.h5],
111
- [H6, XDSL.h6, OpenDSL.h6]
112
- ].each do |klass, dsl, od|
113
- dsl.should be_kind_of(klass)
114
- od.should be_kind_of(klass)
115
- end
116
- end
117
-
118
- it "P" do
119
- P.new.name.should == :p
120
- XDSL.p.should be_kind_of(P)
121
- OpenDSL.p.should be_kind_of(P)
122
- end
123
-
124
- it "A" do
125
- A.new.name.should == :a
126
- XDSL.a.should be_kind_of(A)
127
- OpenDSL.a.should be_kind_of(A)
128
- end
129
-
130
- it "EM" do
131
- EM.new.name.should == :em
132
- XDSL.em.should be_kind_of(EM)
133
- OpenDSL.em.should be_kind_of(EM)
134
- end
135
-
136
- it "STRONG" do
137
- STRONG.new.name.should == :strong
138
- XDSL.strong.should be_kind_of(STRONG)
139
- OpenDSL.strong.should be_kind_of(STRONG)
140
- end
141
-
142
- it "DIV" do
143
- DIV.new.name.should == :div
144
- XDSL.div.should be_kind_of(DIV)
145
- OpenDSL.div.should be_kind_of(DIV)
146
- end
147
-
148
- it "SPAN" do
149
- SPAN.new.name.should == :span
150
- XDSL.span.should be_kind_of(SPAN)
151
- OpenDSL.span.should be_kind_of(SPAN)
152
- end
153
-
154
- it "UL" do
155
- UL.new.name.should == :ul
156
- XDSL.ul.should be_kind_of(UL)
157
- OpenDSL.ul.should be_kind_of(UL)
158
- end
159
-
160
- it "OL" do
161
- OL.new.name.should == :ol
162
- XDSL.ol.should be_kind_of(OL)
163
- OpenDSL.ol.should be_kind_of(OL)
164
- end
165
-
166
- it "LI" do
167
- LI.new.name.should == :li
168
- XDSL.li.should be_kind_of(LI)
169
- OpenDSL.li.should be_kind_of(LI)
170
- end
171
-
172
- it "DL" do
173
- DL.new.name.should == :dl
174
- XDSL.dl.should be_kind_of(DL)
175
- OpenDSL.dl.should be_kind_of(DL)
176
- end
177
-
178
- it "DT" do
179
- DT.new.name.should == :dt
180
- XDSL.dt.should be_kind_of(DT)
181
- OpenDSL.dt.should be_kind_of(DT)
182
- end
183
-
184
- it "DD" do
185
- DD.new.name.should == :dd
186
- XDSL.dd.should be_kind_of(DD)
187
- OpenDSL.dd.should be_kind_of(DD)
188
- end
189
-
190
- it "TABLE" do
191
- TABLE.new.name.should == :table
192
- XDSL.table.should be_kind_of(TABLE)
193
- OpenDSL.table.should be_kind_of(TABLE)
194
- end
195
-
196
- it "CAPTION" do
197
- CAPTION.new.name.should == :caption
198
- XDSL.caption.should be_kind_of(CAPTION)
199
- OpenDSL.caption.should be_kind_of(CAPTION)
200
- end
201
-
202
- it "TR" do
203
- TR.new.name.should == :tr
204
- XDSL.tr.should be_kind_of(TR)
205
- OpenDSL.tr.should be_kind_of(TR)
206
- end
207
-
208
- it "TH" do
209
- TH.new.name.should == :th
210
- XDSL.th.should be_kind_of(TH)
211
- OpenDSL.th.should be_kind_of(TH)
212
- end
213
-
214
- it "TD" do
215
- TD.new.name.should == :td
216
- XDSL.td.should be_kind_of(TD)
217
- OpenDSL.td.should be_kind_of(TD)
218
- end
219
-
220
- it "FORM" do
221
- FORM.new.name.should == :form
222
- XDSL.form.should be_kind_of(FORM)
223
- OpenDSL.form.should be_kind_of(FORM)
224
-
225
- FORM.new.should_not include(HIDDEN)
226
- end
227
-
228
- it "FORM.new should be able to receive CGI::Session object and set random token" do
229
- s = mock("session")
230
- h = {}
231
- s.should_receive(:[]).any_number_of_times{|k| h[k]}
232
- s.should_receive(:[]=).any_number_of_times{|k, v| h[k]=v}
233
- f = FORM.new(:session=>s)
234
- h["token"].size.should == 40
235
- h["token"].should =~ /\A[0-9a-f]{40}\z/
236
- f.should include(HIDDEN.new(:name=>"token", :value=>h["token"]))
237
-
238
- s = mock("session")
239
- h = {}
240
- s.should_receive(:[]).any_number_of_times{|k| h[k]}
241
- s.should_receive(:[]=).any_number_of_times{|k, v| h[k]=v}
242
- f = FORM.new(:session=>s, :session_name=>"random_key")
243
- h["token"].should be_nil
244
- h["random_key"].size.should == 40
245
- h["random_key"].should =~ /\A[0-9a-f]{40}\z/
246
- f.should include(HIDDEN.new(:name=>"random_key", :value=>h["random_key"]))
247
-
248
- s = mock("session")
249
- h = {}
250
- s.should_receive(:[]).any_number_of_times{|k| h[k]}
251
- s.should_receive(:[]=).any_number_of_times{|k, v| h[k]=v}
252
- FORM.new(:session=>s)
253
- token = s["token"]
254
- FORM.new(:session=>s).should include(HIDDEN.new(:name=>"token", :value=>token))
255
- s["token"].should == token
256
- end
257
-
258
- it "TEXTAREA" do
259
- TEXTAREA.new(:name=>"item").should == Element.new(:textarea, :name=>"item")
260
- TEXTAREA.new(:name=>:item).should == Element.new(:textarea, :name=>:item)
261
- TEXTAREA.new(:name=>"item", :class=>"cv").should == Element.new(:textarea, :name=>"item", :class=>"cv")
262
-
263
- t = XDSL.textarea(:name=>"t")
264
- t.should be_kind_of(TEXTAREA)
265
- t[:name].should == "t"
266
-
267
- t = OpenDSL.textarea(:name=>"t")
268
- t.should be_kind_of(TEXTAREA)
269
- t[:name].should == "t"
270
- end
271
-
272
- it "BUTTON" do
273
- BUTTON.new.should == Element.new(:button)
274
- end
275
-
276
- it "INPUT" do
277
- INPUT.new(:type=>:test, :name=>:item, :value=>"v").should == Element.new(:input, :type=>:test, :name=>:item, :value=>"v")
278
- INPUT.new(:type=>"test", :name=>"item", :value=>"v").should == Element.new(:input, :type=>"test", :name=>"item", :value=>"v")
279
- INPUT.new(:type=>:test, :name=>:item, :value=>"v", :class=>"c").should == Element.new(:input, :type=>:test, :name=>:item, :value=>"v", :class=>"c")
280
-
281
- INPUT.new(:type=>:submit, :value=>"v").should == Element.new(:input, :type=>:submit, :value=>"v")
282
- INPUT.new(:type=>:submit, :name=>"item").should == Element.new(:input, :type=>:submit, :name=>"item")
283
-
284
- i = XDSL.input(:type=>:dummy, :name=>:n, :value=>:v)
285
- i.should be_kind_of(INPUT)
286
- i.should =~ INPUT.new(:type=>:dummy, :name=>:n, :value=>:v)
287
-
288
- i = OpenDSL.input(:type=>:dummy, :name=>:n, :value=>:v)
289
- i.should be_kind_of(INPUT)
290
- i.should == INPUT.new(:type=>:dummy, :name=>:n, :value=>:v)
291
- end
292
-
293
- it "HIDDEN" do
294
- HIDDEN.new(:name=>"item", :value=>"v").should == Element.new(:input, :type=>:hidden, :name=>"item", :value=>"v")
295
- HIDDEN.new(:name=>:item, :value=>"v").should == Element.new(:input, :type=>:hidden, :name=>:item, :value=>"v")
296
- HIDDEN.new(:name=>:item, :value=>"v", :class=>"c").should == Element.new(:input, :type=>:hidden, :name=>:item, :value=>"v", :class=>"c")
297
-
298
- h = XDSL.hidden(:name=>:n, :value=>:v)
299
- h.should be_kind_of(HIDDEN)
300
- h.should =~ HIDDEN.new(:name=>:n, :value=>:v)
301
-
302
- h = OpenDSL.hidden(:name=>:n, :value=>:v)
303
- h.should be_kind_of(HIDDEN)
304
- h.should == HIDDEN.new(:name=>:n, :value=>:v)
305
- end
306
-
307
- it "SUBMIT" do
308
- SUBMIT.new.should == Element.new(:button, :type=>:submit)
309
- SUBMIT.new(:value=>"OK").should == Element.new(:button, :type=>:submit, :value=>"OK")
310
- SUBMIT.new(:value=>"OK", :class=>"c").should == Element.new(:button, :type=>:submit, :value=>"OK", :class=>"c")
311
- opt = {:value=>"v", :name=>"n"}
312
- opt2 = opt.dup
313
- SUBMIT.new(opt2)
314
- opt2.should == opt
315
-
316
- s = XDSL.submit
317
- s.should be_kind_of(SUBMIT)
318
- s.should =~ SUBMIT.new
319
- (!s[:name]).should be_true
320
- (!s[:value]).should be_true
321
- s = XDSL.submit(:name=>:s, :value=>:v)
322
- s[:name].should == :s
323
- s[:value].should == :v
324
-
325
- s = OpenDSL.submit
326
- s.should be_kind_of(SUBMIT)
327
- s.should == SUBMIT.new
328
- s[:name].should be_nil
329
- s[:value].should be_nil
330
- s = OpenDSL.submit(:name=>:s, :value=>:v)
331
- s.should == SUBMIT.new(:name=>:s, :value=>:v)
332
- end
333
-
334
- it "TEXT" do
335
- TEXT.new(:name=>:item).should == Element.new(:input, :type=>:text, :name=>:item)
336
- TEXT.new(:name=>"item").should == Element.new(:input, :type=>:text, :name=>"item")
337
- TEXT.new(:name=>:item, :value=>"txt").should == Element.new(:input, :type=>:text, :name=>:item, :value=>"txt")
338
- TEXT.new(:name=>:item, :value=>"txt", :class=>"c").should == Element.new(:input, :type=>:text, :name=>:item, :value=>"txt", :class=>"c")
339
-
340
- t = XDSL.text(:name=>:n, :value=>:v)
341
- t.should be_kind_of(TEXT)
342
- t.should =~ TEXT.new(:name=>:n, :value=>:v)
343
-
344
- t = OpenDSL.text(:name=>:n, :value=>:v)
345
- t.should be_kind_of(TEXT)
346
- t.should == TEXT.new(:name=>:n, :value=>:v)
347
- end
348
-
349
- it "PASSWORD" do
350
- PASSWORD.new(:name=>:item).should == Element.new(:input, :type=>:password, :name=>:item)
351
- PASSWORD.new(:name=>"item").should == Element.new(:input, :type=>:password, :name=>"item")
352
- PASSWORD.new(:name=>:item, :value=>"txt").should == Element.new(:input, :type=>:password, :name=>:item, :value=>"txt")
353
- PASSWORD.new(:name=>:item, :value=>"txt", :class=>"c").should == Element.new(:input, :type=>:password, :name=>:item, :value=>"txt", :class=>"c")
354
-
355
- t = XDSL.password(:name=>:n, :value=>:v)
356
- t.should be_kind_of(PASSWORD)
357
- t.should =~ PASSWORD.new(:name=>:n, :value=>:v)
358
-
359
- t = OpenDSL.password(:name=>:n, :value=>:v)
360
- t.should be_kind_of(PASSWORD)
361
- t.should == PASSWORD.new(:name=>:n, :value=>:v)
362
- end
363
-
364
- it "FILE" do
365
- FILE.new(:name=>:foo).should == Element.new(:input, :type=>:file, :name=>:foo)
366
- XDSL.file(:name=>:foo).should =~ FILE.new(:name=>:foo)
367
-
368
- OpenDSL.file(:name=>:foo).should == FILE.new(:name=>:foo)
369
- end
370
-
371
- it "SELECT" do
372
- SELECT.new(:name=>:foo).should == Element.new(:select, :name=>:foo)
373
- XDSL.select(:name=>:foo).should == SELECT.new(:name=>:foo)
374
-
375
- OpenDSL.select(:name=>:foo).should == SELECT.new(:name=>:foo)
376
- end
377
-
378
- it "OPTION" do
379
- OPTION.new(:value=>:bar, :selected=>true){|e| e << "TEXT"}.should == Element.new(:option, :value=>:bar, :selected=>true){|e| e.add("TEXT")}
380
- XDSL.option(:value=>:bar).should == OPTION.new(:value=>:bar)
381
-
382
- OpenDSL.option(:value=>:bar).should == OPTION.new(:value=>:bar)
383
- end
384
-
385
- it "BR" do
386
- BR.new.name.should == :br
387
- XDSL.br.should be_kind_of(BR)
388
- OpenDSL.br.should be_kind_of(BR)
389
- end
390
-
391
- it "HR" do
392
- HR.new.name.should == :hr
393
- XDSL.hr.should be_kind_of(HR)
394
- OpenDSL.hr.should be_kind_of(HR)
395
- end
396
- end
397
-
398
- describe EimXML::XHTML::OpenDSL do
399
- it "replace EimXML::XHTML::DSL" do
400
- e = EimXML::XHTML::OpenDSL.html do |d|
401
- d.head do
402
- d.title.add "Title"
403
- end
404
- d.body do
405
- d.h1.add "Sample"
406
- d.p do
407
- d.add "text"
408
- d.add "next"
409
- end
410
- end
411
- end
412
- e.should == EimXML::XHTML::DSL.html do
413
- head do
414
- title.add "Title"
415
- end
416
- body do
417
- h1.add "Sample"
418
- p do
419
- add "text"
420
- add "next"
421
- end
422
- end
423
- end
424
- end
425
- end
426
-
427
- describe EimXML::XHTML::Formatter do
428
- describe "#write" do
429
- it "should set :preservers=>PRESERVE_SPACES to default option" do
430
- e = EimXML::XHTML::HTML.new
431
- EimXML::Formatter.should_receive(:write).with(e, :preservers=>EimXML::XHTML::PRESERVE_SPACES, :opt=>:dummy)
432
- EimXML::XHTML::Formatter.write(e, :opt=>:dummy)
433
- end
434
-
435
- it "should return string" do
436
- h = EimXML::XHTML::DSL.html do
437
- head do
438
- style.add("style\ntext")
439
- script.add("script\ntext")
440
- end
441
- body do
442
- div.add("text\nin\ndiv")
443
- pre.add("pre\nt")
444
- h1.add("1\nt")
445
- h2.add("2\nt")
446
- h3.add("3\nt")
447
- h4.add("4\nt")
448
- h5.add("5\nt")
449
- h6.add("6\nt")
450
- p.add("p\nt")
451
- a.add("a\nt")
452
- em.add("e\nt")
453
- strong.add("s\nt")
454
- span.add("sp\nt")
455
- li.add("li\nt")
456
- dt.add("dt\nt")
457
- dd.add("dd\nt")
458
- caption.add("c\nt")
459
- th.add("th\nt")
460
- td.add("td\nt")
461
- button.add("button\nt")
462
- end
463
- end
464
-
465
- s = <<EOT
466
- <html>
467
- <head>
468
- <style>style
469
- text</style>
470
- <script>script
471
- text</script>
472
- </head>
473
- <body>
474
- <div>
475
- text
476
- in
477
- div
478
- </div>
479
- <pre>pre
480
- t</pre>
481
- <h1>1
482
- t</h1>
483
- <h2>2
484
- t</h2>
485
- <h3>3
486
- t</h3>
487
- <h4>4
488
- t</h4>
489
- <h5>5
490
- t</h5>
491
- <h6>6
492
- t</h6>
493
- <p>p
494
- t</p>
495
- <a>a
496
- t</a>
497
- <em>e
498
- t</em>
499
- <strong>s
500
- t</strong>
501
- <span>sp
502
- t</span>
503
- <li>li
504
- t</li>
505
- <dt>dt
506
- t</dt>
507
- <dd>dd
508
- t</dd>
509
- <caption>c
510
- t</caption>
511
- <th>th
512
- t</th>
513
- <td>td
514
- t</td>
515
- <button>button
516
- t</button>
517
- </body>
518
- </html>
519
- EOT
520
- EimXML::XHTML::Formatter.write(h).should == s
521
- end
522
- end
523
- end
524
- end