breakout_parser 0.0.12-x86-mswin32 → 0.0.13-x86-mswin32
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/ChangeLog +7 -0
- data/lib/breakout_parser/win32-ruby1.8/breakout_parser.so +0 -0
- data/spec/parser_spec.rb +86 -21
- metadata +2 -2
data/ChangeLog
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
[ 0.0.13 ]
|
2
|
+
|
3
|
+
* add "h-" to header ids
|
4
|
+
(https://www.assembla.com/spaces/breakout/tickets/5793)
|
5
|
+
* handle [un]numbered lists of level 2 and 3 (**,***,##,###)
|
6
|
+
(https://www.assembla.com/spaces/breakout/tickets/5687)
|
7
|
+
|
1
8
|
[ 0.0.12 ]
|
2
9
|
|
3
10
|
* new internal calling convention
|
Binary file
|
data/spec/parser_spec.rb
CHANGED
@@ -11,6 +11,19 @@ describe 'BreakoutParser' do
|
|
11
11
|
end
|
12
12
|
def hex_string s; self.class.hex_string(s); end
|
13
13
|
|
14
|
+
def unformat s
|
15
|
+
s.strip.split("\n").map(&:strip).join
|
16
|
+
end
|
17
|
+
|
18
|
+
def get_data fname
|
19
|
+
r = File.read(File.dirname(__FILE__) + '/data/' + fname)
|
20
|
+
if self.class.description[' numbered list multilevel']
|
21
|
+
r.gsub!('*','#')
|
22
|
+
r.gsub!('ul>','ol>')
|
23
|
+
end
|
24
|
+
r
|
25
|
+
end
|
26
|
+
|
14
27
|
it 'accepts from 2 to 4 arguments' do
|
15
28
|
[0,1,5,6,7,8,9,10].each do |argc|
|
16
29
|
lambda{
|
@@ -319,6 +332,31 @@ describe 'BreakoutParser' do
|
|
319
332
|
parse("hello\n\n * a\n * b\n * c\nworld").should ==
|
320
333
|
"hello<br /><br /><ul><li>a</li><li>b</li><li>c</li></ul>world"
|
321
334
|
end
|
335
|
+
|
336
|
+
describe "multilevel" do
|
337
|
+
it "at start" do
|
338
|
+
# NOTE: not sure that list1.html is correct enough, but it should render fine
|
339
|
+
parse(get_data('list1')).should == unformat(get_data('list1.html'))
|
340
|
+
end
|
341
|
+
|
342
|
+
it "in middle" do
|
343
|
+
parse(get_data('list2')).should == unformat(get_data('list2.html'))
|
344
|
+
end
|
345
|
+
|
346
|
+
it "three levels" do
|
347
|
+
parse(get_data('list3')).should == unformat(get_data('list3.html'))
|
348
|
+
end
|
349
|
+
|
350
|
+
it "mess - should have matching count of opening and closing tags" do
|
351
|
+
r = parse(get_data('list4'))
|
352
|
+
r.scan('<ul>').count.should > 0
|
353
|
+
r.scan('<ul>').count.should <= r.scan('</ul>').count
|
354
|
+
end
|
355
|
+
|
356
|
+
it "at end" do
|
357
|
+
parse(get_data('list5')).should == unformat(get_data('list5.html'))
|
358
|
+
end
|
359
|
+
end
|
322
360
|
end
|
323
361
|
|
324
362
|
###############################################################################
|
@@ -347,58 +385,84 @@ describe 'BreakoutParser' do
|
|
347
385
|
parse("hello\n\n # a\n # b\n # c\nworld").should ==
|
348
386
|
"hello<br /><br /><ol><li>a</li><li>b</li><li>c</li></ol>world"
|
349
387
|
end
|
388
|
+
|
389
|
+
describe "multilevel" do
|
390
|
+
it "at start" do
|
391
|
+
# NOTE: not sure that list1.html is correct enough, but it should render fine
|
392
|
+
parse(get_data('list1')).should == unformat(get_data('list1.html'))
|
393
|
+
end
|
394
|
+
|
395
|
+
it "in middle" do
|
396
|
+
parse(get_data('list2')).should == unformat(get_data('list2.html'))
|
397
|
+
end
|
398
|
+
|
399
|
+
it "three levels" do
|
400
|
+
parse(get_data('list3')).should == unformat(get_data('list3.html'))
|
401
|
+
end
|
402
|
+
|
403
|
+
it "mess - should have matching count of opening and closing tags" do
|
404
|
+
r = parse(unformat(get_data('list4')))
|
405
|
+
r.scan('<ol>').count.should > 0
|
406
|
+
r.scan('<ol>').count.should <= r.scan('</ol>').count
|
407
|
+
end
|
408
|
+
|
409
|
+
it "at end" do
|
410
|
+
parse(get_data('list5')).should == unformat(get_data('list5.html'))
|
411
|
+
end
|
412
|
+
end
|
350
413
|
end
|
351
414
|
|
352
415
|
###############################################################################
|
416
|
+
# headers
|
353
417
|
|
354
418
|
1.upto(5) do |lvl|
|
355
419
|
describe "H#{lvl}" do
|
356
420
|
it "at the beginning" do
|
357
|
-
parse("h#{lvl}. xxx").should == "<h#{lvl} id=\"xxx\">xxx</h#{lvl}>"
|
421
|
+
parse("h#{lvl}. xxx").should == "<h#{lvl} id=\"h-xxx\">xxx</h#{lvl}>"
|
358
422
|
end
|
359
423
|
it "after 1 line of text" do
|
360
|
-
parse("abcd\nh#{lvl}. xxx").should == "abcd<br /><h#{lvl} id=\"xxx\">xxx</h#{lvl}>"
|
424
|
+
parse("abcd\nh#{lvl}. xxx").should == "abcd<br /><h#{lvl} id=\"h-xxx\">xxx</h#{lvl}>"
|
361
425
|
end
|
362
426
|
it "after 2 lines of text" do
|
363
|
-
parse("abcd\ndefgh\nh#{lvl}. xxx").should == "abcd<br />defgh<br /><h#{lvl} id=\"xxx\">xxx</h#{lvl}>"
|
427
|
+
parse("abcd\ndefgh\nh#{lvl}. xxx").should == "abcd<br />defgh<br /><h#{lvl} id=\"h-xxx\">xxx</h#{lvl}>"
|
364
428
|
end
|
365
429
|
it "in middle of other words" do
|
366
430
|
parse("abcd defgh h#{lvl}. xxx yyy").should == "abcd defgh h#{lvl}. xxx yyy"
|
367
431
|
end
|
368
432
|
it "in middle of other lines" do
|
369
|
-
parse("abcd defgh\nh#{lvl}. xxx\nyyy").should == "abcd defgh<br /><h#{lvl} id=\"xxx\">xxx</h#{lvl}><br />yyy"
|
433
|
+
parse("abcd defgh\nh#{lvl}. xxx\nyyy").should == "abcd defgh<br /><h#{lvl} id=\"h-xxx\">xxx</h#{lvl}><br />yyy"
|
370
434
|
end
|
371
435
|
|
372
436
|
it "converts spaces to underscores in id" do
|
373
|
-
parse("h#{lvl}. xxx yyy z").should == "<h#{lvl} id=\"xxx___yyy_z\">xxx yyy z</h#{lvl}>"
|
437
|
+
parse("h#{lvl}. xxx yyy z").should == "<h#{lvl} id=\"h-xxx___yyy_z\">xxx yyy z</h#{lvl}>"
|
374
438
|
end
|
375
439
|
it "keeps underscores in id" do
|
376
|
-
parse("h#{lvl}. xxx___yyy_z").should == "<h#{lvl} id=\"xxx___yyy_z\">xxx___yyy_z</h#{lvl}>"
|
440
|
+
parse("h#{lvl}. xxx___yyy_z").should == "<h#{lvl} id=\"h-xxx___yyy_z\">xxx___yyy_z</h#{lvl}>"
|
377
441
|
end
|
378
442
|
it "keeps dashes in id" do
|
379
|
-
parse("h#{lvl}. xxx---yyy-z").should == "<h#{lvl} id=\"xxx---yyy-z\">xxx---yyy-z</h#{lvl}>"
|
443
|
+
parse("h#{lvl}. xxx---yyy-z").should == "<h#{lvl} id=\"h-xxx---yyy-z\">xxx---yyy-z</h#{lvl}>"
|
380
444
|
end
|
381
445
|
it "keeps dots in id" do
|
382
|
-
parse("h#{lvl}. xxx...yyy.z").should == "<h#{lvl} id=\"xxx...yyy.z\">xxx...yyy.z</h#{lvl}>"
|
446
|
+
parse("h#{lvl}. xxx...yyy.z").should == "<h#{lvl} id=\"h-xxx...yyy.z\">xxx...yyy.z</h#{lvl}>"
|
383
447
|
end
|
384
448
|
|
385
449
|
%w'Ъ ъ : ; , привет" \' ! < >'.each do |c|
|
386
450
|
it "converts id to hex if it contains \"#{c}\"" do
|
387
451
|
idhex = hex_string("xxx#{c}yyy")
|
388
|
-
parse("h#{lvl}. xxx#{c}yyy").should == "<h#{lvl} id=\"
|
452
|
+
parse("h#{lvl}. xxx#{c}yyy").should == "<h#{lvl} id=\"h-#{idhex}\">xxx#{h(c)}yyy</h#{lvl}>"
|
389
453
|
end
|
390
454
|
end
|
391
455
|
|
392
456
|
it "skips excess spaces" do
|
393
|
-
parse("h#{lvl}. \t xxx \t ").should == "<h#{lvl} id=\"xxx\">xxx</h#{lvl}>"
|
457
|
+
parse("h#{lvl}. \t xxx \t ").should == "<h#{lvl} id=\"h-xxx\">xxx</h#{lvl}>"
|
394
458
|
end
|
395
459
|
|
396
460
|
it "thinks that \\r is EOL" do
|
397
|
-
parse("h#{lvl}. xxx\ryyy").should == "<h#{lvl} id=\"xxx\">xxx</h#{lvl}><br />yyy"
|
398
|
-
parse("h#{lvl}. xxx\r").should == "<h#{lvl} id=\"xxx\">xxx</h#{lvl}>"
|
461
|
+
parse("h#{lvl}. xxx\ryyy").should == "<h#{lvl} id=\"h-xxx\">xxx</h#{lvl}><br />yyy"
|
462
|
+
parse("h#{lvl}. xxx\r").should == "<h#{lvl} id=\"h-xxx\">xxx</h#{lvl}>"
|
399
463
|
|
400
464
|
parse("h#{lvl}. xxx\r yyy").sub(' yyy','yyy').should ==
|
401
|
-
"<h#{lvl} id=\"xxx\">xxx</h#{lvl}><br />yyy"
|
465
|
+
"<h#{lvl} id=\"h-xxx\">xxx</h#{lvl}><br />yyy"
|
402
466
|
end
|
403
467
|
end
|
404
468
|
end
|
@@ -740,14 +804,15 @@ describe 'BreakoutParser' do
|
|
740
804
|
a = {}
|
741
805
|
a["wiki:Name"] = '<a class="wiki_link" title="Name" href="/wiki/show/test_space/Name">Name</a>'
|
742
806
|
a["Name"] = '<a class="wiki_link" title="Name" href="/wiki/show/test_space/Name">Name</a>'
|
743
|
-
a["Name#Ref"] = '<a class="wiki_link" title="Name#Ref" href="/wiki/show/test_space/Name#Ref">Name#Ref</a>'
|
744
|
-
a["#Ref"]
|
745
|
-
a["
|
746
|
-
a["
|
747
|
-
a["#
|
748
|
-
a["#
|
749
|
-
a["#with
|
750
|
-
a["#with
|
807
|
+
a["Name#Ref"] = '<a class="wiki_link" title="Name#Ref" href="/wiki/show/test_space/Name#h-Ref">Name#Ref</a>'
|
808
|
+
a["Name#h-Ref"] = '<a class="wiki_link" title="Name#h-Ref" href="/wiki/show/test_space/Name#h-h-Ref">Name#h-Ref</a>'
|
809
|
+
a["#Ref"] = '<a href="#h-Ref" title="#Ref" class="wiki_link">#Ref</a>'
|
810
|
+
a["#привет"] = %Q|<a href="#h-#{hex_string("привет")}" title="#привет" class="wiki_link">#привет</a>|
|
811
|
+
a["#with spc"] = %Q|<a href="#h-with__spc" title="#with spc" class="wiki_link">#with spc</a>|
|
812
|
+
a["#with__usc"] = %Q|<a href="#h-with__usc" title="#with__usc" class="wiki_link">#with__usc</a>|
|
813
|
+
a["#with--dsh"] = %Q|<a href="#h-with--dsh" title="#with--dsh" class="wiki_link">#with--dsh</a>|
|
814
|
+
a["#with!xclm"] = %Q|<a href="#h-#{hex_string("with!xclm")}" title="#with!xclm" class="wiki_link">#with!xclm</a>|
|
815
|
+
a["#with&"] = %Q|<a href="#h-#{hex_string("with&")}" title="#with&" class="wiki_link">#with&amp</a>|
|
751
816
|
|
752
817
|
a["ticket:234"] = '<a href="/spaces/test_space/tickets/234">#234</a>'
|
753
818
|
a["revision:1f4bdab77be696efd"] =
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: breakout_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.13
|
5
5
|
platform: x86-mswin32
|
6
6
|
authors:
|
7
7
|
- Andrey "Zed" Zaikin
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-04-
|
12
|
+
date: 2010-04-27 00:00:00 +06:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|