arti_mark 0.1.beta3 → 0.1.beta5

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.
@@ -1,3 +1,3 @@
1
1
  module ArtiMark
2
- VERSION = "0.1.beta3"
2
+ VERSION = "0.1.beta5"
3
3
  end
@@ -8,8 +8,8 @@ describe ArtiMark do
8
8
  describe 'convert' do
9
9
  it 'should generate valid xhtml' do
10
10
  text = 'some text'
11
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the title')
12
- xhtml = Nokogiri::XML::Document.parse(artimark.convert(text)[0])
11
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
12
+ xhtml = Nokogiri::XML::Document.parse(artimark.html[0])
13
13
  expect(xhtml.root.name).to eq('html')
14
14
  expect(xhtml.root.namespaces['xmlns']).to eq('http://www.w3.org/1999/xhtml')
15
15
  expect(xhtml.root['xml:lang']).to eq('ja')
@@ -19,8 +19,8 @@ describe ArtiMark do
19
19
  end
20
20
  it 'should convert simple paragraph' do
21
21
  text = "ここから、パラグラフがはじまります。\n「二行目です。」\n三行目です。\n\n\n ここから、次のパラグラフです。"
22
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
23
- converted = artimark.convert(text)
22
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
23
+ converted = artimark.html
24
24
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
25
25
  expect(body.element_children.size).to eq 2
26
26
  expect(body.element_children[0].selector_and_children).to eq(
@@ -36,10 +36,48 @@ describe ArtiMark do
36
36
  ['p', 'ここから、次のパラグラフです。']]
37
37
  )
38
38
  end
39
+ it 'should convert simple paragraph in english mode' do
40
+ text = "paragraph begins.\n2nd line.\n 3rd line.\n\n\n next paragraph."
41
+ artimark = ArtiMark::Document.parse(text, :lang => 'en', :title => 'the title')
42
+ converted = artimark.html
43
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
44
+ expect(body.element_children.size).to eq 2
45
+ expect(body.element_children[0].selector_and_children).to eq(
46
+ ['p',
47
+ 'paragraph begins.', ['br', ''],
48
+ '2nd line.', ['br', ''],
49
+ '3rd line.'
50
+ ]
51
+ )
52
+
53
+ expect(body.element_children[1].selector_and_children).to eq(
54
+ ['p', 'next paragraph.']
55
+ )
56
+ end
57
+
58
+ it 'should convert simple paragraph in japanese mode, but paragraph mode is default' do
59
+ text = "paragraph begins.\n2nd line.\n 3rd line.\n\n\n next paragraph."
60
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title', :paragraph_style => :default)
61
+ converted = artimark.html
62
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
63
+ expect(body.element_children.size).to eq 2
64
+ expect(body.element_children[0].selector_and_children).to eq(
65
+ ['p',
66
+ 'paragraph begins.', ['br', ''],
67
+ '2nd line.', ['br', ''],
68
+ '3rd line.'
69
+ ]
70
+ )
71
+
72
+ expect(body.element_children[1].selector_and_children).to eq(
73
+ ['p', 'next paragraph.']
74
+ )
75
+ end
76
+
39
77
  it 'should convert paragraph with header' do
40
78
  text = "h1: タイトルです。\r\nここから、パラグラフがはじまります。\n\nh2.column:ふたつめの見出しです。\n ここから、次のパラグラフです。\nh3.third.foo: クラスが複数ある見出しです"
41
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
42
- converted = artimark.convert(text)
79
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
80
+ converted = artimark.html
43
81
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
44
82
  expect(body.element_children.size).to eq 5
45
83
  expect(body.element_children[0].a).to eq ['h1', 'タイトルです。']
@@ -59,8 +97,8 @@ describe ArtiMark do
59
97
 
60
98
  it 'should convert div and paragraph' do
61
99
  text = "d {\n1st line. \n}"
