gollum 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of gollum might be problematic. Click here for more details.
- data/HISTORY.md +5 -0
- data/gollum.gemspec +3 -3
- data/lib/gollum.rb +1 -1
- data/lib/gollum/albino.rb +13 -0
- data/lib/gollum/markup.rb +6 -3
- data/test/test_markup.rb +12 -0
- metadata +7 -37
data/HISTORY.md
CHANGED
data/gollum.gemspec
CHANGED
@@ -4,8 +4,8 @@ Gem::Specification.new do |s|
|
|
4
4
|
s.rubygems_version = '1.3.5'
|
5
5
|
|
6
6
|
s.name = 'gollum'
|
7
|
-
s.version = '1.1.
|
8
|
-
s.date = '
|
7
|
+
s.version = '1.1.1'
|
8
|
+
s.date = '2011-01-11'
|
9
9
|
s.rubyforge_project = 'gollum'
|
10
10
|
|
11
11
|
s.summary = "A simple, Git-powered wiki."
|
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
|
26
26
|
s.add_dependency('grit', "~> 2.3")
|
27
27
|
s.add_dependency('github-markup', [">= 0.4.0", "< 1.0.0"])
|
28
|
-
s.add_dependency('albino', "~> 1.
|
28
|
+
s.add_dependency('albino', "~> 1.1.1")
|
29
29
|
s.add_dependency('sinatra', "~> 1.0")
|
30
30
|
s.add_dependency('mustache', [">= 0.11.2", "< 1.0.0"])
|
31
31
|
s.add_dependency('sanitize', "~> 1.1")
|
data/lib/gollum.rb
CHANGED
data/lib/gollum/albino.rb
CHANGED
@@ -14,4 +14,17 @@ class Gollum::Albino < Albino
|
|
14
14
|
html.sub!(%r{</pre></div>\Z}, "</pre>\n</div>")
|
15
15
|
html
|
16
16
|
end
|
17
|
+
|
18
|
+
# Hotfix for vulnerable versions of Albino
|
19
|
+
if !instance_methods.include?('shell_escape')
|
20
|
+
def convert_options(options = {})
|
21
|
+
@options.merge(options).inject('') do |string, (flag, value)|
|
22
|
+
string + " -#{flag} #{shell_escape value}"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def shell_escape(str)
|
27
|
+
str.to_s.gsub("'", "\\\\'").gsub(";", '\\;')
|
28
|
+
end
|
29
|
+
end
|
17
30
|
end
|
data/lib/gollum/markup.rb
CHANGED
@@ -347,7 +347,7 @@ module Gollum
|
|
347
347
|
#
|
348
348
|
# Returns the placeholder'd String data.
|
349
349
|
def extract_code(data)
|
350
|
-
data.gsub(/^``` ?(
|
350
|
+
data.gsub(/^``` ?([^\r\n]+)?\r?\n(.+?)\r?\n```\r?$/m) do
|
351
351
|
id = Digest::SHA1.hexdigest($2)
|
352
352
|
@codemap[id] = { :lang => $1, :code => $2 }
|
353
353
|
id
|
@@ -362,12 +362,15 @@ module Gollum
|
|
362
362
|
# Returns the marked up String data.
|
363
363
|
def process_code(data)
|
364
364
|
@codemap.each do |id, spec|
|
365
|
-
lang = spec[:lang]
|
366
365
|
code = spec[:code]
|
367
366
|
if code.lines.all? { |line| line =~ /\A\r?\n\Z/ || line =~ /^( |\t)/ }
|
368
367
|
code.gsub!(/^( |\t)/m, '')
|
369
368
|
end
|
370
|
-
|
369
|
+
if lang = spec[:lang]
|
370
|
+
data.gsub!(id, Gollum::Albino.new(code, lang).colorize)
|
371
|
+
else
|
372
|
+
data.gsub!(id, "<pre><code>#{CGI.escapeHTML(code)}</code></pre>")
|
373
|
+
end
|
371
374
|
end
|
372
375
|
data
|
373
376
|
end
|
data/test/test_markup.rb
CHANGED
@@ -353,6 +353,18 @@ context "Markup" do
|
|
353
353
|
compare(content, output)
|
354
354
|
end
|
355
355
|
|
356
|
+
test "code block with invalid lang" do
|
357
|
+
content = "a\n\n``` ls -al;\n\tbooya\n\tboom\n```\n\nb"
|
358
|
+
output = "<p>a</p>\n\n\n\n<p>b</p>"
|
359
|
+
compare(content, output)
|
360
|
+
end
|
361
|
+
|
362
|
+
test "code block with no lang" do
|
363
|
+
content = "a\n\n```\n\tls -al;\n\t<booya>\n```\n\nb"
|
364
|
+
output = "<p>a</p>\n\n<pre><code>ls -al;\n<booya></code></pre>\n\n<p>b</p>"
|
365
|
+
compare(content, output)
|
366
|
+
end
|
367
|
+
|
356
368
|
#########################################################################
|
357
369
|
#
|
358
370
|
# Various
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gollum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 19
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 1
|
8
7
|
- 1
|
9
|
-
-
|
10
|
-
version: 1.1.
|
8
|
+
- 1
|
9
|
+
version: 1.1.1
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Tom Preston-Werner
|
@@ -16,18 +15,16 @@ autorequire:
|
|
16
15
|
bindir: bin
|
17
16
|
cert_chain: []
|
18
17
|
|
19
|
-
date:
|
18
|
+
date: 2011-01-11 00:00:00 -08:00
|
20
19
|
default_executable: gollum
|
21
20
|
dependencies:
|
22
21
|
- !ruby/object:Gem::Dependency
|
23
22
|
name: grit
|
24
23
|
prerelease: false
|
25
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
25
|
requirements:
|
28
26
|
- - ~>
|
29
27
|
- !ruby/object:Gem::Version
|
30
|
-
hash: 5
|
31
28
|
segments:
|
32
29
|
- 2
|
33
30
|
- 3
|
@@ -38,11 +35,9 @@ dependencies:
|
|
38
35
|
name: github-markup
|
39
36
|
prerelease: false
|
40
37
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
38
|
requirements:
|
43
39
|
- - ">="
|
44
40
|
- !ruby/object:Gem::Version
|
45
|
-
hash: 15
|
46
41
|
segments:
|
47
42
|
- 0
|
48
43
|
- 4
|
@@ -50,7 +45,6 @@ dependencies:
|
|
50
45
|
version: 0.4.0
|
51
46
|
- - <
|
52
47
|
- !ruby/object:Gem::Version
|
53
|
-
hash: 23
|
54
48
|
segments:
|
55
49
|
- 1
|
56
50
|
- 0
|
@@ -62,26 +56,23 @@ dependencies:
|
|
62
56
|
name: albino
|
63
57
|
prerelease: false
|
64
58
|
requirement: &id003 !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
59
|
requirements:
|
67
60
|
- - ~>
|
68
61
|
- !ruby/object:Gem::Version
|
69
|
-
hash: 15
|
70
62
|
segments:
|
71
63
|
- 1
|
72
|
-
-
|
73
|
-
|
64
|
+
- 1
|
65
|
+
- 1
|
66
|
+
version: 1.1.1
|
74
67
|
type: :runtime
|
75
68
|
version_requirements: *id003
|
76
69
|
- !ruby/object:Gem::Dependency
|
77
70
|
name: sinatra
|
78
71
|
prerelease: false
|
79
72
|
requirement: &id004 !ruby/object:Gem::Requirement
|
80
|
-
none: false
|
81
73
|
requirements:
|
82
74
|
- - ~>
|
83
75
|
- !ruby/object:Gem::Version
|
84
|
-
hash: 15
|
85
76
|
segments:
|
86
77
|
- 1
|
87
78
|
- 0
|
@@ -92,11 +83,9 @@ dependencies:
|
|
92
83
|
name: mustache
|
93
84
|
prerelease: false
|
94
85
|
requirement: &id005 !ruby/object:Gem::Requirement
|
95
|
-
none: false
|
96
86
|
requirements:
|
97
87
|
- - ">="
|
98
88
|
- !ruby/object:Gem::Version
|
99
|
-
hash: 55
|
100
89
|
segments:
|
101
90
|
- 0
|
102
91
|
- 11
|
@@ -104,7 +93,6 @@ dependencies:
|
|
104
93
|
version: 0.11.2
|
105
94
|
- - <
|
106
95
|
- !ruby/object:Gem::Version
|
107
|
-
hash: 23
|
108
96
|
segments:
|
109
97
|
- 1
|
110
98
|
- 0
|
@@ -116,11 +104,9 @@ dependencies:
|
|
116
104
|
name: sanitize
|
117
105
|
prerelease: false
|
118
106
|
requirement: &id006 !ruby/object:Gem::Requirement
|
119
|
-
none: false
|
120
107
|
requirements:
|
121
108
|
- - ~>
|
122
109
|
- !ruby/object:Gem::Version
|
123
|
-
hash: 13
|
124
110
|
segments:
|
125
111
|
- 1
|
126
112
|
- 1
|
@@ -131,11 +117,9 @@ dependencies:
|
|
131
117
|
name: nokogiri
|
132
118
|
prerelease: false
|
133
119
|
requirement: &id007 !ruby/object:Gem::Requirement
|
134
|
-
none: false
|
135
120
|
requirements:
|
136
121
|
- - ~>
|
137
122
|
- !ruby/object:Gem::Version
|
138
|
-
hash: 7
|
139
123
|
segments:
|
140
124
|
- 1
|
141
125
|
- 4
|
@@ -146,11 +130,9 @@ dependencies:
|
|
146
130
|
name: RedCloth
|
147
131
|
prerelease: false
|
148
132
|
requirement: &id008 !ruby/object:Gem::Requirement
|
149
|
-
none: false
|
150
133
|
requirements:
|
151
134
|
- - ">="
|
152
135
|
- !ruby/object:Gem::Version
|
153
|
-
hash: 3
|
154
136
|
segments:
|
155
137
|
- 0
|
156
138
|
version: "0"
|
@@ -160,11 +142,9 @@ dependencies:
|
|
160
142
|
name: mocha
|
161
143
|
prerelease: false
|
162
144
|
requirement: &id009 !ruby/object:Gem::Requirement
|
163
|
-
none: false
|
164
145
|
requirements:
|
165
146
|
- - ">="
|
166
147
|
- !ruby/object:Gem::Version
|
167
|
-
hash: 3
|
168
148
|
segments:
|
169
149
|
- 0
|
170
150
|
version: "0"
|
@@ -174,11 +154,9 @@ dependencies:
|
|
174
154
|
name: org-ruby
|
175
155
|
prerelease: false
|
176
156
|
requirement: &id010 !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
157
|
requirements:
|
179
158
|
- - ">="
|
180
159
|
- !ruby/object:Gem::Version
|
181
|
-
hash: 3
|
182
160
|
segments:
|
183
161
|
- 0
|
184
162
|
version: "0"
|
@@ -188,11 +166,9 @@ dependencies:
|
|
188
166
|
name: rdiscount
|
189
167
|
prerelease: false
|
190
168
|
requirement: &id011 !ruby/object:Gem::Requirement
|
191
|
-
none: false
|
192
169
|
requirements:
|
193
170
|
- - ">="
|
194
171
|
- !ruby/object:Gem::Version
|
195
|
-
hash: 3
|
196
172
|
segments:
|
197
173
|
- 0
|
198
174
|
version: "0"
|
@@ -202,11 +178,9 @@ dependencies:
|
|
202
178
|
name: shoulda
|
203
179
|
prerelease: false
|
204
180
|
requirement: &id012 !ruby/object:Gem::Requirement
|
205
|
-
none: false
|
206
181
|
requirements:
|
207
182
|
- - ">="
|
208
183
|
- !ruby/object:Gem::Version
|
209
|
-
hash: 3
|
210
184
|
segments:
|
211
185
|
- 0
|
212
186
|
version: "0"
|
@@ -700,27 +674,23 @@ rdoc_options:
|
|
700
674
|
require_paths:
|
701
675
|
- lib
|
702
676
|
required_ruby_version: !ruby/object:Gem::Requirement
|
703
|
-
none: false
|
704
677
|
requirements:
|
705
678
|
- - ">="
|
706
679
|
- !ruby/object:Gem::Version
|
707
|
-
hash: 3
|
708
680
|
segments:
|
709
681
|
- 0
|
710
682
|
version: "0"
|
711
683
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
712
|
-
none: false
|
713
684
|
requirements:
|
714
685
|
- - ">="
|
715
686
|
- !ruby/object:Gem::Version
|
716
|
-
hash: 3
|
717
687
|
segments:
|
718
688
|
- 0
|
719
689
|
version: "0"
|
720
690
|
requirements: []
|
721
691
|
|
722
692
|
rubyforge_project: gollum
|
723
|
-
rubygems_version: 1.3.
|
693
|
+
rubygems_version: 1.3.6
|
724
694
|
signing_key:
|
725
695
|
specification_version: 2
|
726
696
|
summary: A simple, Git-powered wiki.
|