trac-wiki 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|