trac-wiki 0.3.36 → 0.3.41
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/trac-wiki/parser.rb +44 -7
- data/lib/trac-wiki/version.rb +1 -1
- data/test/parser_test.rb +23 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d6a9b2012dc7878dd0159e6e4e41390ba93ebd7f63f882c4f852f1242638bcd5
|
4
|
+
data.tar.gz: f742a4c5854c60e4c1a35021a98a0dc8e736666e58c21edf5f0135dec299c8ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5460fd31064a07823a966a4ef565515c03dfc3b3009ea81329f58152169bf8ea50c2c1cd721de610326a262fef0407080ad1c4f7d2c9ebb128c5eba692f7ee65
|
7
|
+
data.tar.gz: 61d2faf5433f03f02e4f3508fc5b58936a42ffbfce1bee592b70dfe649ac8040eacfd053607947c75e3bfa49782420f113086cb958e7ba23d2ae42fac2a8bf41
|
data/lib/trac-wiki/parser.rb
CHANGED
@@ -91,7 +91,7 @@ module TracWiki
|
|
91
91
|
attr_writer :math
|
92
92
|
def math?; @math; end
|
93
93
|
|
94
|
-
# allow some <b> <form> <html>
|
94
|
+
# allow some <b> <form> <html>
|
95
95
|
# html will be sanitized
|
96
96
|
attr_writer :allow_html
|
97
97
|
def allow_html?; @allow_html; end
|
@@ -255,7 +255,7 @@ module TracWiki
|
|
255
255
|
begin
|
256
256
|
sprintf fmt, *args
|
257
257
|
rescue Exception => e
|
258
|
-
"(sprintf error:`#{e}`)"
|
258
|
+
"(sprintf error:`#{e}`)"
|
259
259
|
end
|
260
260
|
},
|
261
261
|
'!digest' => proc { |env| Base64.urlsafe_encode64(Digest::SHA256.digest(env.expand_arg(0))) },
|
@@ -376,6 +376,13 @@ module TracWiki
|
|
376
376
|
end
|
377
377
|
end
|
378
378
|
|
379
|
+
def end_to_tag(tag)
|
380
|
+
if @stack.include?(tag)
|
381
|
+
end_tag while @stack.last != tag
|
382
|
+
end_tag
|
383
|
+
end
|
384
|
+
end
|
385
|
+
|
379
386
|
def end_paragraph
|
380
387
|
end_tag while !@stack.empty?
|
381
388
|
@p = false
|
@@ -515,7 +522,7 @@ module TracWiki
|
|
515
522
|
notlink, link = $1, $2
|
516
523
|
make_link(link, nil, link, 0, !!notlink)
|
517
524
|
# [[Image(pic.jpg|tag)]]
|
518
|
-
when str =~ /\A\[\[Image\(([^,]*?)(,(.*?))?\)\]\]/ # image
|
525
|
+
when str =~ /\A\[\[Image\(([^,]*?)(,(.*?))?\)\]\]/ # image
|
519
526
|
make_image($1, $3)
|
520
527
|
# [[link]]
|
521
528
|
# [ link2 | text5 ]
|
@@ -543,7 +550,7 @@ module TracWiki
|
|
543
550
|
when math? && str =~ /\A\$(.+?)\$/ # inline math (tt)
|
544
551
|
@tree.tag(:span, {:class => 'math'}, $1)
|
545
552
|
@was_math = true
|
546
|
-
when str =~ /\A(\&\w*;)/ # html entity
|
553
|
+
when str =~ /\A(\&\w*;)/ # html entity
|
547
554
|
#print "add html ent: #{$1}\n"
|
548
555
|
@tree.add_raw($1)
|
549
556
|
when str =~ /\A([:alpha:]|[:digit:])+/
|
@@ -571,7 +578,7 @@ module TracWiki
|
|
571
578
|
when str =~ /\A,,/
|
572
579
|
toggle_tag 'sub', $& # _{}
|
573
580
|
when str =~ /\A!\./
|
574
|
-
@tree.add('') # !. \relax
|
581
|
+
@tree.add('') # !. \relax
|
575
582
|
when str =~ /\A!(\{\{|[\S])/
|
576
583
|
@tree.add($1) # !neco !{{
|
577
584
|
# when str =~ /\A!(\{\{)/
|
@@ -761,6 +768,33 @@ module TracWiki
|
|
761
768
|
end_paragraph
|
762
769
|
@tree.tag(:div, { class: "merge #{merge_class}" }, who)
|
763
770
|
end
|
771
|
+
|
772
|
+
def do_wikimedia_table(text)
|
773
|
+
end_paragraph
|
774
|
+
if div_around_table?
|
775
|
+
start_tag('div', class: 'table-div', 'data-line' => @line_no, 'data-lines' => text.count("\n"))
|
776
|
+
end
|
777
|
+
start_tag(:table)
|
778
|
+
start_tag(:tr)
|
779
|
+
offset = 0
|
780
|
+
text.split("\n").each do |line|
|
781
|
+
offset += line.length + 1
|
782
|
+
if line == '|-'
|
783
|
+
end_to_tag :tr
|
784
|
+
start_tag(:tr)
|
785
|
+
elsif line =~ /^([!\|])(.*)/
|
786
|
+
end_to_tag :td
|
787
|
+
end_to_tag :th
|
788
|
+
fst, rest = $1, $2
|
789
|
+
start_tag($1 == '|' ? :td : :th)
|
790
|
+
parse_inline(rest.strip, offset)
|
791
|
+
else
|
792
|
+
parse_inline(' ' +line.strip, offset)
|
793
|
+
end
|
794
|
+
end
|
795
|
+
end_to_tag :table
|
796
|
+
end
|
797
|
+
|
764
798
|
def do_pre(text)
|
765
799
|
end_paragraph
|
766
800
|
nowikiblock = make_nowikiblock(text)
|
@@ -876,6 +910,9 @@ module TracWiki
|
|
876
910
|
# pre {{{ ... }}}
|
877
911
|
when str =~ /\A\{\{\{\r?\n(.*?)\r?\n\}\}\}/m
|
878
912
|
do_pre($1)
|
913
|
+
# wikimedia table {| ... |}
|
914
|
+
when str =~ /\A\{\|\r?\n(.*?)\r?\n\|\}/m
|
915
|
+
do_wikimedia_table($1)
|
879
916
|
# horizontal rule
|
880
917
|
when str =~ /\A\s*-{4,}\s*$/
|
881
918
|
do_hr()
|
@@ -892,11 +929,11 @@ module TracWiki
|
|
892
929
|
#when str =~ /\A([:\w\s]+)::(\s+|\r?\n)/
|
893
930
|
when str =~ /\A(.+)::(\s+|\r?\n)/
|
894
931
|
do_term($1)
|
895
|
-
# li
|
932
|
+
# li *
|
896
933
|
when str =~ /\A((\s*)([*-]|[aAIi\d]\.)\s+)(.*?)$(\r?\n)?/
|
897
934
|
parse_li_line($2.size, $3)
|
898
935
|
parse_inline($4, $1.size)
|
899
|
-
# citation
|
936
|
+
# citation >
|
900
937
|
when str =~ /\A(>[>\s]*)(.*?)$(\r?\n)?/
|
901
938
|
do_citation($1.count('>'))
|
902
939
|
parse_inline($2, $1.size)
|
data/lib/trac-wiki/version.rb
CHANGED
data/test/parser_test.rb
CHANGED
@@ -13,6 +13,16 @@ class Bacon::Context
|
|
13
13
|
parser.at_callback = Proc.new { |k,env| k == 'MEOW' ? 'WUF' : nil }
|
14
14
|
html.should.equal parser.to_html(wiki)
|
15
15
|
end
|
16
|
+
def tc_mailto(html, wiki, options = {})
|
17
|
+
options[:macro_commands] = { '!print' => proc { |env| env.arg(0) + '! ' },
|
18
|
+
}
|
19
|
+
options[:allowed_schemes] = %w(http https ftp ftps mailto)
|
20
|
+
options[:template_handler] = self.method(:template_handler)
|
21
|
+
|
22
|
+
parser = TracWiki.parser(options)
|
23
|
+
parser.at_callback = Proc.new { |k,env| k == 'MEOW' ? 'WUF' : nil }
|
24
|
+
html.should.equal parser.to_html(wiki)
|
25
|
+
end
|
16
26
|
def env(wiki, var, val,options = {})
|
17
27
|
options[:macro_commands] = { '!print' => proc { |env| env.arg(0) + '! ' }, }
|
18
28
|
options[:template_handler] = self.method(:template_handler)
|
@@ -183,7 +193,7 @@ describe 'TracWiki::Parser' do
|
|
183
193
|
|
184
194
|
# table with div_around_table
|
185
195
|
tc("<div class=\"table-div\"><table><tr><td>This is <em>italic</em></td>\n</tr>\n</table>\n</div>\n",
|
186
|
-
"||This is ''italic''||", div_around_table: true
|
196
|
+
"||This is ''italic''||", div_around_table: true)
|
187
197
|
|
188
198
|
# Links can appear inside italic text:
|
189
199
|
tc("<p>A italic link: <em><a href=\"http://example.org/\">http://example.org/</a> nice! </em></p>\n",
|
@@ -665,6 +675,11 @@ describe 'TracWiki::Parser' do
|
|
665
675
|
tc "<p>-- --</p>\n", "--\t-- "
|
666
676
|
end
|
667
677
|
|
678
|
+
it 'should parse wm-table' do
|
679
|
+
tc "<table><tr><td>Hello</td>\n<th>World!</th>\n</tr>\n<tr><td>Hello</td>\n<td>World!</td>\n</tr>\n</table>\n", "{|\n|Hello\n!World!\n|-\n|Hello\n|World!\n|}\n\n"
|
680
|
+
tc "<table><tr><td><strong>Hello</strong></td>\n<td>World!</td>\n</tr>\n<tr><td>Hello</td>\n<td>World!</td>\n</tr>\n</table>\n", "{|\n|**Hello**\n|World!\n|-\n|Hello\n|World!\n|}\n\n"
|
681
|
+
tc "<table><tr><td><strong>Hello</strong></td>\n<td>Wor ld</td>\n</tr>\n</table>\n", "{|\n|**Hello**\n|Wor\nld\n|}\n\n"
|
682
|
+
end
|
668
683
|
it 'should parse table' do
|
669
684
|
tc "<table><tr><td>Hello</td>\n<td>World!</td>\n</tr>\n</table>\n", "||Hello||World!||"
|
670
685
|
tc "<table><tr><td>Hello</td>\n<td>World!</td>\n</tr>\n<tr><td>Hello</td>\n<td>World!</td>\n</tr>\n</table>\n", "||Hello||World!||\n||Hello||World!||\n\n"
|
@@ -1332,5 +1347,12 @@ eos
|
|
1332
1347
|
tc "<p>(bhojte|ahoj=dhoj:m8afmveEhG78gsv5Pt-gJ56idfKCR10JNPr-G72Fttc=)</p>\n", "{{digesttest bhojte|ahoj=dhoj}}"
|
1333
1348
|
tc "<p><tt>ah!@\#$%^&*()[]oj</tt></p>\n", "{{!tt ah!@\#$%^&*()[]oj}}"
|
1334
1349
|
end
|
1350
|
+
it 'should parse mailto' do
|
1351
|
+
tc_mailto "<p><a href=\"mailto:vitas@matfyz.cz\">mailto:vitas@matfyz.cz</a></p>\n", "[[mailto:vitas@matfyz.cz]]\n"
|
1352
|
+
tc_mailto "<p><a href=\"mailto:vitas@matfyz.cz\">vitas</a></p>\n", "[[mailto:vitas@matfyz.cz | vitas]]\n"
|
1353
|
+
tc_mailto "<p><a href=\"mailto:vitas@matfyz.cz?subject=napis\">vitas</a></p>\n", "[[mailto:vitas@matfyz.cz?subject=napis | vitas]]\n"
|
1354
|
+
tc_mailto "<p><a href=\"mailto:vitas@matfyz.cz?body=odpovez\">vitas</a></p>\n", "[[mailto:vitas@matfyz.cz?body=odpovez | vitas]]\n"
|
1355
|
+
tc "<p><a href=\"mailto%3Avitas%40matfyz.cz\">vitas</a></p>\n", "[[mailto:vitas@matfyz.cz | vitas]]\n"
|
1356
|
+
end
|
1335
1357
|
end
|
1336
1358
|
# vim: tw=0
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trac-wiki
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.41
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vitas Stradal
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-10-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bacon
|
@@ -81,8 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
requirements: []
|
84
|
-
|
85
|
-
rubygems_version: 2.7.6
|
84
|
+
rubygems_version: 3.2.5
|
86
85
|
signing_key:
|
87
86
|
specification_version: 4
|
88
87
|
summary: Trac Wiki markup language
|