gollum-lib 1.0.9 → 2.0.0
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.
Potentially problematic release.
This version of gollum-lib might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +0 -1
- data/README.md +1 -1
- data/gollum-lib.gemspec +13 -5
- data/lib/gollum-lib.rb +2 -2
- data/lib/gollum-lib/filter.rb +78 -0
- data/lib/gollum-lib/filter/code.rb +123 -0
- data/lib/gollum-lib/filter/metadata.rb +27 -0
- data/lib/gollum-lib/filter/plain_text.rb +15 -0
- data/lib/gollum-lib/filter/remote_code.rb +61 -0
- data/lib/gollum-lib/filter/render.rb +18 -0
- data/lib/gollum-lib/filter/sanitize.rb +16 -0
- data/lib/gollum-lib/filter/tags.rb +292 -0
- data/lib/gollum-lib/filter/toc.rb +45 -0
- data/lib/gollum-lib/filter/wsd.rb +54 -0
- data/lib/gollum-lib/markup.rb +41 -621
- data/lib/gollum-lib/markups.rb +1 -0
- data/lib/gollum-lib/wiki.rb +85 -0
- metadata +16 -8
- data/lib/gollum-lib/remote_code.rb +0 -39
- data/lib/gollum-lib/web_sequence_diagram.rb +0 -44
data/lib/gollum-lib/markups.rb
CHANGED
data/lib/gollum-lib/wiki.rb
CHANGED
@@ -150,6 +150,12 @@ module Gollum
|
|
150
150
|
|
151
151
|
# Gets side on which the sidebar should be shown
|
152
152
|
attr_reader :bar_side
|
153
|
+
|
154
|
+
# An array of symbols which refer to classes under Gollum::Filter,
|
155
|
+
# each of which is an element in the "filtering chain". See
|
156
|
+
# the documentation for Gollum::Filter for more on how this chain
|
157
|
+
# works, and what filter classes need to implement.
|
158
|
+
attr_reader :filter_chain
|
153
159
|
|
154
160
|
# Public: Initialize a new Gollum Repo.
|
155
161
|
#
|
@@ -183,6 +189,10 @@ module Gollum
|
|
183
189
|
# - :left
|
184
190
|
# - :right
|
185
191
|
# :allow_uploads - Set to true to allow file uploads.
|
192
|
+
# :per_page_uploads - Whether uploads should be stored in a central
|
193
|
+
# 'uploads' directory, or in a directory named for
|
194
|
+
# the page they were uploaded to.
|
195
|
+
# :filter_chain - Override the default filter chain with your own.
|
186
196
|
#
|
187
197
|
# Returns a fresh Gollum::Repo.
|
188
198
|
def initialize(path, options = {})
|
@@ -223,6 +233,9 @@ module Gollum
|
|
223
233
|
@user_icons = ['gravatar', 'identicon'].include?( options[:user_icons] ) ?
|
224
234
|
options[:user_icons] : 'none'
|
225
235
|
@allow_uploads = options.fetch :allow_uploads, false
|
236
|
+
@per_page_uploads = options.fetch :per_page_uploads, false
|
237
|
+
@filter_chain = options.fetch :filter_chain,
|
238
|
+
[:Metadata, :PlainText, :TOC, :RemoteCode, :Code, :Sanitize, :WSD, :Tags, :Render]
|
226
239
|
end
|
227
240
|
|
228
241
|
# Public: check whether the wiki's git repo exists on the filesystem.
|
@@ -642,6 +655,74 @@ module Gollum
|
|
642
655
|
@history_sanitizer ||= options.to_sanitize
|
643
656
|
end
|
644
657
|
end
|
658
|
+
|
659
|
+
# Public: Add an additional link to the filter chain.
|
660
|
+
#
|
661
|
+
# name - A symbol which represents the name of a class under the
|
662
|
+
# Gollum::Render namespace to insert into the chain.
|
663
|
+
#
|
664
|
+
# loc - A "location specifier" -- that is, where to put the new
|
665
|
+
# filter in the chain. This can be one of `:first`, `:last`,
|
666
|
+
# `:before => :SomeElement`, or `:after => :SomeElement`, where
|
667
|
+
# `:SomeElement` (if specified) is a symbol already in the
|
668
|
+
# filter chain. A `:before` or `:after` which references a
|
669
|
+
# filter that doesn't exist will cause `ArgumentError` to be
|
670
|
+
# raised.
|
671
|
+
#
|
672
|
+
# Returns nothing.
|
673
|
+
def add_filter(name, loc)
|
674
|
+
unless name.is_a? Symbol
|
675
|
+
raise ArgumentError,
|
676
|
+
"Invalid filter name #{name.inspect} (must be a symbol)"
|
677
|
+
end
|
678
|
+
|
679
|
+
case loc
|
680
|
+
when :first
|
681
|
+
@filter_chain.unshift(name)
|
682
|
+
when :last
|
683
|
+
@filter_chain.push(name)
|
684
|
+
when Hash
|
685
|
+
if loc.length != 1
|
686
|
+
raise ArgumentError,
|
687
|
+
"Invalid location specifier"
|
688
|
+
end
|
689
|
+
if ([:before, :after] && loc.keys).empty?
|
690
|
+
raise ArgumentError,
|
691
|
+
"Invalid location specifier"
|
692
|
+
end
|
693
|
+
|
694
|
+
next_to = loc.values.first
|
695
|
+
relative = loc.keys.first
|
696
|
+
|
697
|
+
i = @filter_chain.index(next_to)
|
698
|
+
if i.nil?
|
699
|
+
raise ArgumentError,
|
700
|
+
"Unknown filter #{next_to.inspect}"
|
701
|
+
end
|
702
|
+
|
703
|
+
i += 1 if relative == :after
|
704
|
+
@filter_chain.insert(i, name)
|
705
|
+
else
|
706
|
+
raise ArgumentError,
|
707
|
+
"Invalid location specifier"
|
708
|
+
end
|
709
|
+
end
|
710
|
+
|
711
|
+
# Remove the named filter from the filter chain.
|
712
|
+
#
|
713
|
+
# Returns nothing. Raises `ArgumentError` if the named filter doesn't
|
714
|
+
# exist in the chain.
|
715
|
+
def remove_filter(name)
|
716
|
+
unless name.is_a? Symbol
|
717
|
+
raise ArgumentError,
|
718
|
+
"Invalid filter name #{name.inspect} (must be a symbol)"
|
719
|
+
end
|
720
|
+
|
721
|
+
unless @filter_chain.delete(name)
|
722
|
+
raise ArgumentError,
|
723
|
+
"#{name.inspect} not found in filter chain"
|
724
|
+
end
|
725
|
+
end
|
645
726
|
|
646
727
|
#########################################################################
|
647
728
|
#
|
@@ -687,6 +768,10 @@ module Gollum
|
|
687
768
|
# Toggles file upload functionality.
|
688
769
|
attr_reader :allow_uploads
|
689
770
|
|
771
|
+
# Toggles whether uploaded files go into 'uploads', or a directory
|
772
|
+
# named after the page they were uploaded to.
|
773
|
+
attr_reader :per_page_uploads
|
774
|
+
|
690
775
|
# Normalize the data.
|
691
776
|
#
|
692
777
|
# data - The String data to be normalized.
|
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: 2.0.0
|
5
5
|
platform: ruby
|
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: 2014-02-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: gitlab-grit
|
@@ -46,19 +46,19 @@ dependencies:
|
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 1.0.0
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
|
-
name:
|
49
|
+
name: rouge
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 1.3.1
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 1.3.1
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: sanitize
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -345,6 +345,16 @@ files:
|
|
345
345
|
- lib/gollum-lib/committer.rb
|
346
346
|
- lib/gollum-lib/file.rb
|
347
347
|
- lib/gollum-lib/file_view.rb
|
348
|
+
- lib/gollum-lib/filter.rb
|
349
|
+
- lib/gollum-lib/filter/code.rb
|
350
|
+
- lib/gollum-lib/filter/metadata.rb
|
351
|
+
- lib/gollum-lib/filter/plain_text.rb
|
352
|
+
- lib/gollum-lib/filter/remote_code.rb
|
353
|
+
- lib/gollum-lib/filter/render.rb
|
354
|
+
- lib/gollum-lib/filter/sanitize.rb
|
355
|
+
- lib/gollum-lib/filter/tags.rb
|
356
|
+
- lib/gollum-lib/filter/toc.rb
|
357
|
+
- lib/gollum-lib/filter/wsd.rb
|
348
358
|
- lib/gollum-lib/git_access.rb
|
349
359
|
- lib/gollum-lib/gitcode.rb
|
350
360
|
- lib/gollum-lib/grit_ext.rb
|
@@ -354,9 +364,7 @@ files:
|
|
354
364
|
- lib/gollum-lib/markups.rb
|
355
365
|
- lib/gollum-lib/page.rb
|
356
366
|
- lib/gollum-lib/pagination.rb
|
357
|
-
- lib/gollum-lib/remote_code.rb
|
358
367
|
- lib/gollum-lib/sanitization.rb
|
359
|
-
- lib/gollum-lib/web_sequence_diagram.rb
|
360
368
|
- lib/gollum-lib/wiki.rb
|
361
369
|
- licenses/licenses.txt
|
362
370
|
homepage: http://github.com/gollum/gollum-lib
|
@@ -380,7 +388,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
380
388
|
version: '0'
|
381
389
|
requirements: []
|
382
390
|
rubyforge_project: gollum-lib
|
383
|
-
rubygems_version: 2.
|
391
|
+
rubygems_version: 2.1.11
|
384
392
|
signing_key:
|
385
393
|
specification_version: 2
|
386
394
|
summary: A simple, Git-powered wiki.
|
@@ -1,39 +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 RemoteCode
|
9
|
-
def initialize path
|
10
|
-
raise(ArgumentError, 'path is nil or empty') if path.nil? or path.empty?
|
11
|
-
@uri = URI(path)
|
12
|
-
end
|
13
|
-
|
14
|
-
def contents
|
15
|
-
@contents ||= req @uri
|
16
|
-
end
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
def req uri, cut = 1
|
21
|
-
return "Too many redirects or retries" if cut >= 10
|
22
|
-
http = Net::HTTP.new uri.host, uri.port
|
23
|
-
http.use_ssl = true
|
24
|
-
resp = http.get uri.path, {
|
25
|
-
'Accept' => 'text/plain',
|
26
|
-
'Cache-Control' => 'no-cache',
|
27
|
-
'Connection' => 'keep-alive',
|
28
|
-
'User-Agent' => 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0'
|
29
|
-
}
|
30
|
-
code = resp.code.to_i
|
31
|
-
return resp.body if code == 200
|
32
|
-
return "Not Found" if code == 404
|
33
|
-
return "Unhandled Response Code #{code}" unless code == 304 or not resp.header['location'].nil?
|
34
|
-
loc = URI.parse resp.header['location']
|
35
|
-
uri2 = loc.relative? ? (uri + loc) : loc # overloads (+)
|
36
|
-
req uri2, (cut + 1)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
# ~*~ encoding: utf-8 ~*~
|
2
|
-
require 'net/http'
|
3
|
-
require 'uri'
|
4
|
-
require 'open-uri'
|
5
|
-
|
6
|
-
class Gollum::WebSequenceDiagram
|
7
|
-
WSD_URL = "http://www.websequencediagrams.com/index.php"
|
8
|
-
|
9
|
-
# Initialize a new WebSequenceDiagram object.
|
10
|
-
#
|
11
|
-
# code - The String containing the sequence diagram markup.
|
12
|
-
# style - The String containing the rendering style.
|
13
|
-
#
|
14
|
-
# Returns a new Gollum::WebSequenceDiagram object
|
15
|
-
def initialize(code, style)
|
16
|
-
@code = code
|
17
|
-
@style = style
|
18
|
-
@tag = ""
|
19
|
-
|
20
|
-
render
|
21
|
-
end
|
22
|
-
|
23
|
-
# Render the sequence diagram on the remote server and store the url to
|
24
|
-
# the rendered image.
|
25
|
-
#
|
26
|
-
# Returns nil.
|
27
|
-
def render
|
28
|
-
response = Net::HTTP.post_form(URI.parse(WSD_URL), 'style' => @style, 'message' => @code)
|
29
|
-
if response.body =~ /img: "(.+)"/
|
30
|
-
url = "http://www.websequencediagrams.com/#{$1}"
|
31
|
-
@tag = "<img src=\"#{url}\" />"
|
32
|
-
else
|
33
|
-
puts response.body
|
34
|
-
@tag ="Sorry, unable to render sequence diagram at this time."
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
# Gets the HTML IMG tag for the sequence diagram.
|
39
|
-
#
|
40
|
-
# Returns a String containing the IMG tag.
|
41
|
-
def to_tag
|
42
|
-
@tag
|
43
|
-
end
|
44
|
-
end
|