62
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
63
- converted = artimark.convert(text)
100
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the document title')
101
+ converted = artimark.html
64
102
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
65
103
  expect(body.element_children[0].selector_and_children).to eq(
66
104
  ['div',
@@ -73,8 +111,8 @@ describe ArtiMark do
73
111
 
74
112
  it 'should convert div without pgroup' do
75
113
  text = "d(wo-pgroup) {\n1st line. \n}"
76
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
77
- converted = artimark.convert(text)
114
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
115
+ converted = artimark.html
78
116
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
79
117
  expect(body.element_children[0].selector_and_children).to eq(
80
118
  ['div',
@@ -85,8 +123,8 @@ describe ArtiMark do
85
123
 
86
124
  it 'should nest div without pgroup' do
87
125
  text = "d(wo-pgroup) {\nd {\nnested.\n} \n}"
88
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
89
- converted = artimark.convert(text)
126
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
127
+ converted = artimark.html
90
128
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
91
129
  expect(body.element_children[0].selector_and_children).to eq(
92
130
  ['div',
@@ -99,8 +137,8 @@ describe ArtiMark do
99
137
 
100
138
  it 'should nest div without pgroup and with pgroup' do
101
139
  text = "d(wo-pgroup) {\nd {\nnested.\n} \n}\nd {\nin pgroup\n}"
102
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
103
- converted = artimark.convert(text)
140
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
141
+ converted = artimark.html
104
142
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
105
143
  expect(body.element_children[0].selector_and_children).to eq(
106
144
  ['div',
@@ -119,8 +157,8 @@ describe ArtiMark do
119
157
 
120
158
  it 'should convert div with class' do
121
159
  text = "d.preface-one {\n h1: title.\n}"
122
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
123
- converted = artimark.convert(text)
160
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
161
+ converted = artimark.html
124
162
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
125
163
  expect(body.element_children[0].selector_and_children).to eq(
126
164
  ['div.preface-one',
@@ -131,8 +169,8 @@ describe ArtiMark do
131
169
 
132
170
  it 'should convert div with id and class' do
133
171
  text = "d#thecontents.preface-one {\nh1: title.\n}"
134
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
135
- converted = artimark.convert(text)
172
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
173
+ converted = artimark.html
136
174
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
137
175
  expect(body.element_children[0].selector_and_children).to eq(
138
176
  ['div#thecontents.preface-one',
@@ -143,8 +181,8 @@ describe ArtiMark do
143
181
 
144
182
  it 'should convert nested div' do
145
183
  text = "d.preface {\n outer div. \n d.nested {\n nested!\n}\nouter div again.\n}"
146
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
147
- converted = artimark.convert(text)
184
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
185
+ converted = artimark.html
148
186
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
149
187
  expect(body.element_children[0].selector_and_children).to eq(
150
188
  ['div.preface',
@@ -165,8 +203,8 @@ describe ArtiMark do
165
203
 
166
204
  it 'should convert article' do
167
205
  text = "art {\n in the article.\n}"
168
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
169
- converted = artimark.convert(text)
206
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
207
+ converted = artimark.html
170
208
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
171
209
  expect(body.element_children[0].selector_and_children).to eq(
172
210
  ['article',
@@ -179,8 +217,22 @@ describe ArtiMark do
179
217
 
180
218
  it 'should convert article with other notation' do
181
219
  text = "arti {\n in the article.\n}"
182
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
183
- converted = artimark.convert(text)
220
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
221
+ converted = artimark.html
222
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
223
+ expect(body.element_children[0].selector_and_children).to eq(
224
+ ['article',
225
+ ['div.pgroup',
226
+ ['p', 'in the article.']
227
+ ]
228
+ ]
229
+ )
230
+ end
231
+
232
+ it 'should convert article with yet anther notation' do
233
+ text = "article {\n in the article.\n}"
234
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
235
+ converted = artimark.html
184
236
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
185
237
  expect(body.element_children[0].selector_and_children).to eq(
186
238
  ['article',
@@ -191,11 +243,60 @@ describe ArtiMark do
191
243
  )
192
244
  end
193
245
 
246
+ it 'should convert section ' do
247
+ text = "art {\nsec {\n section in the article. \n}\n}"
248
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
249
+ converted = artimark.html
250
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
251
+ expect(body.element_children[0].selector_and_children).to eq(
252
+ ['article',
253
+ ['section',
254
+ ['div.pgroup',
255
+ ['p', 'section in the article.']
256
+ ]
257
+ ]
258
+ ]
259
+ )
260
+ end
261
+
262
+ it 'should convert section with other notation' do
263
+ text = "art {\nsect {\n section in the article. \n}\n}"
264
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
265
+ converted = artimark.html
266
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
267
+ expect(body.element_children[0].selector_and_children).to eq(
268
+ ['article',
269
+ ['section',
270
+ ['div.pgroup',
271
+ ['p', 'section in the article.']
272
+ ]
273
+ ]
274
+ ]
275
+ )
276
+ end
277
+
278
+ it 'should convert section with yet other notation' do
279
+ text = "art {\nsection {\n section in the article. \n}\n}"
280
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
281
+ converted = artimark.html
282
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
283
+ expect(body.element_children[0].selector_and_children).to eq(
284
+ ['article',
285
+ ['section',
286
+ ['div.pgroup',
287
+ ['p', 'section in the article.']
288
+ ]
289
+ ]
290
+ ]
291
+ )
292
+ end
293
+
294
+
194
295
 
195
296
  it 'should handle block image' do
196
297
  text = "this is normal line.\nimage(./image1.jpg, alt text): caption text"
197
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
198
- converted = artimark.convert(text)
298
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
299
+ converted = artimark.html
199
300
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
200
301
  expect(body.element_children[0].selector_and_children).to eq(
201
302
  ['div.pgroup',
@@ -212,8 +313,8 @@ describe ArtiMark do
212
313
 
213
314
  it 'should handle block image with before caption' do
214
315
  text = "this is normal line.\nimage(./image1.jpg, alt text, caption_before: true): caption text"
215
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
216
- converted = artimark.convert(text)
316
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
317
+ converted = artimark.html
217
318
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
218
319
  expect(body.element_children[0].selector_and_children).to eq(
219
320
  ['div.pgroup',
@@ -230,8 +331,8 @@ describe ArtiMark do
230
331
 
231
332
  it 'should handle block image without caption' do
232
333
  text = "this is normal line.\nimage(./image1.jpg, alt text):"
233
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
234
- converted = artimark.convert(text)
334
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
335
+ converted = artimark.html
235
336
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
236
337
  expect(body.element_children[0].selector_and_children).to eq(
237
338
  ['div.pgroup',
@@ -247,8 +348,8 @@ describe ArtiMark do
247
348
 
248
349
  it 'should handle page change article' do
249
350
  text = "this is start.\nnewpage(page changed):\nthis is second page.\nnewpage:\nand the third."
250
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
251
- converted = artimark.convert(text)
351
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
352
+ converted = artimark.html
252
353
  expect(converted.size).to eq 3
253
354
  body1 = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
254
355
  expect(body1.element_children[0].selector_and_children).to eq(
@@ -278,8 +379,8 @@ describe ArtiMark do
278
379
 
279
380
  it 'should handle stylesheets' do
280
381
  text = "d.styled {\n this is styled document.\n}"
281
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title', :stylesheets => ['reset.css', 'mystyle.css'])
282
- converted = artimark.convert(text)
382
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the document title', :stylesheets => ['reset.css', 'mystyle.css'])
383
+ converted = artimark.html
283
384
  head = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:head')
284
385
  expect(head.element_children[0].a).to eq ['title', 'the document title']
285
386
  expect(head.element_children[1].a).to eq ["link[rel='stylesheet'][type='text/css'][href='reset.css']", '']
@@ -288,8 +389,8 @@ describe ArtiMark do
288
389
 
289
390
  it 'should handle link' do
290
391
  text = " link to [link(http://github.com/skoji/artimark){artimark repository}]. \ncan you see this?"
291
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
292
- converted = artimark.convert(text)
392
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
393
+ converted = artimark.html
293
394
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
294
395
  expect(body.element_children[0].selector_and_children).to eq(
295
396
  ['div.pgroup',
@@ -305,8 +406,8 @@ describe ArtiMark do
305
406
 
306
407
  it 'should handle link with l' do
307
408
  text = "link to [l(http://github.com/skoji/artimark){artimark repository}]. \ncan you see this?"
308
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
309
- converted = artimark.convert(text)
409
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
410
+ converted = artimark.html
310
411
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
311
412
  expect(body.element_children[0].selector_and_children).to eq(
312
413
  ['div.pgroup',
@@ -322,8 +423,8 @@ describe ArtiMark do
322
423
 
323
424
  it 'should handle custom paragraph' do
324
425
  text = "this is normal line.\np.custom: this text is in custom class."
325
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
326
- converted = artimark.convert(text)
426
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
427
+ converted = artimark.html
327
428
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
328
429
  expect(body.element_children[0].selector_and_children).to eq(
329
430
  ['div.pgroup',
@@ -335,8 +436,8 @@ describe ArtiMark do
335
436
 
336
437
  it 'should handle span' do
337
438
  text = "p.custom: this text is in [s.keyword{custom}] class."
338
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
339
- converted = artimark.convert(text)
439
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
440
+ converted = artimark.html
340
441
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
341
442
  expect(body.element_children[0].selector_and_children).to eq(
342
443
  ['div.pgroup',
@@ -347,8 +448,8 @@ describe ArtiMark do
347
448
 
348
449
  it 'should handle any block' do
349
450
  text = "this is normal line.\ncite {\n this block should be in cite. \n}"
350
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
351
- converted = artimark.convert(text)
451
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
452
+ converted = artimark.html
352
453
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
353
454
  expect(body.element_children[0].selector_and_children).to eq(
354
455
  ['div.pgroup',
@@ -366,8 +467,8 @@ describe ArtiMark do
366
467
 
367
468
  it 'should handle inline image' do
368
469
  text = "simple image [img(./image1.jpg, alt)]."
369
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
370
- converted = artimark.convert(text)
470
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
471
+ converted = artimark.html
371
472
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
372
473
  expect(body.element_children[0].selector_and_children).to eq(
373
474
  ['div.pgroup',
@@ -378,8 +479,8 @@ describe ArtiMark do
378
479
 
379
480
  it 'should handle any inline' do
380
481
  text = "should be [strong{marked as strong}]."
381
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
382
- converted = artimark.convert(text)
482
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
483
+ converted = artimark.html
383
484
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
384
485
  expect(body.element_children[0].selector_and_children).to eq(
385
486
  ['div.pgroup',
@@ -389,16 +490,16 @@ describe ArtiMark do
389
490
 
390
491
  it 'should convert inline command within line block' do
391
492
  text = "h1: [tcy{20}]縦中横タイトル"
392
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
393
- converted = artimark.convert(text)
493
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
494
+ converted = artimark.html
394
495
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
395
496
  expect(body.element_children[0].selector_and_children).to eq ['h1', ['span.tcy', '20'], '縦中横タイトル']
396
497
  end
397
498
 
398
499
  it 'should handle ruby' do
399
500
  text = "[ruby(とんぼ){蜻蛉}]の[ruby(めがね){眼鏡}]はみずいろめがね"
400
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
401
- converted = artimark.convert(text)
501
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
502
+ converted = artimark.html
402
503
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
403
504
  expect(body.element_children[0].selector_and_children).to eq ['div.pgroup', ['p',
404
505
  ['ruby', '蜻蛉', ['rp','('],['rt','とんぼ'],['rp', ')']],
@@ -409,8 +510,8 @@ describe ArtiMark do
409
510
 
410
511
  it 'should handle tatechuyoko' do
411
512
  text = "[tcy{10}]年前のことだった"
412
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
413
- converted = artimark.convert(text)
513
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
514
+ converted = artimark.html
414
515
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
415
516
  expect(body.element_children[0].selector_and_children).to eq(
416
517
  ['div.pgroup',
@@ -420,8 +521,8 @@ describe ArtiMark do
420
521
 
421
522
  it 'should handle ordered list ' do
422
523
  text = "this is normal line.\n1: for the 1st.\n2: secondly, blah.\n3: and last...\nthe ordered list ends."
423
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
424
- converted = artimark.convert(text)
524
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
525
+ converted = artimark.html
425
526
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
426
527
  expect(body.element_children.size).to eq 3
427
528
  expect(body.element_children[0].selector_and_children).to eq(
@@ -442,8 +543,8 @@ describe ArtiMark do
442
543
 
443
544
  it 'should handle unordered list ' do
444
545
  text = "this is normal line.\n*: for the 1st.\n*: secondly, blah.\n*: and last...\nthe ordered list ends."
445
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
446
- converted = artimark.convert(text)
546
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
547
+ converted = artimark.html
447
548
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
448
549
  expect(body.element_children.size).to eq 3
449
550
  expect(body.element_children[0].selector_and_children).to eq(
@@ -464,8 +565,8 @@ describe ArtiMark do
464
565
 
465
566
  it 'should handle definition list ' do
466
567
  text = "this is normal line.\n;: 1st : this is the first definition\n;: 2nd : blah :blah.\n;: 3rd: this term is the last.\nthe list ends."
467
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
468
- converted = artimark.convert(text)
568
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
569
+ converted = artimark.html
469
570
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
470
571
  expect(body.element_children.size).to eq 3
471
572
  expect(body.element_children[0].selector_and_children).to eq(
@@ -486,8 +587,8 @@ describe ArtiMark do
486
587
 
487
588
  it 'should escape html' do
488
589
  text = ";:definition<div>:</div>&"
489
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
490
- converted = artimark.convert(text)
590
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
591
+ converted = artimark.html
491
592
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
492
593
  expect(body.element_children[0].selector_and_children).to eq(
493
594
  ['dl',
@@ -497,8 +598,8 @@ describe ArtiMark do
497
598
 
498
599
  it 'should specify stylesheets' do
499
600
  text = "stylesheets:css/default.css, css/specific.css, css/iphone.css:(only screen and (min-device-width : 320px) and (max-device-width : 480px))\n\ntext."
500
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
501
- converted = artimark.convert(text)
601
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the document title')
602
+ converted = artimark.html
502
603
  head = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:head')
503
604
  expect(head.element_children[0].a).to eq ['title', 'the document title']
504
605
  expect(head.element_children[1].a).to eq ["link[rel='stylesheet'][type='text/css'][href='css/default.css']", '']
@@ -514,25 +615,43 @@ describe ArtiMark do
514
615
 
515
616
  it 'should specify title' do
516
617
  text = "title:the title of the book in the text.\n\ntext."
517
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
518
- converted = artimark.convert(text)
618
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
619
+ converted = artimark.html
519
620
  head = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:head')
520
621
  expect(head.element_children[0].a).to eq ['title', 'the title of the book in the text.']
622
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
623
+ expect(body.element_children[0].selector_and_children).to eq(
624
+ ['div.pgroup',
625
+ ['p',
626
+ 'text.']])
627
+
521
628
  end
522
629
 
523
- it 'should specify lang' do
524
- text = "lang:ja\n\n日本語 text."
525
- artimark = ArtiMark::Document.new(:lang => 'en', :title => 'the document title')
526
- converted = artimark.convert(text)
527
- root = Nokogiri::XML::Document.parse(converted[0]).root
528
- expect(root['lang']).to eq 'ja'
630
+ it 'should specify title on each page' do
631
+ text = "title:page1\n\n1st page.\nnewpage:\ntitle:page2\nh1:2nd page"
632
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title', :paragraph_style => :use_paragraph_group)
633
+ converted = artimark.html
634
+ # 1st page
635
+ head = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:head')
636
+ expect(head.element_children[0].a).to eq ['title', 'page1']
637
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
638
+ expect(body.element_children[0].selector_and_children).to eq(
639
+ ['div.pgroup',
640
+ ['p',
641
+ '1st page.']])
642
+ # 2nd page
643
+ head = Nokogiri::XML::Document.parse(converted[1]).root.at_xpath('xmlns:head')
644
+ expect(head.element_children[0].a).to eq ['title', 'page2']
645
+ body = Nokogiri::XML::Document.parse(converted[1]).root.at_xpath('xmlns:body')
646
+ expect(body.element_children[0].selector_and_children).to eq(
647
+ ['h1',"2nd page"])
529
648
  end
530
649
 
531
650
 
532
651
  it 'should ignore comments' do
533
- text = "#この行はコメントです\nここから、パラグラフがはじまります。\n#これもコメント\n「二行目です。」\n三行目です。\n\n#これもコメント\n\n ここから、次のパラグラフです。"
534
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
535
- converted = artimark.convert(text)
652
+ text = "# この行はコメントです\nここから、パラグラフがはじまります。\n # これもコメント\n「二行目です。」\n三行目です。\n\n# これもコメント\n\n ここから、次のパラグラフです。"
653
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
654
+ converted = artimark.html
536
655
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
537
656
  expect(body.element_children.size).to eq 2
538
657
 
@@ -552,12 +671,14 @@ describe ArtiMark do
552
671
 
553
672
  it 'should handle preprocessor' do
554
673
  text = "pre-preprocess text"
555
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
556
- artimark.preprocessor do
557
- |text|
558
- text.gsub('pre-preprocess', 'post-process')
674
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title') do
675
+ |arti|
676
+ arti.preprocessor do
677
+ |text|
678
+ text.gsub('pre-preprocess', 'post-process')
679
+ end
559
680
  end
560
- converted = artimark.convert(text)
681
+ converted = artimark.html
561
682
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
562
683
  expect(body.element_children[0].selector_and_children).to eq(
563
684
  ['div.pgroup',
@@ -568,8 +689,8 @@ describe ArtiMark do
568
689
 
569
690
  it 'should convert h1 in article after title' do
570
691
  text = "stylesheets: css/default.css\ntitle: foo\narticle.atogaki {\n\nh1: あとがき。\n\natogaki\n}"
571
- artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
572
- converted = artimark.convert(text)
692
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
693
+ converted = artimark.html
573
694
  body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
574
695
  expect(body.element_children[0].selector_and_children).to eq(
575
696
  ["article.atogaki",
@@ -579,6 +700,141 @@ describe ArtiMark do
579
700
  )
580
701
  end
581
702
 
703
+ it 'should convert preformatted text' do
704
+ text = <<EOF
705
+ normal line.
706
+ pre <<END
707
+ d {
708
+ this will not converted to div or p or pgroup.
709
+ line_command: this will be not converted too.
710
+ }
711
+ END
712
+ EOF
713
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
714
+ converted = artimark.html
715
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
716
+ expect(body.element_children[0].selector_and_children).to eq(["div.pgroup", ["p", "normal line."]])
717
+ expect(body.element_children[1].selector_and_children).to eq(["pre", "d {\n this will not converted to div or p or pgroup.\nline_command: this will be not converted too.\n}"])
718
+ end
719
+ it 'should convert preformatted code' do
720
+ text = <<EOF
721
+ normal line.
722
+ precode <<END
723
+ d {
724
+ this will not converted to div or p or pgroup.
725
+ line_command: this will be not converted too.
726
+ }
727
+ END
728
+ normal line again.
729
+ EOF
730
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
731
+ converted = artimark.html
732
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
733
+ expect(body.element_children[0].selector_and_children).to eq(["div.pgroup", ["p", "normal line."]])
734
+ expect(body.element_children[1].selector_and_children).to eq(["pre", ["code", "d {\n this will not converted to div or p or pgroup.\nline_command: this will be not converted too.\n}"]])
735
+ expect(body.element_children[2].selector_and_children).to eq(["div.pgroup", ["p", "normal line again."]])
736
+ end
737
+
738
+ it 'should raise error' do
739
+ text = "d {\n block is\nd {\n nested but\nd {\n not terminated }"
740
+ expect { ArtiMark::Document.parse(text, :lang => 'ja', :title => 'foo') }.to raise_error KPeg::CompiledParser::ParseError
741
+ end
742
+
743
+ describe 'markdown style' do
744
+ it 'should convert markdown style heading' do
745
+ text = "=: タイトルです。\r\nこれは、セクションの中です。"
746
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
747
+ converted = artimark.html
748
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
749
+ expect(body.element_children.size).to eq 1
750
+ expect(body.element_children[0].selector_and_children).to eq(
751
+ ['section',
752
+ ['h1', 'タイトルです。'],
753
+ ['div.pgroup',
754
+ ['p', 'これは、セクションの中です。']]]
755
+ )
756
+ end
757
+ it 'should markdown style heading interrupted by other headed section' do
758
+ text = "=: タイトルです。\r\nこれは、セクションの中です。\n =: また次のセクションです。\n次のセクションの中です。"
759
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
760
+ converted = artimark.html
761
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
762
+ expect(body.element_children.size).to eq 2
763
+ expect(body.element_children[0].selector_and_children).to eq(
764
+ ['section',
765
+ ['h1', 'タイトルです。'],
766
+ ['div.pgroup',
767
+ ['p', 'これは、セクションの中です。']]])
768
+ expect(body.element_children[1].selector_and_children).to eq(
769
+ ['section',
770
+ ['h1', 'また次のセクションです。'],
771
+ ['div.pgroup',
772
+ ['p', '次のセクションの中です。']]]
773
+ )
774
+ end
775
+ it 'should markdown style heading not interrupted by other explicit section' do
776
+ text = "=: タイトルです。\r\nこれは、セクションの中です。\n section {\n h2: また次のセクションです。\n入れ子になります。\n}\nこのように。"
777
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
778
+ converted = artimark.html
779
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
780
+ expect(body.element_children.size).to eq 1
781
+ expect(body.element_children[0].selector_and_children).to eq(
782
+ ['section',
783
+ ['h1', 'タイトルです。'],
784
+ ['div.pgroup',
785
+ ['p', 'これは、セクションの中です。']],
786
+ ['section',
787
+ ['h2', 'また次のセクションです。'],
788
+ ['div.pgroup',
789
+ ['p', '入れ子になります。']]],
790
+ ['div.pgroup',
791
+ ['p', 'このように。']]]
792
+ )
793
+ end
794
+ it 'should markdown style heading not interrupted by smaller section' do
795
+ text = "=: タイトルです。\r\nこれは、セクションの中です。\n ==: また次のセクションです。\n 入れ子になります。\n===: さらに中のセクション \nさらに入れ子になっているはず。\n=:ここで次のセクションです。\n脱出しているはずです。"
796
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
797
+ converted = artimark.html
798
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
799
+ expect(body.element_children.size).to eq 2
800
+ expect(body.element_children[0].selector_and_children).to eq(
801
+ ['section',
802
+ ['h1', 'タイトルです。'],
803
+ ['div.pgroup',
804
+ ['p', 'これは、セクションの中です。']],
805
+ ['section',
806
+ ['h2', 'また次のセクションです。'],
807
+ ['div.pgroup',
808
+ ['p', '入れ子になります。']],
809
+ ['section',
810
+ ['h3', 'さらに中のセクション'],
811
+ ['div.pgroup',
812
+ ['p', 'さらに入れ子になっているはず。']]]]] )
813
+ expect(body.element_children[1].selector_and_children).to eq(
814
+ ['section',
815
+ ['h1', 'ここで次のセクションです。'],
816
+ ['div.pgroup',
817
+ ['p', '脱出しているはずです。']]])
582
818
 
819
+ end
820
+ end
821
+ describe 'create file' do
822
+ before { @basedir = File.join(File.dirname(__FILE__), 'created_files') }
823
+ after { Dir.glob(File.join(@basedir, '*.xhtml')) { |file| File.delete file } }
824
+ it 'should create default file' do
825
+ text = "some text"
826
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the title')
827
+ artimark.html.write_as_files(directory: @basedir)
828
+ expect(File.basename(Dir.glob(File.join(@basedir, '*.xhtml'))[0])).to match /noramark_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}_00001.xhtml/
829
+ end
830
+ it 'should create named file' do
831
+ text = "some text\nnewpage:\nnext page"
832
+ artimark = ArtiMark::Document.parse(text, :lang => 'ja', :title => 'the document title', filename_base: 'nora-test-file', sequence_format: '%03d' )
833
+ artimark.html.write_as_files(directory: @basedir)
834
+ files = Dir.glob(File.join(@basedir, '*.xhtml'))
835
+ expect(File.basename(files[0])).to eq 'nora-test-file_001.xhtml'
836
+ expect(File.basename(files[1])).to eq 'nora-test-file_002.xhtml'
837
+ end
838
+ end
583
839
  end
584
840
  end