gollum-lib 4.2.10-java → 5.0.a.1-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 +5 -5
- data/Gemfile +1 -1
- data/README.md +2 -1
- data/ROADMAP +6 -0
- data/Rakefile +4 -4
- data/gemspec.rb +8 -13
- data/lib/gollum-lib.rb +0 -4
- data/lib/gollum-lib/committer.rb +0 -4
- data/lib/gollum-lib/file_view.rb +4 -8
- data/lib/gollum-lib/filter/tags.rb +3 -3
- data/lib/gollum-lib/filter/yaml.rb +27 -0
- data/lib/gollum-lib/macro/navigation.rb +1 -1
- data/lib/gollum-lib/markup.rb +2 -2
- data/lib/gollum-lib/markups.rb +1 -1
- data/lib/gollum-lib/page.rb +39 -83
- data/lib/gollum-lib/version.rb +2 -2
- data/lib/gollum-lib/wiki.rb +16 -28
- metadata +22 -42
- data/lib/gollum-lib/filter/metadata.rb +0 -29
- data/lib/gollum-lib/gitcode.rb +0 -48
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: ae72c5766cef3dfac6331528aa1bbae51b168dd9
|
|
4
|
+
data.tar.gz: 3ef52f1eea546e5204ae4ba48ab0a07d36e7c206
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 653feadd2f5ab77be231fc6b1c749e035b28dc610e80ab513ef62c70176f149767eb4638fc7143dfeadb1e0d668d7daa4967850191b8f57c2d1db0de9edb668d
|
|
7
|
+
data.tar.gz: e72ae4b5f112ad0d15a7001b651ead4ebec0b7b691ef7ab408dc0895fb405b7d64c71366050cf5bd7761ae468b1dd294c0b576f34a3a1695528e85c92f142551
|
data/Gemfile
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
source 'https://rubygems.org'
|
|
2
|
-
gemspec :name => 'gollum-lib'
|
|
2
|
+
gemspec :name => 'gollum-lib'
|
data/README.md
CHANGED
|
@@ -19,7 +19,8 @@ Gollum-lib follows the rules of [Semantic Versioning](http://semver.org/) and us
|
|
|
19
19
|
|
|
20
20
|
## SYSTEM REQUIREMENTS
|
|
21
21
|
|
|
22
|
-
-
|
|
22
|
+
- Python 2.5+ (2.7.3 recommended)
|
|
23
|
+
- Ruby 2.1.0+ (>= 2.3.3 recommended)
|
|
23
24
|
- Unix like operating system (OS X, Ubuntu, Debian, and more)
|
|
24
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!)
|
|
25
26
|
|
data/ROADMAP
ADDED
data/Rakefile
CHANGED
|
@@ -118,14 +118,14 @@ end
|
|
|
118
118
|
|
|
119
119
|
desc 'Create a release build'
|
|
120
120
|
task :release => :build do
|
|
121
|
-
unless `git branch` =~
|
|
122
|
-
puts "You must be on the
|
|
121
|
+
unless `git branch` =~ /gollum-lib-5.x/
|
|
122
|
+
puts "You must be on the gollum-lib-5.x branch to release!"
|
|
123
123
|
exit!
|
|
124
124
|
end
|
|
125
125
|
sh "git commit --allow-empty -a -m 'Release #{version}'"
|
|
126
|
-
sh "git pull --rebase origin
|
|
126
|
+
sh "git pull --rebase origin gollum-lib-5.x"
|
|
127
127
|
sh "git tag v#{version}"
|
|
128
|
-
sh "git push origin
|
|
128
|
+
sh "git push origin gollum-lib-5.x"
|
|
129
129
|
sh "git push origin v#{version}"
|
|
130
130
|
sh "gem push pkg/#{name}-#{version}.gem"
|
|
131
131
|
sh "gem push pkg/#{name}-#{version}-java.gem"
|
data/gemspec.rb
CHANGED
|
@@ -3,12 +3,12 @@ def specification(version, default_adapter, platform = nil)
|
|
|
3
3
|
s.specification_version = 2 if s.respond_to? :specification_version=
|
|
4
4
|
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
|
5
5
|
s.rubygems_version = '0.0.1'
|
|
6
|
-
s.required_ruby_version = '>= 1
|
|
6
|
+
s.required_ruby_version = '>= 2.1'
|
|
7
7
|
|
|
8
8
|
s.name = 'gollum-lib'
|
|
9
9
|
s.version = version
|
|
10
10
|
s.platform = platform if platform
|
|
11
|
-
s.date = '
|
|
11
|
+
s.date = '2017-04-08'
|
|
12
12
|
s.rubyforge_project = 'gollum-lib'
|
|
13
13
|
s.license = 'MIT'
|
|
14
14
|
|
|
@@ -25,20 +25,15 @@ def specification(version, default_adapter, platform = nil)
|
|
|
25
25
|
s.extra_rdoc_files = %w(README.md LICENSE)
|
|
26
26
|
|
|
27
27
|
s.add_dependency *default_adapter
|
|
28
|
-
s.add_dependency 'rouge', '~> 2.
|
|
29
|
-
|
|
30
|
-
s.add_dependency 'nokogiri', '~> 1.6.1'
|
|
31
|
-
else
|
|
32
|
-
s.add_dependency 'nokogiri', '>= 1.6.1', '< 2.0'
|
|
33
|
-
end
|
|
28
|
+
s.add_dependency 'rouge', '~> 2.0'
|
|
29
|
+
s.add_dependency 'nokogiri', '~> 1.7', '>= 1.7.1'
|
|
34
30
|
s.add_dependency 'stringex', '~> 2.6'
|
|
35
|
-
s.add_dependency 'sanitize', '~> 2.1
|
|
31
|
+
s.add_dependency 'sanitize', '~> 2.1'
|
|
36
32
|
s.add_dependency 'github-markup', '~> 1.6'
|
|
37
33
|
s.add_dependency 'gemojione', '~> 3.2'
|
|
38
|
-
s.add_dependency 'twitter-text', '1.14.7'
|
|
39
34
|
|
|
40
35
|
s.add_development_dependency 'org-ruby', '~> 0.9.9'
|
|
41
|
-
s.add_development_dependency 'kramdown', '~> 1.
|
|
36
|
+
s.add_development_dependency 'kramdown', '~> 1.13'
|
|
42
37
|
s.add_development_dependency 'RedCloth', '~> 4.2.9'
|
|
43
38
|
s.add_development_dependency 'mocha', '~> 1.1.0'
|
|
44
39
|
s.add_development_dependency 'shoulda', '~> 3.5.0'
|
|
@@ -64,6 +59,7 @@ def specification(version, default_adapter, platform = nil)
|
|
|
64
59
|
HISTORY.md
|
|
65
60
|
LICENSE
|
|
66
61
|
README.md
|
|
62
|
+
ROADMAP
|
|
67
63
|
Rakefile
|
|
68
64
|
docs/sanitization.md
|
|
69
65
|
gemspec.rb
|
|
@@ -78,7 +74,6 @@ def specification(version, default_adapter, platform = nil)
|
|
|
78
74
|
lib/gollum-lib/filter/code.rb
|
|
79
75
|
lib/gollum-lib/filter/emoji.rb
|
|
80
76
|
lib/gollum-lib/filter/macro.rb
|
|
81
|
-
lib/gollum-lib/filter/metadata.rb
|
|
82
77
|
lib/gollum-lib/filter/plain_text.rb
|
|
83
78
|
lib/gollum-lib/filter/plantuml.rb
|
|
84
79
|
lib/gollum-lib/filter/remote_code.rb
|
|
@@ -87,8 +82,8 @@ def specification(version, default_adapter, platform = nil)
|
|
|
87
82
|
lib/gollum-lib/filter/tags.rb
|
|
88
83
|
lib/gollum-lib/filter/toc.rb
|
|
89
84
|
lib/gollum-lib/filter/wsd.rb
|
|
85
|
+
lib/gollum-lib/filter/yaml.rb
|
|
90
86
|
lib/gollum-lib/git_access.rb
|
|
91
|
-
lib/gollum-lib/gitcode.rb
|
|
92
87
|
lib/gollum-lib/helpers.rb
|
|
93
88
|
lib/gollum-lib/hook.rb
|
|
94
89
|
lib/gollum-lib/macro.rb
|
data/lib/gollum-lib.rb
CHANGED
|
@@ -34,10 +34,6 @@ require File.expand_path('../gollum-lib/markups', __FILE__)
|
|
|
34
34
|
require File.expand_path('../gollum-lib/sanitization', __FILE__)
|
|
35
35
|
require File.expand_path('../gollum-lib/filter', __FILE__)
|
|
36
36
|
|
|
37
|
-
# Set ruby to UTF-8 mode
|
|
38
|
-
# This is required for Ruby 1.8.7 which gollum still supports.
|
|
39
|
-
$KCODE = 'U' if RUBY_VERSION[0, 3] == '1.8'
|
|
40
|
-
|
|
41
37
|
module Gollum
|
|
42
38
|
|
|
43
39
|
def self.assets_path
|
data/lib/gollum-lib/committer.rb
CHANGED
|
@@ -86,10 +86,6 @@ module Gollum
|
|
|
86
86
|
#
|
|
87
87
|
# Returns nothing (modifies the Index in place).
|
|
88
88
|
def add_to_index(dir, name, format, data, allow_same_ext = false)
|
|
89
|
-
# spaces must be dashes
|
|
90
|
-
dir.gsub!(' ', '-')
|
|
91
|
-
name.gsub!(' ', '-')
|
|
92
|
-
|
|
93
89
|
path = @wiki.page_file_name(name, format)
|
|
94
90
|
|
|
95
91
|
dir = '/' if dir.strip.empty?
|
data/lib/gollum-lib/file_view.rb
CHANGED
|
@@ -10,13 +10,12 @@ module Gollum
|
|
|
10
10
|
# set pages to wiki.pages + wiki.files and show_all to true
|
|
11
11
|
def initialize(pages, options = {})
|
|
12
12
|
@pages = pages
|
|
13
|
-
@wiki = @pages.first ? @pages.first.wiki : nil
|
|
14
13
|
@show_all = options[:show_all] || false
|
|
15
14
|
@checked = options[:collapse_tree] ? '' : "checked"
|
|
16
15
|
end
|
|
17
16
|
|
|
18
17
|
def enclose_tree(string)
|
|
19
|
-
|
|
18
|
+
%Q(<ol class="tree">\n) + string + %Q(</ol>)
|
|
20
19
|
end
|
|
21
20
|
|
|
22
21
|
def new_page(page)
|
|
@@ -97,7 +96,7 @@ module Gollum
|
|
|
97
96
|
</li>
|
|
98
97
|
HTML
|
|
99
98
|
|
|
100
|
-
return enclose_tree
|
|
99
|
+
return enclose_tree html
|
|
101
100
|
end
|
|
102
101
|
|
|
103
102
|
sorted_folders = []
|
|
@@ -154,11 +153,8 @@ module Gollum
|
|
|
154
153
|
changed = false
|
|
155
154
|
end
|
|
156
155
|
|
|
157
|
-
|
|
156
|
+
# return the completed html
|
|
157
|
+
enclose_tree html
|
|
158
158
|
end # end render_files
|
|
159
|
-
|
|
160
|
-
def sanitize_html(data)
|
|
161
|
-
@wiki ? @wiki.sanitizer.clean(data) : data
|
|
162
|
-
end
|
|
163
159
|
end # end FileView class
|
|
164
160
|
end # end Gollum module
|
|
@@ -5,7 +5,7 @@ class Gollum::Filter::Tags < Gollum::Filter
|
|
|
5
5
|
# Extract all tags into the tagmap and replace with placeholders.
|
|
6
6
|
def extract(data)
|
|
7
7
|
return data if @markup.format == :txt || @markup.format == :asciidoc
|
|
8
|
-
data.gsub!(/(.?)\[\[(.+?)\]\]([^\[]?)/
|
|
8
|
+
data.gsub!(/(.?)\[\[(.+?)\]\]([^\[]?)/) do
|
|
9
9
|
if Regexp.last_match[1] == "'" && Regexp.last_match[3] != "'"
|
|
10
10
|
"[[#{Regexp.last_match[2]}]]#{Regexp.last_match[3]}"
|
|
11
11
|
elsif Regexp.last_match[2].include?('][')
|
|
@@ -279,13 +279,13 @@ class Gollum::Filter::Tags < Gollum::Filter
|
|
|
279
279
|
parts.reverse! if @markup.reverse_links?
|
|
280
280
|
|
|
281
281
|
name, page_name = *parts.compact.map(&:strip)
|
|
282
|
-
cname =
|
|
282
|
+
cname = page_name ? page_name : name.to_s
|
|
283
283
|
|
|
284
284
|
presence = "absent"
|
|
285
285
|
link_name = cname
|
|
286
286
|
page, extra = find_page_from_name(cname)
|
|
287
287
|
if page
|
|
288
|
-
link_name =
|
|
288
|
+
link_name = page.name
|
|
289
289
|
presence = "present"
|
|
290
290
|
end
|
|
291
291
|
link = ::File.join(@markup.wiki.base_path, page ? page.escaped_url_path : CGI.escape(link_name))
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'yaml'
|
|
2
|
+
# Extract YAML frontmatter from data and build metadata table.
|
|
3
|
+
|
|
4
|
+
class Gollum::Filter::YAML < Gollum::Filter
|
|
5
|
+
|
|
6
|
+
# Regexp thanks to jekyll
|
|
7
|
+
YAML_FRONT_MATTER_REGEXP = %r!\A(---\s*\n.*?\n?)^((---|\.\.\.)\s*$\n?)!m
|
|
8
|
+
|
|
9
|
+
def extract(data)
|
|
10
|
+
data.gsub!(YAML_FRONT_MATTER_REGEXP) do
|
|
11
|
+
@markup.metadata ||= {}
|
|
12
|
+
begin
|
|
13
|
+
frontmatter = ::YAML.safe_load(@markup.sanitize.clean(Regexp.last_match[1]))
|
|
14
|
+
@markup.metadata.merge!(frontmatter) if frontmatter.respond_to?(:keys) && frontmatter.respond_to?(:values)
|
|
15
|
+
rescue ::Psych::SyntaxError, ::Psych::DisallowedClass, ::Psych::BadAlias => error
|
|
16
|
+
@markup.metadata['errors'] ||= []
|
|
17
|
+
@markup.metadata['errors'] << "Failed to load YAML frontmater: #{error.message}"
|
|
18
|
+
end
|
|
19
|
+
''
|
|
20
|
+
end
|
|
21
|
+
data
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def process(data)
|
|
25
|
+
data
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -6,7 +6,7 @@ module Gollum
|
|
|
6
6
|
if @wiki.pages.size > 0
|
|
7
7
|
list_items = @wiki.pages.map do |page|
|
|
8
8
|
if page.url_path.start_with?(toc_root_path)
|
|
9
|
-
path_display = full_path ? page.url_path_display : page.url_path_display.sub(toc_root_path
|
|
9
|
+
path_display = full_path ? page.url_path_display : page.url_path_display.sub(toc_root_path,"").sub(/^\//,'')
|
|
10
10
|
"<li><a href=\"/#{page.url_path}\">#{path_display}</a></li>"
|
|
11
11
|
end
|
|
12
12
|
end
|
data/lib/gollum-lib/markup.rb
CHANGED
|
@@ -31,7 +31,7 @@ module Gollum
|
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
# Register a file
|
|
34
|
+
# Register a file format
|
|
35
35
|
#
|
|
36
36
|
# ext - The file extension
|
|
37
37
|
# name - The name of the markup type
|
|
@@ -99,7 +99,7 @@ module Gollum
|
|
|
99
99
|
@format = format
|
|
100
100
|
@name = name
|
|
101
101
|
|
|
102
|
-
chain = [:
|
|
102
|
+
chain = [:YAML, :PlainText, :Emoji, :TOC, :RemoteCode, :Code, :Sanitize, :WSD, :Tags, :Render]
|
|
103
103
|
|
|
104
104
|
filter_chain = chain.map do |r|
|
|
105
105
|
Gollum::Filter.const_get(r).new(self)
|
data/lib/gollum-lib/markups.rb
CHANGED
|
@@ -3,7 +3,7 @@ module Gollum
|
|
|
3
3
|
class Markup
|
|
4
4
|
|
|
5
5
|
GitHub::Markup::Markdown::MARKDOWN_GEMS['kramdown'] = proc { |content|
|
|
6
|
-
Kramdown::Document.new(content, :auto_ids => false, :
|
|
6
|
+
Kramdown::Document.new(content, :auto_ids => false, :smart_quotes => ["'", "'", '"', '"'].map{|char| char.codepoints.first}).to_html
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
register(:markdown, "Markdown", :regexp => /md|mkdn?|mdown|markdown/)
|
data/lib/gollum-lib/page.rb
CHANGED
|
@@ -17,29 +17,25 @@ module Gollum
|
|
|
17
17
|
# Returns a Page
|
|
18
18
|
attr_accessor :parent_page
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
# Checks a filename against the registered markup extensions
|
|
20
|
+
# Find the Symbol format for the file extension
|
|
22
21
|
#
|
|
23
|
-
#
|
|
22
|
+
# ext - String file extension, like ".md"
|
|
24
23
|
#
|
|
25
|
-
# Returns
|
|
26
|
-
def self.
|
|
27
|
-
return [] unless filename =~ /^(.+)\.([a-zA-Z]\w*)$/i
|
|
28
|
-
pref, ext = Regexp.last_match[1], Regexp.last_match[2]
|
|
29
|
-
|
|
24
|
+
# Returns the Symbol format associated with ext
|
|
25
|
+
def self.parse_extension(ext)
|
|
30
26
|
Gollum::Markup.formats.each_pair do |name, format|
|
|
31
|
-
return
|
|
27
|
+
return name if ext =~ format[:regexp]
|
|
32
28
|
end
|
|
33
|
-
|
|
29
|
+
nil
|
|
34
30
|
end
|
|
35
31
|
|
|
36
32
|
# Checks if a filename has a valid, registered extension
|
|
37
33
|
#
|
|
38
34
|
# filename - String filename, like "Home.md".
|
|
39
35
|
#
|
|
40
|
-
# Returns
|
|
41
|
-
def self.
|
|
42
|
-
self.
|
|
36
|
+
# Returns true or false.
|
|
37
|
+
def self.valid_extension?(filename)
|
|
38
|
+
!!self.parse_extension(::File.extname(filename))
|
|
43
39
|
end
|
|
44
40
|
|
|
45
41
|
# Checks if a filename has a valid extension understood by GitHub::Markup.
|
|
@@ -48,10 +44,9 @@ module Gollum
|
|
|
48
44
|
#
|
|
49
45
|
# filename - String filename, like "Home.md".
|
|
50
46
|
#
|
|
51
|
-
# Returns
|
|
47
|
+
# Returns true or false.
|
|
52
48
|
def self.valid_page_name?(filename)
|
|
53
|
-
|
|
54
|
-
filename =~ /^_/ ? false : match
|
|
49
|
+
!(filename =~ /^_/) && self.valid_extension?(filename)
|
|
55
50
|
end
|
|
56
51
|
|
|
57
52
|
# Public: The format of a given filename.
|
|
@@ -60,15 +55,15 @@ module Gollum
|
|
|
60
55
|
#
|
|
61
56
|
# Returns the Symbol format of the page; one of the registered format types
|
|
62
57
|
def self.format_for(filename)
|
|
63
|
-
self.
|
|
58
|
+
self.parse_extension(::File.extname(filename))
|
|
64
59
|
end
|
|
65
60
|
|
|
66
61
|
# Reusable filter to turn a filename (without path) into a canonical name.
|
|
67
|
-
# Strips extension,
|
|
62
|
+
# Strips extension, convert to string if possible.
|
|
68
63
|
#
|
|
69
64
|
# Returns the filtered String.
|
|
70
65
|
def self.canonicalize_filename(filename)
|
|
71
|
-
strip_filename(filename
|
|
66
|
+
self.strip_filename(filename.to_s)
|
|
72
67
|
end
|
|
73
68
|
|
|
74
69
|
# Reusable filter to strip extension and path from filename
|
|
@@ -107,8 +102,7 @@ module Gollum
|
|
|
107
102
|
self.class.strip_filename(filename)
|
|
108
103
|
end
|
|
109
104
|
|
|
110
|
-
# Public: The canonical page name without extension
|
|
111
|
-
# to spaces.
|
|
105
|
+
# Public: The canonical page name without extension.
|
|
112
106
|
#
|
|
113
107
|
# Returns the String name.
|
|
114
108
|
def name
|
|
@@ -116,8 +110,7 @@ module Gollum
|
|
|
116
110
|
end
|
|
117
111
|
|
|
118
112
|
# Public: The title will be constructed from the
|
|
119
|
-
# filename by stripping the extension
|
|
120
|
-
# spaces.
|
|
113
|
+
# filename by stripping the extension.
|
|
121
114
|
#
|
|
122
115
|
# Returns the fully sanitized String title.
|
|
123
116
|
def title
|
|
@@ -147,7 +140,7 @@ module Gollum
|
|
|
147
140
|
''
|
|
148
141
|
end
|
|
149
142
|
|
|
150
|
-
path <<
|
|
143
|
+
path << self.name
|
|
151
144
|
path
|
|
152
145
|
end
|
|
153
146
|
|
|
@@ -155,14 +148,14 @@ module Gollum
|
|
|
155
148
|
#
|
|
156
149
|
# Returns the String url_path
|
|
157
150
|
def url_path_display
|
|
158
|
-
url_path
|
|
151
|
+
url_path
|
|
159
152
|
end
|
|
160
153
|
|
|
161
154
|
# Public: Defines title for page.rb
|
|
162
155
|
#
|
|
163
156
|
# Returns the String title
|
|
164
157
|
def url_path_title
|
|
165
|
-
metadata_title ||
|
|
158
|
+
metadata_title || url_path
|
|
166
159
|
end
|
|
167
160
|
|
|
168
161
|
# Public: Metadata title
|
|
@@ -179,6 +172,13 @@ module Gollum
|
|
|
179
172
|
nil
|
|
180
173
|
end
|
|
181
174
|
|
|
175
|
+
# Public: Whether or not to display the metadata
|
|
176
|
+
def display_metadata?
|
|
177
|
+
return false if metadata.empty? || (metadata.size == 1 && metadata['title'])
|
|
178
|
+
return false if metadata['display_metadata'] == false
|
|
179
|
+
@wiki.display_metadata
|
|
180
|
+
end
|
|
181
|
+
|
|
182
182
|
# Public: The url_path, but CGI escaped.
|
|
183
183
|
#
|
|
184
184
|
# Returns the String url_path
|
|
@@ -224,7 +224,7 @@ module Gollum
|
|
|
224
224
|
if @formatted_data && @doc then
|
|
225
225
|
yield @doc if block_given?
|
|
226
226
|
else
|
|
227
|
-
@formatted_data =
|
|
227
|
+
@formatted_data = markup.render(historical?, encoding, include_levels) do |doc|
|
|
228
228
|
@doc = doc
|
|
229
229
|
yield doc if block_given?
|
|
230
230
|
end
|
|
@@ -240,16 +240,16 @@ module Gollum
|
|
|
240
240
|
# Returns the String data.
|
|
241
241
|
def toc_data
|
|
242
242
|
return @parent_page.toc_data if @parent_page and @sub_page
|
|
243
|
-
formatted_data if
|
|
244
|
-
|
|
243
|
+
formatted_data if markup.toc == nil
|
|
244
|
+
markup.toc
|
|
245
245
|
end
|
|
246
246
|
|
|
247
247
|
# Public: Embedded metadata.
|
|
248
248
|
#
|
|
249
249
|
# Returns Hash of metadata.
|
|
250
250
|
def metadata
|
|
251
|
-
formatted_data if
|
|
252
|
-
|
|
251
|
+
formatted_data if markup.metadata == nil
|
|
252
|
+
markup.metadata || {}
|
|
253
253
|
end
|
|
254
254
|
|
|
255
255
|
# Public: The format of the page.
|
|
@@ -262,8 +262,8 @@ module Gollum
|
|
|
262
262
|
# Gets the Gollum::Markup instance that will render this page's content.
|
|
263
263
|
#
|
|
264
264
|
# Returns a Gollum::Markup instance.
|
|
265
|
-
def
|
|
266
|
-
@
|
|
265
|
+
def markup
|
|
266
|
+
@markup ||= @wiki.markup_classes[format].new(self)
|
|
267
267
|
end
|
|
268
268
|
|
|
269
269
|
# Public: The current version of the page.
|
|
@@ -331,33 +331,6 @@ module Gollum
|
|
|
331
331
|
!!@historical
|
|
332
332
|
end
|
|
333
333
|
|
|
334
|
-
#########################################################################
|
|
335
|
-
#
|
|
336
|
-
# Class Methods
|
|
337
|
-
#
|
|
338
|
-
#########################################################################
|
|
339
|
-
|
|
340
|
-
# Convert a human page name into a canonical page name.
|
|
341
|
-
#
|
|
342
|
-
# name - The String human page name.
|
|
343
|
-
# char_white_sub - Substitution for whitespace
|
|
344
|
-
# char_other_sub - Substitution for other special chars
|
|
345
|
-
#
|
|
346
|
-
# Examples
|
|
347
|
-
#
|
|
348
|
-
# Page.cname("Bilbo Baggins")
|
|
349
|
-
# # => 'Bilbo-Baggins'
|
|
350
|
-
#
|
|
351
|
-
# Page.cname("Bilbo Baggins",'_')
|
|
352
|
-
# # => 'Bilbo_Baggins'
|
|
353
|
-
#
|
|
354
|
-
# Returns the String canonical name.
|
|
355
|
-
def self.cname(name, char_white_sub = '-', char_other_sub = '-')
|
|
356
|
-
name.respond_to?(:gsub) ?
|
|
357
|
-
name.gsub(%r(\s), char_white_sub).gsub(%r([<>+]), char_other_sub) :
|
|
358
|
-
''
|
|
359
|
-
end
|
|
360
|
-
|
|
361
334
|
# Convert a format Symbol into an extension String.
|
|
362
335
|
#
|
|
363
336
|
# format - The format Symbol.
|
|
@@ -413,12 +386,13 @@ module Gollum
|
|
|
413
386
|
|
|
414
387
|
checked_dir = BlobEntry.normalize_dir(checked_dir)
|
|
415
388
|
checked_dir = '' if exact && checked_dir.nil?
|
|
416
|
-
|
|
389
|
+
query = checked_dir ? ::File.join(checked_dir, name) : name
|
|
417
390
|
|
|
418
391
|
map.each do |entry|
|
|
419
|
-
next if entry.name.to_s.empty?
|
|
420
|
-
|
|
421
|
-
|
|
392
|
+
next if entry.name.to_s.empty? || !self.class.valid_extension?(entry.name)
|
|
393
|
+
entry_name = ::File.extname(name).empty? ? Page.canonicalize_filename(entry.name) : entry.name
|
|
394
|
+
path = checked_dir ? ::File.join(entry.dir, entry_name) : entry_name
|
|
395
|
+
next unless query.downcase == path.downcase
|
|
422
396
|
return entry.page(@wiki, @version)
|
|
423
397
|
end
|
|
424
398
|
|
|
@@ -451,22 +425,6 @@ module Gollum
|
|
|
451
425
|
end
|
|
452
426
|
end
|
|
453
427
|
|
|
454
|
-
# Compare the canonicalized versions of the two names.
|
|
455
|
-
#
|
|
456
|
-
# name - The human or canonical String page name.
|
|
457
|
-
# path - the String path on disk (including file extension).
|
|
458
|
-
#
|
|
459
|
-
# Returns a Boolean.
|
|
460
|
-
def page_match(name, path)
|
|
461
|
-
if (match = self.class.valid_filename?(path))
|
|
462
|
-
@wiki.ws_subs.each do |sub|
|
|
463
|
-
return true if Page.cname(name).downcase == Page.cname(match, sub).downcase
|
|
464
|
-
end
|
|
465
|
-
end
|
|
466
|
-
false
|
|
467
|
-
end
|
|
468
|
-
|
|
469
|
-
|
|
470
428
|
# Loads sub pages. Sub page names (footers, headers, sidebars) are prefixed with
|
|
471
429
|
# an underscore to distinguish them from other Pages. If there is not one within
|
|
472
430
|
# the current directory, starts walking up the directory tree to try and find one
|
|
@@ -495,9 +453,7 @@ module Gollum
|
|
|
495
453
|
end
|
|
496
454
|
|
|
497
455
|
if subpageblob
|
|
498
|
-
|
|
499
|
-
subpage.parent_page = self
|
|
500
|
-
instance_variable_set("@#{subpagename}", subpage)
|
|
456
|
+
instance_variable_set("@#{subpagename}", subpageblob.page(@wiki, @version) )
|
|
501
457
|
break
|
|
502
458
|
end
|
|
503
459
|
|
data/lib/gollum-lib/version.rb
CHANGED
data/lib/gollum-lib/wiki.rb
CHANGED
|
@@ -22,9 +22,6 @@ module Gollum
|
|
|
22
22
|
# Sets the default email for commits.
|
|
23
23
|
attr_writer :default_committer_email
|
|
24
24
|
|
|
25
|
-
# Array of chars to substitute whitespace for when trying to locate file in git repo.
|
|
26
|
-
attr_writer :default_ws_subs
|
|
27
|
-
|
|
28
25
|
# Sets sanitization options. Set to false to deactivate
|
|
29
26
|
# sanitization altogether.
|
|
30
27
|
attr_writer :sanitization
|
|
@@ -118,10 +115,6 @@ module Gollum
|
|
|
118
115
|
@default_committer_email || 'anon@anon.com'
|
|
119
116
|
end
|
|
120
117
|
|
|
121
|
-
def default_ws_subs
|
|
122
|
-
@default_ws_subs || ['_', '-']
|
|
123
|
-
end
|
|
124
|
-
|
|
125
118
|
def default_options
|
|
126
119
|
@default_options || {}
|
|
127
120
|
end
|
|
@@ -144,9 +137,6 @@ module Gollum
|
|
|
144
137
|
# Gets the String directory in which all page files reside.
|
|
145
138
|
attr_reader :page_file_dir
|
|
146
139
|
|
|
147
|
-
# Gets the Array of chars to sub for ws in filenames.
|
|
148
|
-
attr_reader :ws_subs
|
|
149
|
-
|
|
150
140
|
# Gets the boolean live preview value.
|
|
151
141
|
attr_reader :live_preview
|
|
152
142
|
|
|
@@ -158,6 +148,10 @@ module Gollum
|
|
|
158
148
|
# Defaults to false
|
|
159
149
|
attr_reader :h1_title
|
|
160
150
|
|
|
151
|
+
# Whether or not to render a page's metadata on the page
|
|
152
|
+
# Defaults to true
|
|
153
|
+
attr_reader :display_metadata
|
|
154
|
+
|
|
161
155
|
# Gets the custom index page for / and subdirs (e.g. foo/)
|
|
162
156
|
attr_reader :index_page
|
|
163
157
|
|
|
@@ -186,7 +180,6 @@ module Gollum
|
|
|
186
180
|
# :sanitization - An instance of Sanitization.
|
|
187
181
|
# :page_file_dir - String the directory in which all page files reside
|
|
188
182
|
# :ref - String the repository ref to retrieve pages from
|
|
189
|
-
# :ws_subs - Array of chars to sub for ws in filenames.
|
|
190
183
|
# :mathjax - Set to false to disable mathjax.
|
|
191
184
|
# :user_icons - Enable user icons on the history page. [gravatar, identicon, none].
|
|
192
185
|
# Default: none
|
|
@@ -197,6 +190,7 @@ module Gollum
|
|
|
197
190
|
# :emoji - Parse and interpret emoji tags (e.g. :heart:).
|
|
198
191
|
# :h1_title - Concatenate all h1's on a page to form the
|
|
199
192
|
# page title.
|
|
193
|
+
# :display_metadata - Whether or not to render a page's metadata on the page. Default: true
|
|
200
194
|
# :index_page - The default page to retrieve or create if the
|
|
201
195
|
# a directory is accessed.
|
|
202
196
|
# :bar_side - Where the sidebar should be displayed, may be:
|
|
@@ -233,7 +227,6 @@ module Gollum
|
|
|
233
227
|
@repo = @access.repo
|
|
234
228
|
@ref = options.fetch :ref, self.class.default_ref
|
|
235
229
|
@sanitization = options.fetch :sanitization, self.class.sanitization
|
|
236
|
-
@ws_subs = options.fetch :ws_subs, self.class.default_ws_subs
|
|
237
230
|
@history_sanitization = options.fetch :history_sanitization, self.class.history_sanitization
|
|
238
231
|
@live_preview = options.fetch :live_preview, true
|
|
239
232
|
@universal_toc = options.fetch :universal_toc, false
|
|
@@ -243,6 +236,7 @@ module Gollum
|
|
|
243
236
|
@css = options.fetch :css, false
|
|
244
237
|
@emoji = options.fetch :emoji, false
|
|
245
238
|
@h1_title = options.fetch :h1_title, false
|
|
239
|
+
@display_metadata = options.fetch :display_metadata, true
|
|
246
240
|
@index_page = options.fetch :index_page, 'Home'
|
|
247
241
|
@bar_side = options.fetch :sidebar, :right
|
|
248
242
|
@user_icons = ['gravatar', 'identicon'].include?(options[:user_icons]) ?
|
|
@@ -250,7 +244,7 @@ module Gollum
|
|
|
250
244
|
@allow_uploads = options.fetch :allow_uploads, false
|
|
251
245
|
@per_page_uploads = options.fetch :per_page_uploads, false
|
|
252
246
|
@filter_chain = options.fetch :filter_chain,
|
|
253
|
-
[:
|
|
247
|
+
[:YAML, :PlainText, :TOC, :RemoteCode, :Code, :Macro, :Emoji, :Sanitize, :WSD, :PlantUML, :Tags, :Render]
|
|
254
248
|
@filter_chain.delete(:Emoji) unless options.fetch :emoji, false
|
|
255
249
|
end
|
|
256
250
|
|
|
@@ -310,8 +304,8 @@ module Gollum
|
|
|
310
304
|
def preview_page(name, data, format)
|
|
311
305
|
page = @page_class.new(self)
|
|
312
306
|
ext = @page_class.format_to_ext(format.to_sym)
|
|
313
|
-
|
|
314
|
-
blob = OpenStruct.new(:name =>
|
|
307
|
+
filename = "#{name}.#{ext}"
|
|
308
|
+
blob = OpenStruct.new(:name => filename, :data => data, :is_symlink => false)
|
|
315
309
|
page.populate(blob)
|
|
316
310
|
page.version = @access.commit(@ref)
|
|
317
311
|
page
|
|
@@ -337,21 +331,15 @@ module Gollum
|
|
|
337
331
|
# Returns the String SHA1 of the newly written version, or the
|
|
338
332
|
# Gollum::Committer instance if this is part of a batch update.
|
|
339
333
|
def write_page(name, format, data, commit = {}, dir = '')
|
|
340
|
-
|
|
341
|
-
sanitized_name = name.gsub(' ', '-')
|
|
342
|
-
sanitized_dir = dir.gsub(' ', '-')
|
|
343
|
-
sanitized_dir = ::File.join([@page_file_dir, sanitized_dir].compact)
|
|
334
|
+
sanitized_dir = ::File.join([@page_file_dir, dir].compact)
|
|
344
335
|
|
|
345
336
|
multi_commit = !!commit[:committer]
|
|
346
337
|
committer = multi_commit ? commit[:committer] : Committer.new(self, commit)
|
|
347
|
-
|
|
348
|
-
filename = Gollum::Page.cname(sanitized_name)
|
|
349
|
-
|
|
350
|
-
committer.add_to_index(sanitized_dir, filename, format, data)
|
|
338
|
+
committer.add_to_index(sanitized_dir, name, format, data)
|
|
351
339
|
|
|
352
340
|
committer.after_commit do |index, _sha|
|
|
353
341
|
@access.refresh
|
|
354
|
-
index.update_working_dir(sanitized_dir,
|
|
342
|
+
index.update_working_dir(sanitized_dir, name, format)
|
|
355
343
|
end
|
|
356
344
|
|
|
357
345
|
multi_commit ? committer : committer.commit
|
|
@@ -436,7 +424,7 @@ module Gollum
|
|
|
436
424
|
dir = ::File.dirname(page.path)
|
|
437
425
|
dir = '' if dir == '.'
|
|
438
426
|
filename = (rename = page.name != name) ?
|
|
439
|
-
|
|
427
|
+
name : page.filename_stripped
|
|
440
428
|
|
|
441
429
|
multi_commit = !!commit[:committer]
|
|
442
430
|
committer = multi_commit ? commit[:committer] : Committer.new(self, commit)
|
|
@@ -651,9 +639,9 @@ module Gollum
|
|
|
651
639
|
results[file_name] = count.to_i
|
|
652
640
|
end
|
|
653
641
|
|
|
654
|
-
# Use
|
|
642
|
+
# Use ls_files '*query*' to search for file names. Grep only searches file content.
|
|
655
643
|
# Spaces are converted to dashes when saving pages to disk.
|
|
656
|
-
@repo.git.ls_files(query
|
|
644
|
+
@repo.git.ls_files(query, options).each do |path|
|
|
657
645
|
# Remove ext only from known extensions.
|
|
658
646
|
file_name = Page::valid_page_name?(path) ? path.chomp(::File.extname(path)) : path
|
|
659
647
|
# If there's not already a result for file_name then
|
|
@@ -848,7 +836,7 @@ module Gollum
|
|
|
848
836
|
#
|
|
849
837
|
# Returns the String filename.
|
|
850
838
|
def page_file_name(name, format)
|
|
851
|
-
name
|
|
839
|
+
"#{name}.#{@page_class.format_to_ext(format)}"
|
|
852
840
|
end
|
|
853
841
|
|
|
854
842
|
# Fill an array with a list of pages.
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gollum-lib
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 5.0.a.1
|
|
5
5
|
platform: java
|
|
6
6
|
authors:
|
|
7
7
|
- Tom Preston-Werner
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2017-04-08 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: gollum-rjgit_adapter
|
|
@@ -31,34 +31,34 @@ dependencies:
|
|
|
31
31
|
requirements:
|
|
32
32
|
- - "~>"
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version: '2.
|
|
34
|
+
version: '2.0'
|
|
35
35
|
type: :runtime
|
|
36
36
|
prerelease: false
|
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
38
38
|
requirements:
|
|
39
39
|
- - "~>"
|
|
40
40
|
- !ruby/object:Gem::Version
|
|
41
|
-
version: '2.
|
|
41
|
+
version: '2.0'
|
|
42
42
|
- !ruby/object:Gem::Dependency
|
|
43
43
|
name: nokogiri
|
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
|
45
45
|
requirements:
|
|
46
|
-
- - "
|
|
46
|
+
- - "~>"
|
|
47
47
|
- !ruby/object:Gem::Version
|
|
48
|
-
version: 1.
|
|
49
|
-
- - "
|
|
48
|
+
version: '1.7'
|
|
49
|
+
- - ">="
|
|
50
50
|
- !ruby/object:Gem::Version
|
|
51
|
-
version:
|
|
51
|
+
version: 1.7.1
|
|
52
52
|
type: :runtime
|
|
53
53
|
prerelease: false
|
|
54
54
|
version_requirements: !ruby/object:Gem::Requirement
|
|
55
55
|
requirements:
|
|
56
|
-
- - "
|
|
56
|
+
- - "~>"
|
|
57
57
|
- !ruby/object:Gem::Version
|
|
58
|
-
version: 1.
|
|
59
|
-
- - "
|
|
58
|
+
version: '1.7'
|
|
59
|
+
- - ">="
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
61
|
+
version: 1.7.1
|
|
62
62
|
- !ruby/object:Gem::Dependency
|
|
63
63
|
name: stringex
|
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -79,20 +79,14 @@ dependencies:
|
|
|
79
79
|
requirements:
|
|
80
80
|
- - "~>"
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 2.1
|
|
83
|
-
- - ">="
|
|
84
|
-
- !ruby/object:Gem::Version
|
|
85
|
-
version: 2.1.1
|
|
82
|
+
version: '2.1'
|
|
86
83
|
type: :runtime
|
|
87
84
|
prerelease: false
|
|
88
85
|
version_requirements: !ruby/object:Gem::Requirement
|
|
89
86
|
requirements:
|
|
90
87
|
- - "~>"
|
|
91
88
|
- !ruby/object:Gem::Version
|
|
92
|
-
version: 2.1
|
|
93
|
-
- - ">="
|
|
94
|
-
- !ruby/object:Gem::Version
|
|
95
|
-
version: 2.1.1
|
|
89
|
+
version: '2.1'
|
|
96
90
|
- !ruby/object:Gem::Dependency
|
|
97
91
|
name: github-markup
|
|
98
92
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -121,20 +115,6 @@ dependencies:
|
|
|
121
115
|
- - "~>"
|
|
122
116
|
- !ruby/object:Gem::Version
|
|
123
117
|
version: '3.2'
|
|
124
|
-
- !ruby/object:Gem::Dependency
|
|
125
|
-
name: twitter-text
|
|
126
|
-
requirement: !ruby/object:Gem::Requirement
|
|
127
|
-
requirements:
|
|
128
|
-
- - '='
|
|
129
|
-
- !ruby/object:Gem::Version
|
|
130
|
-
version: 1.14.7
|
|
131
|
-
type: :runtime
|
|
132
|
-
prerelease: false
|
|
133
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
134
|
-
requirements:
|
|
135
|
-
- - '='
|
|
136
|
-
- !ruby/object:Gem::Version
|
|
137
|
-
version: 1.14.7
|
|
138
118
|
- !ruby/object:Gem::Dependency
|
|
139
119
|
name: org-ruby
|
|
140
120
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -155,14 +135,14 @@ dependencies:
|
|
|
155
135
|
requirements:
|
|
156
136
|
- - "~>"
|
|
157
137
|
- !ruby/object:Gem::Version
|
|
158
|
-
version: 1.
|
|
138
|
+
version: '1.13'
|
|
159
139
|
type: :development
|
|
160
140
|
prerelease: false
|
|
161
141
|
version_requirements: !ruby/object:Gem::Requirement
|
|
162
142
|
requirements:
|
|
163
143
|
- - "~>"
|
|
164
144
|
- !ruby/object:Gem::Version
|
|
165
|
-
version: 1.
|
|
145
|
+
version: '1.13'
|
|
166
146
|
- !ruby/object:Gem::Dependency
|
|
167
147
|
name: RedCloth
|
|
168
148
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -399,6 +379,7 @@ files:
|
|
|
399
379
|
- HISTORY.md
|
|
400
380
|
- LICENSE
|
|
401
381
|
- README.md
|
|
382
|
+
- ROADMAP
|
|
402
383
|
- Rakefile
|
|
403
384
|
- docs/sanitization.md
|
|
404
385
|
- gemspec.rb
|
|
@@ -413,7 +394,6 @@ files:
|
|
|
413
394
|
- lib/gollum-lib/filter/code.rb
|
|
414
395
|
- lib/gollum-lib/filter/emoji.rb
|
|
415
396
|
- lib/gollum-lib/filter/macro.rb
|
|
416
|
-
- lib/gollum-lib/filter/metadata.rb
|
|
417
397
|
- lib/gollum-lib/filter/plain_text.rb
|
|
418
398
|
- lib/gollum-lib/filter/plantuml.rb
|
|
419
399
|
- lib/gollum-lib/filter/remote_code.rb
|
|
@@ -422,8 +402,8 @@ files:
|
|
|
422
402
|
- lib/gollum-lib/filter/tags.rb
|
|
423
403
|
- lib/gollum-lib/filter/toc.rb
|
|
424
404
|
- lib/gollum-lib/filter/wsd.rb
|
|
405
|
+
- lib/gollum-lib/filter/yaml.rb
|
|
425
406
|
- lib/gollum-lib/git_access.rb
|
|
426
|
-
- lib/gollum-lib/gitcode.rb
|
|
427
407
|
- lib/gollum-lib/helpers.rb
|
|
428
408
|
- lib/gollum-lib/hook.rb
|
|
429
409
|
- lib/gollum-lib/macro.rb
|
|
@@ -452,15 +432,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
452
432
|
requirements:
|
|
453
433
|
- - ">="
|
|
454
434
|
- !ruby/object:Gem::Version
|
|
455
|
-
version: '1
|
|
435
|
+
version: '2.1'
|
|
456
436
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
457
437
|
requirements:
|
|
458
|
-
- - "
|
|
438
|
+
- - ">"
|
|
459
439
|
- !ruby/object:Gem::Version
|
|
460
|
-
version:
|
|
440
|
+
version: 1.3.1
|
|
461
441
|
requirements: []
|
|
462
442
|
rubyforge_project: gollum-lib
|
|
463
|
-
rubygems_version: 2.
|
|
443
|
+
rubygems_version: 2.6.11
|
|
464
444
|
signing_key:
|
|
465
445
|
specification_version: 2
|
|
466
446
|
summary: A simple, Git-powered wiki.
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Extract metadata for data and build metadata table. Metadata consists of
|
|
2
|
-
# key/value pairs in "key:value" format found between markers. Each
|
|
3
|
-
# key/value pair must be on its own line. Internal whitespace in keys and
|
|
4
|
-
# values is preserved, but external whitespace is ignored.
|
|
5
|
-
#
|
|
6
|
-
# Because ri and ruby 1.8.7 are awesome, the markers can't
|
|
7
|
-
# be included in this documentation without triggering
|
|
8
|
-
# `Unhandled special: Special: type=17`
|
|
9
|
-
# Please read the source code for the exact markers
|
|
10
|
-
class Gollum::Filter::Metadata < Gollum::Filter
|
|
11
|
-
def extract(data)
|
|
12
|
-
# The markers are `<!-- ---` and `-->`
|
|
13
|
-
data.gsub(/\<\!--+\s+---(.*?)--+\>/m) do
|
|
14
|
-
@markup.metadata ||= {}
|
|
15
|
-
# Split untrusted input on newlines, then remove bits that look like
|
|
16
|
-
# HTML elements before parsing each line.
|
|
17
|
-
Regexp.last_match[1].split("\n").each do |line|
|
|
18
|
-
line.gsub!(/<[^>]*>/, '')
|
|
19
|
-
k, v = line.split(':', 2)
|
|
20
|
-
@markup.metadata[k.strip] = (v ? v.strip : '') if k
|
|
21
|
-
end
|
|
22
|
-
''
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def process(data)
|
|
27
|
-
data
|
|
28
|
-
end
|
|
29
|
-
end
|
data/lib/gollum-lib/gitcode.rb
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# ~*~ encoding: utf-8 ~*~
|
|
2
|
-
require 'net/http'
|
|
3
|
-
require 'net/https' # ruby 1.8.7 fix, remove at upgrade
|
|
4
|
-
require 'uri'
|
|
5
|
-
require 'open-uri'
|
|
6
|
-
|
|
7
|
-
module Gollum
|
|
8
|
-
class Gitcode
|
|
9
|
-
def initialize(path)
|
|
10
|
-
raise(ArgumentError, 'path is nil or empty') if path.nil? or path.empty?
|
|
11
|
-
|
|
12
|
-
@uri = URI::HTTP.build({
|
|
13
|
-
:path => self.unchomp(path),
|
|
14
|
-
:host => 'raw.github.com',
|
|
15
|
-
:scheme => 'https',
|
|
16
|
-
:port => 443 })
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def contents
|
|
20
|
-
@contents ||= self.req @uri
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def unchomp(p)
|
|
24
|
-
return p if p.nil?
|
|
25
|
-
p[0] == '/' ? p : ('/' + p)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def req(uri, cut = 1)
|
|
29
|
-
return "Too many redirects or retries" if cut >= 10
|
|
30
|
-
http = Net::HTTP.new uri.host, uri.port
|
|
31
|
-
http.use_ssl = true
|
|
32
|
-
resp = http.get uri.path, {
|
|
33
|
-
'Accept' => 'text/plain',
|
|
34
|
-
'Cache-Control' => 'no-cache',
|
|
35
|
-
'Connection' => 'keep-alive',
|
|
36
|
-
'Host' => uri.host,
|
|
37
|
-
'User-Agent' => 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0'
|
|
38
|
-
}
|
|
39
|
-
code = resp.code.to_i
|
|
40
|
-
return resp.body if code == 200
|
|
41
|
-
return "Not Found" if code == 404
|
|
42
|
-
return "Unhandled Response Code #{code}" unless code == 304 or not resp.header['location'].nil?
|
|
43
|
-
loc = URI.parse resp.header['location']
|
|
44
|
-
uri2 = loc.relative?() ? (uri + loc) : loc # overloads (+)
|
|
45
|
-
return req uri2, (cut + 1)
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|