trac-wiki 0.1.0 → 0.1.1
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/lib/trac-wiki/parser.rb +31 -7
- data/lib/trac-wiki/version.rb +1 -1
- data/test/parser_test.rb +16 -3
- metadata +2 -2
data/lib/trac-wiki/parser.rb
CHANGED
@@ -16,6 +16,7 @@ require 'uri'
|
|
16
16
|
# ||=Table=||=Heading=||
|
17
17
|
# || Table || Cells ||
|
18
18
|
# [[Image(image.png)]]
|
19
|
+
# [[Image(image.png, options)]]
|
19
20
|
#
|
20
21
|
# The simplest interface is TracWiki.render. The default handling of
|
21
22
|
# links allow explicit local links using the [[link]] syntax. External
|
@@ -207,12 +208,35 @@ module TracWiki
|
|
207
208
|
# method can be overridden to generate custom
|
208
209
|
# markup, for example to add html additional attributes or
|
209
210
|
# to put divs around the imgs.
|
210
|
-
def make_image(uri,
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
211
|
+
def make_image(uri, attrs='')
|
212
|
+
"<img src=\"#{escape_html(uri)}\"#{make_image_attrs(attrs)}/>"
|
213
|
+
end
|
214
|
+
|
215
|
+
def make_image_attrs(attrs)
|
216
|
+
return '' if ! attrs
|
217
|
+
a = {}
|
218
|
+
style = []
|
219
|
+
attrs.strip.split(/\s*,\s*/).each do |opt|
|
220
|
+
case opt
|
221
|
+
when /^\d+[^\d]*$/
|
222
|
+
a['width'] = opt
|
223
|
+
when /^(right|left|center)/i
|
224
|
+
a['align'] = opt
|
225
|
+
when /^(top|bottom|middle)$/i
|
226
|
+
a['valign'] = opt
|
227
|
+
when /^link=(.*)$/i
|
228
|
+
# pass
|
229
|
+
when /^nolink$/i
|
230
|
+
# pass
|
231
|
+
when /^(align|valign|border|width|height|alt|title|longdesc|class|id|usemap)=(.*)$/i
|
232
|
+
a[$1]= escape_html($2)
|
233
|
+
when /^(margin|margin-(left|right|top|bottom))=(\d+)$/
|
234
|
+
style.push($1 + ":" + escape_html($3))
|
235
|
+
end
|
236
|
+
end
|
237
|
+
a['style'] = style.join(';') if ! style.empty?
|
238
|
+
return '' if a.empty?
|
239
|
+
return ' ' + a.map{|k,v| "#{k}=\"#{v}\"" }.sort.join(' ')
|
216
240
|
end
|
217
241
|
|
218
242
|
def make_headline(level, text)
|
@@ -244,7 +268,7 @@ module TracWiki
|
|
244
268
|
end
|
245
269
|
end
|
246
270
|
# [[Image(pic.jpg|tag)]]
|
247
|
-
when /\A\[\[Image\(([
|
271
|
+
when /\A\[\[Image\(([^,]*?)(,(.*?))?\)\]\]/ # image
|
248
272
|
str = $'
|
249
273
|
@out << make_image($1, $3)
|
250
274
|
# [[link]]
|
data/lib/trac-wiki/version.rb
CHANGED
data/test/parser_test.rb
CHANGED
@@ -449,8 +449,8 @@ describe TracWiki::Parser do
|
|
449
449
|
# Image tags should be escape
|
450
450
|
tc("<p><img src=\"image.jpg\"/></p>\n", "[[Image(image.jpg)]]")
|
451
451
|
tc("<p><img src=\"image.jpg\"/></p>\n", "[[Image(image.jpg)]]", :no_link=>true)
|
452
|
-
tc("<p><img src=\"image.jpg\" alt=\""tag"\"/></p>\n", "[[Image(image.jpg
|
453
|
-
tc("<p><img src=\"image.jpg\" alt=\""tag"\"/></p>\n", "[[Image(image.jpg
|
452
|
+
tc("<p><img src=\"image.jpg\" alt=\"a"tag"\"/></p>\n", "[[Image(image.jpg,alt=a\"tag\")]]")
|
453
|
+
tc("<p><img src=\"image.jpg\" alt=\"a"tag"\"/></p>\n", "[[Image(image.jpg,alt=a\"tag\")]]", :no_link=>true)
|
454
454
|
|
455
455
|
# Malicious links should not be converted.
|
456
456
|
tc("<p><a href=\"javascript%3Aalert%28%22Boo%21%22%29\">Click</a></p>\n", "[[javascript:alert(\"Boo!\")|Click]]")
|
@@ -708,7 +708,20 @@ describe TracWiki::Parser do
|
|
708
708
|
|
709
709
|
it 'should parse image' do
|
710
710
|
tc("<p><img src=\"image.jpg\"/></p>\n", "[[Image(image.jpg)]]")
|
711
|
-
tc("<p><img src=\"image.jpg\" alt=\"tag\"/></p>\n", "[[Image(image.jpg
|
711
|
+
tc("<p><img src=\"image.jpg\" alt=\"tag\"/></p>\n", "[[Image(image.jpg,alt=tag)]]")
|
712
|
+
tc("<p><img src=\"image.jpg\" width=\"120px\"/></p>\n", "[[Image(image.jpg, 120px )]]")
|
713
|
+
tc("<p><img src=\"image.jpg\" width=\"120px\"/></p>\n", "[[Image(image.jpg, \t120px )]]")
|
714
|
+
tc("<p><img src=\"image.jpg\" align=\"right\"/></p>\n", "[[Image(image.jpg, right)]]")
|
715
|
+
tc("<p><img src=\"image.jpg\" align=\"right\" valign=\"top\"/></p>\n", "[[Image(image.jpg, right,top)]]")
|
716
|
+
tc("<p><img src=\"image.jpg\" align=\"right\" valign=\"top\"/></p>\n", "[[Image(image.jpg, top,right)]]")
|
717
|
+
tc("<p><img src=\"image.jpg\" valign=\"top\"/></p>\n", "[[Image(image.jpg, top)]]")
|
718
|
+
tc("<p><img src=\"image.jpg\" valign=\"top\"/></p>\n", "[[Image(image.jpg, valign=top)]]")
|
719
|
+
tc("<p><img src=\"image.jpg\" align=\"center\"/></p>\n", "[[Image(image.jpg, center)]]")
|
720
|
+
tc("<p><img src=\"image.jpg\" valign=\"middle\"/></p>\n", "[[Image(image.jpg, middle)]]")
|
721
|
+
tc("<p><img src=\"image.jpg\" title=\"houhouhou\"/></p>\n", "[[Image(image.jpg, title=houhouhou)]]")
|
722
|
+
tc("<p><img src=\"image.jpg\" width=\"120px\"/></p>\n", "[[Image(image.jpg,width=120px)]]")
|
723
|
+
tc("<p><img src=\"image.jpg\" width=\"120%\"/></p>\n", "[[Image(image.jpg, width=120%)]]")
|
724
|
+
tc("<p><img src=\"image.jpg\" style=\"margin:5\"/></p>\n", "[[Image(image.jpg,margin=5)]]")
|
712
725
|
tc("<p><img src=\"http://example.org/image.jpg\"/></p>\n", "[[Image(http://example.org/image.jpg)]]")
|
713
726
|
end
|
714
727
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trac-wiki
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-05-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bacon
|