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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 415e33415c8fd6778ca69642b56fb804d12a26596952cf404ca139aa1309c34f
4
- data.tar.gz: 32903689e4d5dcbc971cffaab7224e936d6c8c215d7b34e51090ba06b373a0cf
3
+ metadata.gz: d6a9b2012dc7878dd0159e6e4e41390ba93ebd7f63f882c4f852f1242638bcd5
4
+ data.tar.gz: f742a4c5854c60e4c1a35021a98a0dc8e736666e58c21edf5f0135dec299c8ba
5
5
  SHA512:
6
- metadata.gz: c2d249408785a4f16ea358d83422ec19fa278cb6924ad91eaf59c25bb13a32f3945d5e945bbb6f821c61daec18597cee57d87ba9a2c9995dc520a66f72732703
7
- data.tar.gz: 28c490f4520a64f9551800465b2ad022333c86a7064e77956c86442aeeb5cb5bf0dcd9824ea57535f5f80a2c02e8def62ca0c17ff94f04cec73a6883749cecd5
6
+ metadata.gz: 5460fd31064a07823a966a4ef565515c03dfc3b3009ea81329f58152169bf8ea50c2c1cd721de610326a262fef0407080ad1c4f7d2c9ebb128c5eba692f7ee65
7
+ data.tar.gz: 61d2faf5433f03f02e4f3508fc5b58936a42ffbfce1bee592b70dfe649ac8040eacfd053607947c75e3bfa49782420f113086cb958e7ba23d2ae42fac2a8bf41
@@ -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)
@@ -1,3 +1,3 @@
1
1
  module TracWiki
2
- VERSION = '0.3.36'
2
+ VERSION = '0.3.41'
3
3
  end
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!@\#$%^&amp;*()[]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.36
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: 2018-06-15 00:00:00.000000000 Z
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
- rubyforge_project: trac-wiki
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