wikitext 1.3.1 → 1.3.2
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/ext/parser.c +1 -1
- data/lib/wikitext/parser.rb +25 -0
- data/lib/wikitext/string.rb +4 -4
- data/lib/wikitext/version.rb +1 -1
- data/spec/integration_spec.rb +1 -1
- data/spec/internal_link_spec.rb +1 -2
- data/spec/nil_class_spec.rb +27 -0
- data/spec/parser_spec.rb +40 -0
- data/spec/regressions_spec.rb +2 -2
- data/spec/string_spec.rb +27 -0
- data/spec/version_spec.rb +23 -0
- data/spec/wikitext_spec.rb +3 -3
- metadata +7 -2
data/ext/parser.c
CHANGED
@@ -905,7 +905,7 @@ VALUE Wikitext_parser_initialize(int argc, VALUE *argv, VALUE self)
|
|
905
905
|
VALUE mailto_class = rb_str_new2("mailto");
|
906
906
|
VALUE internal_link_prefix = rb_str_new2("/wiki/");
|
907
907
|
VALUE img_prefix = rb_str_new2("/images/");
|
908
|
-
VALUE space_to_underscore =
|
908
|
+
VALUE space_to_underscore = Qtrue;
|
909
909
|
VALUE treat_slash_as_special = Qtrue;
|
910
910
|
VALUE minimum_fulltext_token_length = INT2NUM(3);
|
911
911
|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Copyright 2009 Wincent Colaiuta
|
3
|
+
# This program is free software: you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation, either version 3 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License
|
14
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
15
|
+
|
16
|
+
require 'wikitext'
|
17
|
+
|
18
|
+
module Wikitext
|
19
|
+
class Parser
|
20
|
+
def self.shared_parser
|
21
|
+
@@shared_parser_instance ||= new
|
22
|
+
end
|
23
|
+
end # class Parser
|
24
|
+
end # module Wikitext
|
25
|
+
|
data/lib/wikitext/string.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright 2008 Wincent Colaiuta
|
1
|
+
# Copyright 2008-2009 Wincent Colaiuta
|
2
2
|
# This program is free software: you can redistribute it and/or modify
|
3
3
|
# it under the terms of the GNU General Public License as published by
|
4
4
|
# the Free Software Foundation, either version 3 of the License, or
|
@@ -12,12 +12,11 @@
|
|
12
12
|
# You should have received a copy of the GNU General Public License
|
13
13
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
14
14
|
|
15
|
-
require 'wikitext'
|
15
|
+
require 'wikitext/parser'
|
16
16
|
|
17
17
|
class String
|
18
18
|
def to_wikitext
|
19
|
-
|
20
|
-
@@shared_wikitext_parser.parse wikitext_preprocess
|
19
|
+
Wikitext::Parser.shared_parser.parse wikitext_preprocess
|
21
20
|
end
|
22
21
|
alias :w :to_wikitext
|
23
22
|
|
@@ -25,6 +24,7 @@ private
|
|
25
24
|
|
26
25
|
# for now do this in pure Ruby
|
27
26
|
# if speed later becomes a concern can whip up a Ragel C extension to do it
|
27
|
+
# TODO: make this customizable (accept a lambda that performs preprocessing)
|
28
28
|
def wikitext_preprocess
|
29
29
|
gsub /\b(bug|issue|request|ticket) #(\d+)/i, '[[issues/\2|\1 #\2]]'
|
30
30
|
end
|
data/lib/wikitext/version.rb
CHANGED
data/spec/integration_spec.rb
CHANGED
@@ -271,7 +271,7 @@ describe Wikitext::Parser, 'with large slab of input text' do
|
|
271
271
|
# So add one long-running spec to hopefully catch any GC and memory-related bugs.
|
272
272
|
it 'should work correctly during long runs (when Garbage Collection runs)' do
|
273
273
|
input = "a <strong>simple</strong> ''test'' of the [[wikitext parser]]"
|
274
|
-
expected = %Q{<p>a <strong>simple</strong> <em>test</em> of the <a href="/wiki/
|
274
|
+
expected = %Q{<p>a <strong>simple</strong> <em>test</em> of the <a href="/wiki/wikitext_parser">wikitext parser</a></p>\n}
|
275
275
|
100_000.times { @parser.parse(input).should == expected }
|
276
276
|
end
|
277
277
|
end
|
data/spec/internal_link_spec.rb
CHANGED
@@ -18,7 +18,7 @@ require 'wikitext'
|
|
18
18
|
|
19
19
|
describe Wikitext::Parser, 'internal links (space to underscore off)' do
|
20
20
|
before do
|
21
|
-
@parser = Wikitext::Parser.new
|
21
|
+
@parser = Wikitext::Parser.new :space_to_underscore => false
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'should pass through unexpected link end tokens literally' do
|
@@ -447,7 +447,6 @@ end
|
|
447
447
|
describe Wikitext::Parser, 'internal links (space to underscore on)' do
|
448
448
|
before do
|
449
449
|
@parser = Wikitext::Parser.new
|
450
|
-
@parser.space_to_underscore = true
|
451
450
|
end
|
452
451
|
|
453
452
|
it 'should pass through unexpected link end tokens literally' do
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Copyright 2009 Wincent Colaiuta
|
3
|
+
# This program is free software: you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation, either version 3 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License
|
14
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
15
|
+
|
16
|
+
require File.join(File.dirname(__FILE__), 'spec_helper.rb')
|
17
|
+
require 'wikitext/nil_class'
|
18
|
+
|
19
|
+
describe NilClass, 'wikitext extensions' do
|
20
|
+
it 'should provide a to_wikitext method on the nil singleton' do
|
21
|
+
nil.to_wikitext.should == ''
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should provide a w method on the nil singleton' do
|
25
|
+
nil.w.should == ''
|
26
|
+
end
|
27
|
+
end
|
data/spec/parser_spec.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Copyright 2009 Wincent Colaiuta
|
3
|
+
# This program is free software: you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation, either version 3 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License
|
14
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
15
|
+
|
16
|
+
require File.join(File.dirname(__FILE__), 'spec_helper.rb')
|
17
|
+
require 'wikitext/parser'
|
18
|
+
|
19
|
+
describe Wikitext::Parser do
|
20
|
+
it 'should provide access to the shared parser instance for customization' do
|
21
|
+
Wikitext::Parser.shared_parser.should be_instance_of(Wikitext::Parser)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should persist customizations made to shared parser instance' do
|
25
|
+
# fisrt pass
|
26
|
+
parser = Wikitext::Parser.shared_parser
|
27
|
+
original_prefix = '/images/'
|
28
|
+
parser.img_prefix = original_prefix
|
29
|
+
parser.img_prefix.should == original_prefix
|
30
|
+
parser.parse('{{foo.png}}').should == %Q{<p><img src="/images/foo.png" alt="foo.png" /></p>\n}
|
31
|
+
|
32
|
+
# second pass
|
33
|
+
parser = Wikitext::Parser.shared_parser
|
34
|
+
parser.img_prefix.should == original_prefix
|
35
|
+
new_prefix = '/totally-different-prefix/'
|
36
|
+
parser.img_prefix = new_prefix
|
37
|
+
parser.img_prefix.should == new_prefix
|
38
|
+
parser.parse('{{bar.png}}').should == %Q{<p><img src="/totally-different-prefix/bar.png" alt="bar.png" /></p>\n}
|
39
|
+
end
|
40
|
+
end
|
data/spec/regressions_spec.rb
CHANGED
@@ -38,7 +38,7 @@ describe Wikitext::Parser, 'regressions' do
|
|
38
38
|
<li>punto 1</li>
|
39
39
|
<li>punto 2</li>
|
40
40
|
</ul>
|
41
|
-
<p>Y <a href="/wiki/
|
41
|
+
<p>Y <a href="/wiki/otro_articulo">otro articulo</a>.</p>
|
42
42
|
END
|
43
43
|
@parser.parse(input).should == expected
|
44
44
|
end
|
@@ -94,7 +94,7 @@ describe Wikitext::Parser, 'regressions' do
|
|
94
94
|
END
|
95
95
|
expected = dedent <<-END
|
96
96
|
<ol>
|
97
|
-
<li>Turn off the <a href="/wiki/
|
97
|
+
<li>Turn off the <a href="/wiki/Movable_Type">Movable Type</a> search function; use Google instead (it's better anyway) with a form something like this:</li>
|
98
98
|
</ol>
|
99
99
|
<pre><form method="get"...></pre>
|
100
100
|
END
|
data/spec/string_spec.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Copyright 2009 Wincent Colaiuta
|
3
|
+
# This program is free software: you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation, either version 3 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License
|
14
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
15
|
+
|
16
|
+
require File.join(File.dirname(__FILE__), 'spec_helper.rb')
|
17
|
+
require 'wikitext/string'
|
18
|
+
|
19
|
+
describe String, 'wikitext extensions' do
|
20
|
+
it 'should provide a to_wikitext method on all strings' do
|
21
|
+
"'''strong'''".to_wikitext.should == "<p><strong>strong</strong></p>\n"
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should provide a w method on all strings' do
|
25
|
+
"'''strong'''".w.should == "<p><strong>strong</strong></p>\n"
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Copyright 2009 Wincent Colaiuta
|
3
|
+
# This program is free software: you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation, either version 3 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License
|
14
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
15
|
+
|
16
|
+
require File.join(File.dirname(__FILE__), 'spec_helper.rb')
|
17
|
+
require 'wikitext/version'
|
18
|
+
|
19
|
+
describe Wikitext, 'versioning' do
|
20
|
+
it 'should provide a version string' do
|
21
|
+
Wikitext::VERSION.should be_instance_of(String)
|
22
|
+
end
|
23
|
+
end
|
data/spec/wikitext_spec.rb
CHANGED
@@ -45,8 +45,8 @@ describe Wikitext::Parser do
|
|
45
45
|
@parser.img_prefix.should == '/images/'
|
46
46
|
end
|
47
47
|
|
48
|
-
it 'should turn space-to-underscore
|
49
|
-
@parser.space_to_underscore.should ==
|
48
|
+
it 'should turn space-to-underscore on by default' do
|
49
|
+
@parser.space_to_underscore.should == true
|
50
50
|
end
|
51
51
|
|
52
52
|
it 'should treat slash as special by default' do
|
@@ -81,7 +81,7 @@ describe Wikitext::Parser do
|
|
81
81
|
end
|
82
82
|
|
83
83
|
it 'should allow overriding of space-to-underscore' do
|
84
|
-
Wikitext::Parser.new(:space_to_underscore =>
|
84
|
+
Wikitext::Parser.new(:space_to_underscore => false).space_to_underscore.should == false
|
85
85
|
end
|
86
86
|
|
87
87
|
it 'should allow overriding of treat slash as special' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wikitext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wincent Colaiuta
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-01-
|
12
|
+
date: 2009-01-06 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -43,18 +43,22 @@ files:
|
|
43
43
|
- spec/line_endings_spec.rb
|
44
44
|
- spec/link_encoding_spec.rb
|
45
45
|
- spec/link_sanitizing_spec.rb
|
46
|
+
- spec/nil_class_spec.rb
|
46
47
|
- spec/nowiki_spec.rb
|
47
48
|
- spec/p_spec.rb
|
49
|
+
- spec/parser_spec.rb
|
48
50
|
- spec/pre_spec.rb
|
49
51
|
- spec/rails_spec.rb
|
50
52
|
- spec/regressions_spec.rb
|
51
53
|
- spec/spec_helper.rb
|
54
|
+
- spec/string_spec.rb
|
52
55
|
- spec/strong_em_spec.rb
|
53
56
|
- spec/strong_spec.rb
|
54
57
|
- spec/tokenizing_spec.rb
|
55
58
|
- spec/trash
|
56
59
|
- spec/tt_spec.rb
|
57
60
|
- spec/ul_spec.rb
|
61
|
+
- spec/version_spec.rb
|
58
62
|
- spec/wikitext_spec.rb
|
59
63
|
- ext/extconf.rb
|
60
64
|
- ext/ary.c
|
@@ -72,6 +76,7 @@ files:
|
|
72
76
|
- ext/wikitext_ragel.h
|
73
77
|
- ext/depend
|
74
78
|
- lib/wikitext/nil_class.rb
|
79
|
+
- lib/wikitext/parser.rb
|
75
80
|
- lib/wikitext/rails.rb
|
76
81
|
- lib/wikitext/string.rb
|
77
82
|
- lib/wikitext/version.rb
|