gollum-lib 4.0.3-java → 4.1.0-java
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.
- checksums.yaml +8 -8
- data/README.md +1 -1
- data/Rakefile +3 -3
- data/gemspec.rb +9 -6
- data/lib/gollum-lib/blob_entry.rb +1 -0
- data/lib/gollum-lib/committer.rb +5 -5
- data/lib/gollum-lib/file.rb +7 -7
- data/lib/gollum-lib/file_view.rb +14 -15
- data/lib/gollum-lib/filter/code.rb +28 -29
- data/lib/gollum-lib/filter/macro.rb +16 -16
- data/lib/gollum-lib/filter/metadata.rb +3 -3
- data/lib/gollum-lib/filter/plantuml.rb +167 -0
- data/lib/gollum-lib/filter/remote_code.rb +8 -8
- data/lib/gollum-lib/filter/render.rb +2 -2
- data/lib/gollum-lib/filter/sanitize.rb +2 -2
- data/lib/gollum-lib/filter/tags.rb +31 -30
- data/lib/gollum-lib/filter/toc.rb +7 -7
- data/lib/gollum-lib/filter/wsd.rb +3 -3
- data/lib/gollum-lib/git_access.rb +6 -6
- data/lib/gollum-lib/gitcode.rb +3 -3
- data/lib/gollum-lib/helpers.rb +1 -1
- data/lib/gollum-lib/macro/global_toc.rb +12 -0
- data/lib/gollum-lib/macro/series.rb +48 -0
- data/lib/gollum-lib/markup.rb +8 -3
- data/lib/gollum-lib/markups.rb +2 -2
- data/lib/gollum-lib/page.rb +9 -9
- data/lib/gollum-lib/sanitization.rb +3 -3
- data/lib/gollum-lib/version.rb +1 -1
- data/lib/gollum-lib/wiki.rb +17 -17
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZWYyYjYxMWEyZGU4NzQ3OGY5NmZiMzMwNjRhZmEzZDRmOGMxMzVhZA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YjY4ZTA4ZmI3YTQxYTBkNDk3Mzg2OGRjYTI2ODU1OTZhNmRlNjgzMQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZDkyMGY4NGZkOGY2ZDZjZWEzYmNjYWMwYTg3ZTE1ZTRlODUzZDQ2Y2Y3NmJj
|
10
|
+
OGNhNjI0M2RjYmQwMjhmNWRiZTRkM2M5MTE2YTI4ZDJmNzE1NDcxZDc4OGU2
|
11
|
+
YjYyYTRhYjhjZmE2MTg4NWYzMzZhN2FiYmNjZWEwZDdkOTQzNGY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NTU0MDMzMjEzYWJiMzA3ZmExZTgzYmUxY2E5M2M5ZmFlYzdjZDhlNTJmNDQ1
|
14
|
+
ODM4YjY5Mzk5NzVmM2IzMDE5ZmEwYTdmMGFjZDc3OTYyZTVmMmI3ODEzZTcx
|
15
|
+
ZGRiNDYzMDMwOGM3Y2U3OTEwOThhZDIwNWI1MmE0MGM5NWZjYjQ=
|
data/README.md
CHANGED
@@ -22,7 +22,7 @@ Gollum-lib follows the rules of [Semantic Versioning](http://semver.org/) and us
|
|
22
22
|
- Python 2.5+ (2.7.3 recommended)
|
23
23
|
- Ruby 1.9.3+ (1.9.3 recommended)
|
24
24
|
- Unix like operating system (OS X, Ubuntu, Debian, and more)
|
25
|
-
- Will not work on Windows
|
25
|
+
- Will not work on Windows with the default [grit](https://github.com/github/grit) adapter, but might work via JRuby (please let us know!)
|
26
26
|
|
27
27
|
## INSTALLATION
|
28
28
|
|
data/Rakefile
CHANGED
@@ -9,7 +9,7 @@ require 'date'
|
|
9
9
|
#############################################################################
|
10
10
|
|
11
11
|
def name
|
12
|
-
|
12
|
+
"gollum-lib"
|
13
13
|
end
|
14
14
|
|
15
15
|
def version
|
@@ -149,7 +149,7 @@ desc 'Update gemspec'
|
|
149
149
|
task :gemspec => :validate do
|
150
150
|
# read spec file and split out manifest section
|
151
151
|
spec = File.read(gemspec_file)
|
152
|
-
head,
|
152
|
+
head, _manifest, tail = spec.split(" # = MANIFEST =\n")
|
153
153
|
|
154
154
|
# replace name version and date
|
155
155
|
replace_header(head, :name)
|
@@ -167,7 +167,7 @@ task :gemspec => :validate do
|
|
167
167
|
join("\n")
|
168
168
|
|
169
169
|
# piece file back together and write
|
170
|
-
manifest = " s.files = %w
|
170
|
+
manifest = " s.files = %w(\n#{files}\n )\n"
|
171
171
|
spec = [head, manifest, tail].join(" # = MANIFEST =\n")
|
172
172
|
File.open(gemspec_file, 'w') { |io| io.write(spec) }
|
173
173
|
puts "Updated #{gemspec_file}"
|
data/gemspec.rb
CHANGED
@@ -8,7 +8,7 @@ def specification(version, default_adapter, platform = nil)
|
|
8
8
|
s.name = 'gollum-lib'
|
9
9
|
s.version = version
|
10
10
|
s.platform = platform if platform
|
11
|
-
s.date = '2015-
|
11
|
+
s.date = '2015-08-09'
|
12
12
|
s.rubyforge_project = 'gollum-lib'
|
13
13
|
s.license = 'MIT'
|
14
14
|
|
@@ -19,13 +19,13 @@ def specification(version, default_adapter, platform = nil)
|
|
19
19
|
s.email = 'tom@github.com'
|
20
20
|
s.homepage = 'http://github.com/gollum/gollum-lib'
|
21
21
|
|
22
|
-
s.require_paths = %w
|
22
|
+
s.require_paths = %w(lib)
|
23
23
|
|
24
24
|
s.rdoc_options = ['--charset=UTF-8']
|
25
|
-
s.extra_rdoc_files = %w
|
25
|
+
s.extra_rdoc_files = %w(README.md LICENSE)
|
26
26
|
|
27
27
|
s.add_dependency *default_adapter
|
28
|
-
s.add_dependency 'rouge', '~> 1.
|
28
|
+
s.add_dependency 'rouge', '~> 1.9'
|
29
29
|
s.add_dependency 'nokogiri', '~> 1.6.4'
|
30
30
|
s.add_dependency 'stringex', '~> 2.5.1'
|
31
31
|
s.add_dependency 'sanitize', '~> 2.1.0'
|
@@ -52,7 +52,7 @@ def specification(version, default_adapter, platform = nil)
|
|
52
52
|
s.add_development_dependency 'rb-fchange', '~> 0.0.6'
|
53
53
|
s.add_development_dependency 'twitter_cldr', '~> 3.1.0'
|
54
54
|
# = MANIFEST =
|
55
|
-
s.files = %w
|
55
|
+
s.files = %w(
|
56
56
|
Gemfile
|
57
57
|
HISTORY.md
|
58
58
|
LICENSE
|
@@ -72,6 +72,7 @@ def specification(version, default_adapter, platform = nil)
|
|
72
72
|
lib/gollum-lib/filter/macro.rb
|
73
73
|
lib/gollum-lib/filter/metadata.rb
|
74
74
|
lib/gollum-lib/filter/plain_text.rb
|
75
|
+
lib/gollum-lib/filter/plantuml.rb
|
75
76
|
lib/gollum-lib/filter/remote_code.rb
|
76
77
|
lib/gollum-lib/filter/render.rb
|
77
78
|
lib/gollum-lib/filter/sanitize.rb
|
@@ -84,6 +85,8 @@ def specification(version, default_adapter, platform = nil)
|
|
84
85
|
lib/gollum-lib/hook.rb
|
85
86
|
lib/gollum-lib/macro.rb
|
86
87
|
lib/gollum-lib/macro/all_pages.rb
|
88
|
+
lib/gollum-lib/macro/global_toc.rb
|
89
|
+
lib/gollum-lib/macro/series.rb
|
87
90
|
lib/gollum-lib/markup.rb
|
88
91
|
lib/gollum-lib/markups.rb
|
89
92
|
lib/gollum-lib/page.rb
|
@@ -92,7 +95,7 @@ def specification(version, default_adapter, platform = nil)
|
|
92
95
|
lib/gollum-lib/version.rb
|
93
96
|
lib/gollum-lib/wiki.rb
|
94
97
|
licenses/licenses.txt
|
95
|
-
|
98
|
+
)
|
96
99
|
# = MANIFEST =
|
97
100
|
|
98
101
|
s.test_files = s.files.select { |path| path =~ /^test\/test_.*\.rb/ }
|
data/lib/gollum-lib/committer.rb
CHANGED
@@ -39,9 +39,9 @@ module Gollum
|
|
39
39
|
def index
|
40
40
|
@index ||= begin
|
41
41
|
idx = @wiki.repo.index
|
42
|
-
if tree = options[:tree]
|
42
|
+
if (tree = options[:tree])
|
43
43
|
idx.read_tree(tree)
|
44
|
-
elsif parent = parents.first
|
44
|
+
elsif (parent = parents.first)
|
45
45
|
idx.read_tree(parent.tree.id)
|
46
46
|
end
|
47
47
|
idx
|
@@ -97,7 +97,7 @@ module Gollum
|
|
97
97
|
fullpath = ::File.join(*[@wiki.page_file_dir, dir, path].compact)
|
98
98
|
fullpath = fullpath[1..-1] if fullpath =~ /^\//
|
99
99
|
|
100
|
-
if index.current_tree && tree = index.current_tree / (@wiki.page_file_dir || '/')
|
100
|
+
if index.current_tree && (tree = index.current_tree / (@wiki.page_file_dir || '/'))
|
101
101
|
tree = tree / dir unless tree.nil?
|
102
102
|
end
|
103
103
|
|
@@ -202,7 +202,7 @@ module Gollum
|
|
202
202
|
deletions.any? { |d| d.downcase.sub(/\.\w+$/, '') == downfile }
|
203
203
|
else
|
204
204
|
part = parts.shift
|
205
|
-
if rest = map[part]
|
205
|
+
if (rest = map[part])
|
206
206
|
page_path_scheduled_for_deletion?(rest, parts.join('/'))
|
207
207
|
else
|
208
208
|
false
|
@@ -226,7 +226,7 @@ module Gollum
|
|
226
226
|
deletions.any? { |d| d == parts.first }
|
227
227
|
else
|
228
228
|
part = parts.shift
|
229
|
-
if rest = map[part]
|
229
|
+
if (rest = map[part])
|
230
230
|
file_path_scheduled_for_deletion?(rest, parts.join('/'))
|
231
231
|
else
|
232
232
|
false
|
data/lib/gollum-lib/file.rb
CHANGED
@@ -63,14 +63,14 @@ module Gollum
|
|
63
63
|
#
|
64
64
|
# Returns true if this is a pointer to an on-disk file
|
65
65
|
def on_disk?
|
66
|
-
|
66
|
+
@on_disk
|
67
67
|
end
|
68
68
|
|
69
69
|
# Public: The path to this file on disk
|
70
70
|
#
|
71
71
|
# Returns nil if on_disk? is false.
|
72
72
|
def on_disk_path
|
73
|
-
|
73
|
+
@on_disk_path
|
74
74
|
end
|
75
75
|
|
76
76
|
# Public: The Gollum::Git::Commit version of the file.
|
@@ -90,7 +90,7 @@ module Gollum
|
|
90
90
|
# path - The String directory path of the file.
|
91
91
|
#
|
92
92
|
# Returns the populated Gollum::File.
|
93
|
-
def populate(blob, path=nil)
|
93
|
+
def populate(blob, path = nil)
|
94
94
|
@blob = blob
|
95
95
|
@path = "#{path}/#{blob.name}"[1..-1]
|
96
96
|
@on_disk = false
|
@@ -123,7 +123,7 @@ module Gollum
|
|
123
123
|
else
|
124
124
|
@on_disk_path = pathname.to_path
|
125
125
|
end
|
126
|
-
|
126
|
+
true
|
127
127
|
end
|
128
128
|
|
129
129
|
# Find a file in the given Gollum repo.
|
@@ -136,19 +136,19 @@ module Gollum
|
|
136
136
|
# Returns a Gollum::File or nil if the file could not be found. Note
|
137
137
|
# that if you specify try_on_disk=true, you may or may not get a file
|
138
138
|
# for which on_disk? is actually true.
|
139
|
-
def find(name, version, try_on_disk=false)
|
139
|
+
def find(name, version, try_on_disk = false)
|
140
140
|
checked = name.downcase
|
141
141
|
map = @wiki.tree_map_for(version)
|
142
142
|
commit = version.is_a?(Gollum::Git::Commit) ? version : @wiki.commit_for(version)
|
143
143
|
|
144
|
-
if
|
144
|
+
if (result = map.detect { |entry| entry.path.downcase == checked })
|
145
145
|
@path = name
|
146
146
|
@version = commit
|
147
147
|
|
148
148
|
if try_on_disk && get_disk_reference(name, commit)
|
149
149
|
@on_disk = true
|
150
150
|
else
|
151
|
-
@blob =
|
151
|
+
@blob = result.blob(@wiki.repo)
|
152
152
|
end
|
153
153
|
|
154
154
|
self
|
data/lib/gollum-lib/file_view.rb
CHANGED
@@ -1,35 +1,34 @@
|
|
1
1
|
# ~*~ encoding: utf-8 ~*~
|
2
2
|
module Gollum
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
=end
|
3
|
+
# FileView requires that:
|
4
|
+
# - All files in root dir are processed first
|
5
|
+
# - Then all the folders are sorted and processed
|
6
|
+
|
8
7
|
class FileView
|
9
8
|
# common use cases:
|
10
9
|
# set pages to wiki.pages and show_all to false
|
11
10
|
# set pages to wiki.pages + wiki.files and show_all to true
|
12
|
-
def initialize
|
11
|
+
def initialize(pages, options = {})
|
13
12
|
@pages = pages
|
14
13
|
@show_all = options[:show_all] || false
|
15
14
|
@checked = options[:collapse_tree] ? '' : "checked"
|
16
15
|
end
|
17
16
|
|
18
|
-
def enclose_tree
|
17
|
+
def enclose_tree(string)
|
19
18
|
%Q(<ol class="tree">\n) + string + %Q(</ol>)
|
20
19
|
end
|
21
20
|
|
22
|
-
def new_page
|
21
|
+
def new_page(page)
|
23
22
|
name = page.name
|
24
23
|
url = url_for_page page
|
25
24
|
%Q( <li class="file"><a href="#{url}"><span class="icon"></span>#{name}</a></li>)
|
26
25
|
end
|
27
26
|
|
28
|
-
def new_folder
|
27
|
+
def new_folder(folder_path)
|
29
28
|
new_sub_folder folder_path
|
30
29
|
end
|
31
30
|
|
32
|
-
def new_sub_folder
|
31
|
+
def new_sub_folder(path)
|
33
32
|
<<-HTML
|
34
33
|
<li>
|
35
34
|
<label>#{path}</label> <input type="checkbox" #{@checked} />
|
@@ -41,7 +40,7 @@ module Gollum
|
|
41
40
|
"</ol></li>\n"
|
42
41
|
end
|
43
42
|
|
44
|
-
def url_for_page
|
43
|
+
def url_for_page(page)
|
45
44
|
url = ''
|
46
45
|
if @show_all
|
47
46
|
# Remove ext for valid pages.
|
@@ -121,8 +120,8 @@ module Gollum
|
|
121
120
|
changed = false
|
122
121
|
|
123
122
|
# process rest of folders
|
124
|
-
(0...sorted_folders.size).each do |
|
125
|
-
page = @pages[sorted_folders[
|
123
|
+
(0...sorted_folders.size).each do |i|
|
124
|
+
page = @pages[sorted_folders[i][1]]
|
126
125
|
path = page.path
|
127
126
|
folder = ::File.dirname path
|
128
127
|
|
@@ -143,9 +142,9 @@ module Gollum
|
|
143
142
|
end
|
144
143
|
end
|
145
144
|
|
146
|
-
html
|
145
|
+
html += new_page page
|
147
146
|
cwd_array = tmp_array
|
148
|
-
changed
|
147
|
+
changed = false
|
149
148
|
end
|
150
149
|
|
151
150
|
# return the completed html
|
@@ -6,28 +6,28 @@
|
|
6
6
|
class Gollum::Filter::Code < Gollum::Filter
|
7
7
|
def extract(data)
|
8
8
|
case @markup.format
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
9
|
+
when :txt
|
10
|
+
return data
|
11
|
+
when :asciidoc
|
12
|
+
data.gsub!(/^(\[source,([^\r\n]*)\]\n)?----\n(.+?)\n----$/m) do
|
13
|
+
cache_codeblock(Regexp.last_match[2], Regexp.last_match[3])
|
14
|
+
end
|
15
|
+
when :org
|
16
|
+
org_headers = %r{([ \t]*#\+HEADER[S]?:[^\r\n]*\n)*}
|
17
|
+
org_name = %r{([ \t]*#\+NAME:[^\r\n]*\n)?}
|
18
|
+
org_lang = %r{[ ]*([^\n \r]*)[ ]*[^\r\n]*}
|
19
|
+
org_begin = %r{[ \t]*#\+BEGIN_SRC#{org_lang}\n}
|
20
|
+
org_end = %r{\n[ \t]*#\+END_SRC[ \t]*}
|
21
|
+
data.gsub!(/^#{org_headers}#{org_name}#{org_begin}(.+?)#{org_end}$/mi) do
|
22
|
+
cache_codeblock(Regexp.last_match[3], Regexp.last_match[4])
|
23
|
+
end
|
24
24
|
end
|
25
25
|
data.gsub!(/^([ \t]*)(~~~+) ?([^\r\n]+)?\r?\n(.+?)\r?\n\1(~~~+)[ \t\r]*$/m) do
|
26
|
-
m_indent =
|
27
|
-
m_start =
|
28
|
-
m_lang =
|
29
|
-
m_code =
|
30
|
-
m_end =
|
26
|
+
m_indent = Regexp.last_match[1]
|
27
|
+
m_start = Regexp.last_match[2] # ~~~
|
28
|
+
m_lang = Regexp.last_match[3]
|
29
|
+
m_code = Regexp.last_match[4]
|
30
|
+
m_end = Regexp.last_match[5] # ~~~
|
31
31
|
# start and finish tilde fence must be the same length
|
32
32
|
next '' if m_start.length != m_end.length
|
33
33
|
lang = m_lang ? m_lang.strip : nil
|
@@ -39,7 +39,7 @@ class Gollum::Filter::Code < Gollum::Filter
|
|
39
39
|
end
|
40
40
|
|
41
41
|
data.gsub!(/^([ \t]*)``` ?([^\r\n]+)?\r?\n(.+?)\r?\n\1```[ \t]*\r?$/m) do
|
42
|
-
"#{
|
42
|
+
"#{Regexp.last_match[1]}#{cache_codeblock(Regexp.last_match[2].to_s.strip, Regexp.last_match[3], Regexp.last_match[1])}" # print the SHA1 ID with the proper indentation
|
43
43
|
end
|
44
44
|
data
|
45
45
|
end
|
@@ -56,7 +56,7 @@ class Gollum::Filter::Code < Gollum::Filter
|
|
56
56
|
|
57
57
|
blocks = []
|
58
58
|
|
59
|
-
@map.each do |
|
59
|
+
@map.each do |_id, spec|
|
60
60
|
next if spec[:output] # cached
|
61
61
|
|
62
62
|
code = spec[:code]
|
@@ -76,8 +76,11 @@ class Gollum::Filter::Code < Gollum::Filter
|
|
76
76
|
if !lang || lang.downcase == 'bash'
|
77
77
|
hl_code = "<pre>#{code}</pre>"
|
78
78
|
else
|
79
|
+
# Set the default lexer to 'text' to prevent #153
|
80
|
+
lexer = Pygments::Lexer[(lang)] || Pygments::Lexer['text']
|
81
|
+
|
79
82
|
# must set startinline to true for php to be highlighted without <?
|
80
|
-
hl_code =
|
83
|
+
hl_code = lexer.highlight(code, :options => { :encoding => encoding.to_s, :startinline => true })
|
81
84
|
end
|
82
85
|
else # Rouge
|
83
86
|
begin
|
@@ -110,9 +113,7 @@ class Gollum::Filter::Code < Gollum::Filter
|
|
110
113
|
end
|
111
114
|
end
|
112
115
|
# Removes paragraph tags surrounding <pre> blocks, see issue https://github.com/gollum/gollum-lib/issues/97
|
113
|
-
data.gsub!(/(<p>#{id}<\/p>|#{id})/)
|
114
|
-
body
|
115
|
-
end
|
116
|
+
data.gsub!(/(<p>#{id}<\/p>|#{id})/) { body }
|
116
117
|
end
|
117
118
|
|
118
119
|
data
|
@@ -127,9 +128,7 @@ class Gollum::Filter::Code < Gollum::Filter
|
|
127
128
|
# regex - A regex to match whitespace
|
128
129
|
def remove_leading_space(code, regex)
|
129
130
|
if code.lines.all? { |line| line =~ /\A\r?\n\Z/ || line =~ regex }
|
130
|
-
code.gsub!(regex)
|
131
|
-
''
|
132
|
-
end
|
131
|
+
code.gsub!(regex) { '' }
|
133
132
|
end
|
134
133
|
end
|
135
134
|
|
@@ -11,27 +11,27 @@ class Gollum::Filter::Macro < Gollum::Filter
|
|
11
11
|
arg_list = %r{(\s*|#{arg}(?:\s*,\s*#{arg})*)}
|
12
12
|
|
13
13
|
data.gsub(/('?)\<\<\s*([A-Z][A-Za-z0-9]*)\s*\(#{arg_list}\)\s*\>\>/) do
|
14
|
-
next CGI.escape_html($&[1..-1]) unless
|
15
|
-
id = Digest::SHA1.hexdigest(
|
16
|
-
macro =
|
17
|
-
argstr =
|
14
|
+
next CGI.escape_html($&[1..-1]) unless Regexp.last_match[1].empty?
|
15
|
+
id = Digest::SHA1.hexdigest(Regexp.last_match[2] + Regexp.last_match[3])
|
16
|
+
macro = Regexp.last_match[2]
|
17
|
+
argstr = Regexp.last_match[3]
|
18
18
|
args = []
|
19
19
|
opts = {}
|
20
20
|
|
21
|
-
argstr.scan
|
21
|
+
argstr.scan(/,?\s*(#{arg})\s*/) do |arguments|
|
22
22
|
# Stabstabstab
|
23
|
-
|
23
|
+
argument = arguments.first
|
24
24
|
|
25
|
-
|
26
|
-
opts[
|
27
|
-
|
28
|
-
args <<
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
25
|
+
if argument =~ /^([a-z0-9_]+)="(.*?)"/
|
26
|
+
opts[Regexp.last_match[1]] = Regexp.last_match[2]
|
27
|
+
elsif argument =~ /^"(.*)"$/
|
28
|
+
args << Regexp.last_match[1]
|
29
|
+
else
|
30
|
+
args << argument
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
args << opts unless opts.empty?
|
35
35
|
|
36
36
|
@map[id] = { :macro => macro, :args => args }
|
37
37
|
id
|
@@ -14,7 +14,7 @@ class Gollum::Filter::Metadata < Gollum::Filter
|
|
14
14
|
@markup.metadata ||= {}
|
15
15
|
# Split untrusted input on newlines, then remove bits that look like
|
16
16
|
# HTML elements before parsing each line.
|
17
|
-
|
17
|
+
Regexp.last_match[1].split("\n").each do |line|
|
18
18
|
line.gsub!(/<[^>]*>/, '')
|
19
19
|
k, v = line.split(':', 2)
|
20
20
|
@markup.metadata[k.strip] = (v ? v.strip : '') if k
|
@@ -23,7 +23,7 @@ class Gollum::Filter::Metadata < Gollum::Filter
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
def process(
|
27
|
-
|
26
|
+
def process(data)
|
27
|
+
data
|
28
28
|
end
|
29
29
|
end
|