gollum_rails 1.5.8 → 1.5.9
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 +4 -4
- data/Gemfile.lock +1 -1
- data/gollum_rails.gemspec +3 -6
- data/lib/gollum_rails.rb +1 -6
- data/lib/gollum_rails/callbacks.rb +4 -4
- data/lib/gollum_rails/core.rb +45 -13
- data/lib/gollum_rails/persistance.rb +25 -34
- data/lib/gollum_rails/setup.rb +28 -42
- data/lib/gollum_rails/setup/error.rb +5 -0
- data/lib/gollum_rails/setup/options.rb +16 -0
- data/lib/gollum_rails/store.rb +1 -5
- data/spec/gollum_rails/page_spec.rb +14 -14
- data/spec/gollum_rails/setup_spec.rb +7 -2
- metadata +5 -8
- data/lib/gollum_rails/adapters/gollum.rb +0 -53
- data/lib/gollum_rails/adapters/gollum/.gitkeep +0 -0
- data/lib/gollum_rails/adapters/gollum/page.rb +0 -90
- data/spec/gollum_rails/adapters/gollum/connector_spec.rb +0 -21
- data/spec/gollum_rails/adapters/gollum/page_spec.rb +0 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f5c86a6b0816f75daf382d0731715df5d7274a9
|
4
|
+
data.tar.gz: 99cd7e69fdf571ebbf48c98b7a2eff01b71d3e62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eee8f381165c7de6ce549301dec98dcb31d2d4d2cdb38622e16d7a4bb5eafc5b8cf5bfee8bae7ff08a1a9758e2371594f0fc01f0dacc656cb8a27a3ad25d1e71
|
7
|
+
data.tar.gz: 2ee5cbf8c04839498b6483094a7b34e3fe3a3a435e9f8f34c7b0dbb03d93ce98b6853e1633827f91d57307e8ec71ba380504f23e81a74fd311f94ce8c12fd891
|
data/Gemfile.lock
CHANGED
data/gollum_rails.gemspec
CHANGED
@@ -4,7 +4,7 @@ Gem::Specification.new do |s|
|
|
4
4
|
s.name = 'gollum_rails'
|
5
5
|
s.rubyforge_project = s.name
|
6
6
|
|
7
|
-
s.version = '1.5.
|
7
|
+
s.version = '1.5.9'
|
8
8
|
|
9
9
|
s.summary = 'Combines Gollum and Rails'
|
10
10
|
s.description= 'include Gollum into Rails with ease'
|
@@ -44,9 +44,6 @@ Gem::Specification.new do |s|
|
|
44
44
|
lib/generators/gollum_rails/model/model_generator.rb
|
45
45
|
lib/generators/gollum_rails/model/templates/model_template.erb
|
46
46
|
lib/gollum_rails.rb
|
47
|
-
lib/gollum_rails/adapters/gollum.rb
|
48
|
-
lib/gollum_rails/adapters/gollum/.gitkeep
|
49
|
-
lib/gollum_rails/adapters/gollum/page.rb
|
50
47
|
lib/gollum_rails/callbacks.rb
|
51
48
|
lib/gollum_rails/core.rb
|
52
49
|
lib/gollum_rails/error.rb
|
@@ -56,10 +53,10 @@ Gem::Specification.new do |s|
|
|
56
53
|
lib/gollum_rails/page.rb
|
57
54
|
lib/gollum_rails/persistance.rb
|
58
55
|
lib/gollum_rails/setup.rb
|
56
|
+
lib/gollum_rails/setup/error.rb
|
57
|
+
lib/gollum_rails/setup/options.rb
|
59
58
|
lib/gollum_rails/store.rb
|
60
59
|
lib/gollum_rails/validation.rb
|
61
|
-
spec/gollum_rails/adapters/gollum/connector_spec.rb
|
62
|
-
spec/gollum_rails/adapters/gollum/page_spec.rb
|
63
60
|
spec/gollum_rails/page_spec.rb
|
64
61
|
spec/gollum_rails/respository_spec.rb
|
65
62
|
spec/gollum_rails/setup_spec.rb
|
data/lib/gollum_rails.rb
CHANGED
@@ -24,10 +24,6 @@ require 'active_support'
|
|
24
24
|
# GollumRails is a RubyGem for extending Rails and the Gollum wiki powered by github
|
25
25
|
# It has the ability to combine the benefits from a git powered wiki with Rails.
|
26
26
|
#
|
27
|
-
# Example solutions:
|
28
|
-
# * Gollum Wiki pages - Devise authentication - GollumRails connector - Haml layouting
|
29
|
-
# * Gollum Wiki pages - Ember.js - Handlebars layout - Rails REST API
|
30
|
-
# * ...
|
31
27
|
#
|
32
28
|
module GollumRails
|
33
29
|
extend ActiveSupport::Autoload
|
@@ -45,8 +41,7 @@ module GollumRails
|
|
45
41
|
autoload :Meta
|
46
42
|
|
47
43
|
# GollumRails version string
|
48
|
-
VERSION = '1.5.
|
44
|
+
VERSION = '1.5.9'
|
49
45
|
|
50
46
|
end
|
51
47
|
|
52
|
-
require 'gollum_rails/adapters/gollum'
|
@@ -31,9 +31,9 @@ module GollumRails
|
|
31
31
|
|
32
32
|
private
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
34
|
+
def create_or_update #:nodoc:
|
35
|
+
run_callbacks(:save) { super }
|
36
|
+
end
|
37
37
|
|
38
38
|
def create_record #:nodoc:
|
39
39
|
run_callbacks(:create) { super }
|
@@ -44,4 +44,4 @@ module GollumRails
|
|
44
44
|
end
|
45
45
|
|
46
46
|
end
|
47
|
-
end
|
47
|
+
end
|
data/lib/gollum_rails/core.rb
CHANGED
@@ -22,11 +22,13 @@ module GollumRails
|
|
22
22
|
def set_folder(options)
|
23
23
|
if options.is_a? Hash
|
24
24
|
return if options.empty?
|
25
|
+
base = options[:base]
|
25
26
|
options = options[:folder]
|
26
27
|
end
|
27
28
|
Setup.wiki_options ||= {}
|
28
29
|
Setup.wiki_options[:page_file_dir] = options
|
29
|
-
|
30
|
+
|
31
|
+
Setup.wiki_options[:base_path] = (base || options) || ''
|
30
32
|
end
|
31
33
|
alias_method :folder=, :set_folder
|
32
34
|
end
|
@@ -37,33 +39,53 @@ module GollumRails
|
|
37
39
|
#
|
38
40
|
# commit must be given to perform any page action!
|
39
41
|
def initialize(attrs = {})
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
42
|
+
assign_attributes(attrs)
|
43
|
+
_update_page_attributes if attrs[:gollum_page]
|
44
|
+
yield self if block_given?
|
45
|
+
run_callbacks :initialize unless _initialize_callbacks.empty?
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
# Allows you to set all the attributes by passing in a hash of attributes with
|
50
|
+
# keys matching the attribute name
|
51
|
+
#
|
52
|
+
# new_attributes - Hash - Hash of arguments
|
53
|
+
def assign_attributes(new_attributes)
|
54
|
+
if !new_attributes.respond_to?(:stringify_keys)
|
55
|
+
raise ArgumentError, "When assigning attributes, you must pass a hash as an argument."
|
56
|
+
end
|
57
|
+
return if new_attributes.blank?
|
58
|
+
|
59
|
+
attributes = new_attributes.stringify_keys
|
60
|
+
attributes.each do |k, v|
|
61
|
+
_assign_attribute(k, v)
|
45
62
|
end
|
46
63
|
end
|
47
64
|
|
48
65
|
|
49
|
-
|
50
|
-
def
|
66
|
+
|
67
|
+
def url_path #:nodoc:
|
68
|
+
File.split(url)
|
69
|
+
end
|
70
|
+
|
71
|
+
def path_name #:nodoc:
|
51
72
|
f = full_path.first
|
52
73
|
return '/' if f == '.'
|
53
74
|
f
|
54
75
|
end
|
55
76
|
|
56
|
-
def full_path
|
77
|
+
def full_path #:nodoc:
|
57
78
|
File.split(name)
|
58
79
|
end
|
59
80
|
|
60
|
-
def file_name
|
81
|
+
def file_name #:nodoc:
|
61
82
|
full_path.last
|
62
83
|
end
|
63
84
|
|
64
|
-
def cname
|
85
|
+
def cname #:nodoc:
|
65
86
|
Gollum::Page.cname(self.name)
|
66
87
|
end
|
88
|
+
|
67
89
|
# Gets a canonicalized filename of the page
|
68
90
|
def canonicalized_filename
|
69
91
|
Gollum::Page.canonicalize_filename(name)
|
@@ -90,7 +112,9 @@ module GollumRails
|
|
90
112
|
#
|
91
113
|
# Returns a String
|
92
114
|
def url
|
93
|
-
gollum_page
|
115
|
+
if gollum_page
|
116
|
+
gollum_page.url_path
|
117
|
+
end
|
94
118
|
end
|
95
119
|
|
96
120
|
# == Gets the title for current Gollum::Page
|
@@ -175,10 +199,18 @@ module GollumRails
|
|
175
199
|
com = commit_local if !commit_local.nil?
|
176
200
|
return com
|
177
201
|
end
|
202
|
+
|
203
|
+
def _assign_attribute(key, value)
|
204
|
+
public_send("#{key}=", value)
|
205
|
+
rescue NoMethodEr3ror
|
206
|
+
if respond_to?("#{key}=")
|
207
|
+
raise
|
208
|
+
end
|
209
|
+
end
|
178
210
|
|
179
211
|
# == Updates local attributes from gollum_page class
|
180
212
|
#
|
181
|
-
def
|
213
|
+
def _update_page_attributes
|
182
214
|
@name = gollum_page.name
|
183
215
|
@content= gollum_page.raw_data
|
184
216
|
@format = gollum_page.format
|
@@ -11,7 +11,7 @@ module GollumRails
|
|
11
11
|
#
|
12
12
|
# Returns an instance of Gollum::Page or false
|
13
13
|
def create(data)
|
14
|
-
page =
|
14
|
+
page = self.new(data)
|
15
15
|
page.save
|
16
16
|
end
|
17
17
|
|
@@ -24,7 +24,7 @@ module GollumRails
|
|
24
24
|
#
|
25
25
|
# Returns an instance of Gollum::Page
|
26
26
|
def create!(data)
|
27
|
-
page =
|
27
|
+
page = self.new(data)
|
28
28
|
page.save!
|
29
29
|
end
|
30
30
|
|
@@ -58,12 +58,11 @@ module GollumRails
|
|
58
58
|
return nil unless valid?
|
59
59
|
begin
|
60
60
|
create_or_update
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
self
|
61
|
+
rescue ::Gollum::DuplicatePageError => e
|
62
|
+
end
|
63
|
+
self.gollum_page = wiki.paged(file_name, path_name, true, wiki.ref)
|
64
|
+
_update_page_attributes
|
65
|
+
self
|
67
66
|
end
|
68
67
|
|
69
68
|
# == Save without exception handling
|
@@ -101,42 +100,34 @@ module GollumRails
|
|
101
100
|
#
|
102
101
|
# returns a Commit id
|
103
102
|
def update_record
|
103
|
+
wiki.update_page(self.gollum_page,
|
104
|
+
self.name,
|
105
|
+
self.format,
|
106
|
+
self.content,
|
107
|
+
self.commit)
|
104
108
|
end
|
105
109
|
|
106
110
|
|
107
111
|
|
108
112
|
# == Updates an existing page (or created)
|
109
113
|
#
|
110
|
-
#
|
114
|
+
# attributes - Hash of arguments
|
111
115
|
#
|
112
116
|
# Returns an instance of GollumRails::Page
|
113
|
-
def update_attributes(
|
114
|
-
|
115
|
-
|
116
|
-
#content=nil,name=nil,format=:markdown, commit=nil
|
117
|
-
args = args.first
|
118
|
-
@gollum_page = page.update_page(gollum_page, wiki,
|
119
|
-
args[:content],
|
120
|
-
get_right_commit(args[:commit]),
|
121
|
-
args[:name],
|
122
|
-
args[:format]||:markdown)
|
123
|
-
end
|
117
|
+
def update_attributes(attributes)
|
118
|
+
assign_attributes(attributes)
|
119
|
+
save
|
124
120
|
end
|
125
121
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
#
|
134
|
-
#
|
135
|
-
# Returns an instance of GollumRails::Page
|
136
|
-
def update_deprecated(content=nil,name=nil,format=:markdown, commit=nil)
|
137
|
-
@gollum_page = page.update_page(gollum_page, wiki, content, get_right_commit(commit), name, format)
|
138
|
-
|
122
|
+
def seperate_path(path)
|
123
|
+
path = File.split(name)
|
124
|
+
if path.first == '/' || path.first == '.'
|
125
|
+
folder = nil
|
126
|
+
else
|
127
|
+
folder = path.first
|
128
|
+
end
|
139
129
|
end
|
130
|
+
|
140
131
|
|
141
132
|
# == Deletes current page
|
142
133
|
#
|
@@ -179,4 +170,4 @@ module GollumRails
|
|
179
170
|
|
180
171
|
|
181
172
|
end
|
182
|
-
end
|
173
|
+
end
|
data/lib/gollum_rails/setup.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'gollum_rails/setup/error'
|
1
2
|
module GollumRails
|
2
3
|
|
3
4
|
# Setup functionality for Rails initializer
|
@@ -13,59 +14,45 @@ module GollumRails
|
|
13
14
|
# end
|
14
15
|
#
|
15
16
|
#
|
16
|
-
|
17
|
+
module Setup
|
18
|
+
autoload :Options, 'gollum_rails/setup/options'
|
19
|
+
include Options
|
20
|
+
|
17
21
|
class << self
|
18
|
-
|
19
|
-
attr_accessor :wiki_path
|
20
|
-
|
21
|
-
attr_writer :wiki_options
|
22
22
|
|
23
|
-
attr_accessor :repository
|
24
|
-
|
25
|
-
attr_accessor :startup
|
26
|
-
|
27
|
-
# Gets / Sets the init options
|
28
|
-
attr_accessor :options
|
29
|
-
|
30
|
-
|
31
|
-
def wiki_options
|
32
|
-
return {} unless @wiki_options.kind_of? Hash
|
33
|
-
@wiki_options ||= {}
|
34
|
-
end
|
35
|
-
# Wiki startup options
|
36
|
-
def options=(options)
|
37
|
-
@options = options
|
38
|
-
end
|
39
|
-
|
40
23
|
# defines block builder for Rails initializer.
|
41
24
|
# executes public methods inside own class
|
42
25
|
#
|
43
|
-
def build(&block)
|
44
|
-
|
45
|
-
|
26
|
+
def build(new_attributes = nil, &block)
|
27
|
+
if block_given?
|
28
|
+
yield self
|
29
|
+
else
|
30
|
+
if !new_attributes.respond_to?(:stringify_keys)
|
31
|
+
raise ArgumentError, "When assigning attributes, you must pass a hash as an argument."
|
32
|
+
end
|
33
|
+
attributes = new_attributes.stringify_keys
|
34
|
+
attributes.each do |k, v|
|
35
|
+
begin
|
36
|
+
public_send("#{k}=", v)
|
37
|
+
rescue NoMethodError
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
if self.repository == :application
|
46
43
|
raise GollumRailsSetupError, "Rails configuration is not defined.
|
47
44
|
Are you in a Rails app?" if Rails.application.nil?
|
48
45
|
|
49
46
|
initialize_wiki Rails.application.config.wiki_repository
|
50
47
|
else
|
51
48
|
raise GollumRailsSetupError, "Git repository does not exist.
|
52
|
-
Was the specified pathname correct?" unless Pathname.new(
|
53
|
-
initialize_wiki
|
49
|
+
Was the specified pathname correct?" unless Pathname.new(self.repository).exist?
|
50
|
+
initialize_wiki self.repository
|
54
51
|
end
|
55
52
|
end
|
56
53
|
|
57
|
-
#######
|
58
54
|
private
|
59
|
-
|
60
|
-
|
61
|
-
# Checks if provided path is present and valid
|
62
|
-
#
|
63
|
-
# Example
|
64
|
-
# path_valid? '/'
|
65
|
-
# # =>true
|
66
|
-
#
|
67
|
-
# path_valid? nil
|
68
|
-
# # =>false
|
55
|
+
|
69
56
|
def path_valid?(path)
|
70
57
|
return path.exist? if path.is_a?(Pathname)
|
71
58
|
return !(path.nil? || path.empty? || ! path.is_a?(String))
|
@@ -73,16 +60,15 @@ module GollumRails
|
|
73
60
|
|
74
61
|
def initialize_wiki(path)
|
75
62
|
if path_valid? path
|
76
|
-
|
77
|
-
|
63
|
+
self.wiki_path = path.to_s
|
64
|
+
self.wiki_options = options
|
78
65
|
true
|
79
66
|
else
|
80
|
-
raise GollumRailsSetupError, '
|
67
|
+
raise GollumRailsSetupError, 'Path to repository is empty or invalid!'
|
81
68
|
end
|
82
69
|
|
83
70
|
end
|
84
71
|
|
85
72
|
end
|
86
73
|
end
|
87
|
-
class GollumRailsSetupError < ArgumentError; end
|
88
74
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module GollumRails
|
2
|
+
module Setup
|
3
|
+
module Options
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
module ClassMethods
|
7
|
+
attr_accessor :wiki_options
|
8
|
+
attr_accessor :repository
|
9
|
+
attr_accessor :startup
|
10
|
+
attr_accessor :options
|
11
|
+
attr_accessor :wiki_path
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/gollum_rails/store.rb
CHANGED
@@ -44,10 +44,6 @@ module GollumRails
|
|
44
44
|
@content ||= (@gollum_page.content || "")
|
45
45
|
end
|
46
46
|
|
47
|
-
# Gets the page class
|
48
|
-
def page
|
49
|
-
Adapters::Gollum::Page.new
|
50
|
-
end
|
51
47
|
|
52
48
|
private
|
53
49
|
# == To static
|
@@ -58,4 +54,4 @@ module GollumRails
|
|
58
54
|
|
59
55
|
|
60
56
|
end
|
61
|
-
end
|
57
|
+
end
|
@@ -101,11 +101,22 @@ describe "Gollum Page" do
|
|
101
101
|
end
|
102
102
|
|
103
103
|
it "updates properly without all arguments, content+commit" do
|
104
|
-
@rr.update_attributes({:name => "google", :format => :wiki}).should be_a
|
104
|
+
@rr.update_attributes({:name => "google", :format => :wiki}).should be_a GollumRails::Page
|
105
|
+
@rr.delete(@commit)
|
106
|
+
end
|
107
|
+
it "sets the format as created" do
|
108
|
+
@rr.update_attributes(name: "omg", format: :textile)
|
109
|
+
expect(@rr.format).to eq :textile
|
110
|
+
@rr.delete(@commit)
|
111
|
+
end
|
112
|
+
|
113
|
+
it "sets the name as created" do
|
114
|
+
@rr.update_attributes(name: "omg", format: :textile)
|
115
|
+
expect(@rr.name).to eq "omg"
|
105
116
|
@rr.delete(@commit)
|
106
117
|
end
|
107
118
|
it "updates properly without all arguments, name, format" do
|
108
|
-
@rr.update_attributes({:content => "test"}).should be_a
|
119
|
+
@rr.update_attributes({:content => "test"}).should be_a GollumRails::Page
|
109
120
|
expect(@rr.name).to match "Goole"
|
110
121
|
expect(@rr.format.to_s).to match "markdown"
|
111
122
|
@rr.delete(@commit)
|
@@ -295,16 +306,6 @@ describe "Gollum Page" do
|
|
295
306
|
test.save
|
296
307
|
end
|
297
308
|
end
|
298
|
-
describe "rails extension" do
|
299
|
-
|
300
|
-
it "should test fetch_all" do
|
301
|
-
GollumRails::Page.all.length.should == 1
|
302
|
-
end
|
303
|
-
it "should test all" do
|
304
|
-
GollumRails::Page.find_all.length.should == 1
|
305
|
-
end
|
306
|
-
|
307
|
-
end
|
308
309
|
describe "testing validation" do
|
309
310
|
|
310
311
|
|
@@ -369,7 +370,6 @@ describe "Gollum Page" do
|
|
369
370
|
|
370
371
|
res = CommitDiff.new call
|
371
372
|
res.save
|
372
|
-
res.update_attributes("content",nil,:markdown, @commit)
|
373
373
|
diff = res.compare_commits(res.history.first)
|
374
374
|
expect(diff).to be_a String
|
375
375
|
expect(diff).to match(/---/)
|
@@ -513,7 +513,7 @@ describe "Gollum Page" do
|
|
513
513
|
it "should create a nested page under /test" do
|
514
514
|
res = Fns.new @call.merge(name: 'test/my_page')
|
515
515
|
res.save
|
516
|
-
expect(res.
|
516
|
+
expect(res.url_path).to include 'test'
|
517
517
|
res.destroy(@commit)
|
518
518
|
end
|
519
519
|
it "should find a nested file" do
|
@@ -35,7 +35,7 @@ describe GollumRails::Setup do
|
|
35
35
|
config.repository = :application
|
36
36
|
|
37
37
|
end
|
38
|
-
}.to raise_error GollumRails::GollumRailsSetupError
|
38
|
+
}.to raise_error GollumRails::Setup::GollumRailsSetupError
|
39
39
|
|
40
40
|
end
|
41
41
|
it "should throw an error if a pathname was supplied that does not exist" do
|
@@ -43,7 +43,12 @@ describe GollumRails::Setup do
|
|
43
43
|
GollumRails::Setup.build do |setup|
|
44
44
|
setup.repository = Pathname.new('/nonexistingdirectoryshouldbenonexisting')
|
45
45
|
end
|
46
|
-
}.to raise_error GollumRails::GollumRailsSetupError
|
46
|
+
}.to raise_error GollumRails::Setup::GollumRailsSetupError
|
47
|
+
end
|
48
|
+
it "should also initialize without a block given" do
|
49
|
+
expect{
|
50
|
+
GollumRails::Setup.build(repository: '.')
|
51
|
+
}.not_to raise_error
|
47
52
|
end
|
48
53
|
|
49
54
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gollum_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Kasper
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -156,9 +156,6 @@ files:
|
|
156
156
|
- lib/generators/gollum_rails/model/model_generator.rb
|
157
157
|
- lib/generators/gollum_rails/model/templates/model_template.erb
|
158
158
|
- lib/gollum_rails.rb
|
159
|
-
- lib/gollum_rails/adapters/gollum.rb
|
160
|
-
- lib/gollum_rails/adapters/gollum/.gitkeep
|
161
|
-
- lib/gollum_rails/adapters/gollum/page.rb
|
162
159
|
- lib/gollum_rails/callbacks.rb
|
163
160
|
- lib/gollum_rails/core.rb
|
164
161
|
- lib/gollum_rails/error.rb
|
@@ -168,10 +165,10 @@ files:
|
|
168
165
|
- lib/gollum_rails/page.rb
|
169
166
|
- lib/gollum_rails/persistance.rb
|
170
167
|
- lib/gollum_rails/setup.rb
|
168
|
+
- lib/gollum_rails/setup/error.rb
|
169
|
+
- lib/gollum_rails/setup/options.rb
|
171
170
|
- lib/gollum_rails/store.rb
|
172
171
|
- lib/gollum_rails/validation.rb
|
173
|
-
- spec/gollum_rails/adapters/gollum/connector_spec.rb
|
174
|
-
- spec/gollum_rails/adapters/gollum/page_spec.rb
|
175
172
|
- spec/gollum_rails/page_spec.rb
|
176
173
|
- spec/gollum_rails/respository_spec.rb
|
177
174
|
- spec/gollum_rails/setup_spec.rb
|
@@ -200,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
200
197
|
version: '0'
|
201
198
|
requirements: []
|
202
199
|
rubyforge_project: gollum_rails
|
203
|
-
rubygems_version: 2.
|
200
|
+
rubygems_version: 2.2.2
|
204
201
|
signing_key:
|
205
202
|
specification_version: 4
|
206
203
|
summary: Combines Gollum and Rails
|
@@ -1,53 +0,0 @@
|
|
1
|
-
# ~*~ encoding: utf-8 ~*~
|
2
|
-
module GollumRails
|
3
|
-
module Adapters
|
4
|
-
# Gollum Wiki connector classes
|
5
|
-
#
|
6
|
-
#
|
7
|
-
module Gollum
|
8
|
-
autoload :Wiki, 'gollum_rails/adapters/gollum/wiki'
|
9
|
-
autoload :Page, 'gollum_rails/adapters/gollum/page'
|
10
|
-
|
11
|
-
# connector version
|
12
|
-
VERSION="2.0.0"
|
13
|
-
|
14
|
-
# Gollum connector class, keeping defaults!
|
15
|
-
#
|
16
|
-
class Connector
|
17
|
-
class << self
|
18
|
-
# Sets the page class used by all instances
|
19
|
-
attr_writer :page_class
|
20
|
-
|
21
|
-
# Sets the wiki class used by all instances
|
22
|
-
attr_writer :wiki_path
|
23
|
-
|
24
|
-
# Sets the wiki options
|
25
|
-
attr_writer :wiki_options
|
26
|
-
|
27
|
-
|
28
|
-
# Gets the Globally used Page class or use a new one if not defined
|
29
|
-
#
|
30
|
-
#
|
31
|
-
# Returns the internal page class or a fresh ::Gollum::Page
|
32
|
-
def page_class
|
33
|
-
@page_class || Page
|
34
|
-
end
|
35
|
-
|
36
|
-
# Gets the wiki options
|
37
|
-
def wiki_options
|
38
|
-
@wiki_options || {}
|
39
|
-
end
|
40
|
-
|
41
|
-
# Gets the Globally used Page class or use a new one if not defined
|
42
|
-
#
|
43
|
-
#
|
44
|
-
# Returns the internal page class or a fresh ::Gollum::Page
|
45
|
-
def wiki_path
|
46
|
-
@wiki_path || ""
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
File without changes
|
@@ -1,90 +0,0 @@
|
|
1
|
-
module GollumRails
|
2
|
-
module Adapters
|
3
|
-
module Gollum
|
4
|
-
|
5
|
-
# Main page class for the Gollum connector.
|
6
|
-
#
|
7
|
-
# It provides some awesome features for connecting gollum to gollum_rails such as:
|
8
|
-
# * new_page
|
9
|
-
# * find_page
|
10
|
-
# * delete_page
|
11
|
-
# * rename_page
|
12
|
-
# * move_page
|
13
|
-
# * first_page_commit
|
14
|
-
# * page_creation time
|
15
|
-
# * ...
|
16
|
-
#
|
17
|
-
class Page
|
18
|
-
|
19
|
-
Connector.page_class = self
|
20
|
-
|
21
|
-
class << self
|
22
|
-
|
23
|
-
# == Parses a given filepath e.g. '/test/page'
|
24
|
-
# Name is page
|
25
|
-
# path is /test
|
26
|
-
#
|
27
|
-
# Returns a Hash
|
28
|
-
def parse_path(name)
|
29
|
-
path = '/'
|
30
|
-
name = name.to_s
|
31
|
-
if name.include?('/')
|
32
|
-
name = name[1..-1] if name[0] == "/"
|
33
|
-
content = name.split('/')
|
34
|
-
name = content.pop
|
35
|
-
path = '/'+content.join('/')
|
36
|
-
end
|
37
|
-
{ path: path, name: name }
|
38
|
-
end
|
39
|
-
|
40
|
-
# finds all versions of a page
|
41
|
-
#
|
42
|
-
# name - the pagename to search
|
43
|
-
# wiki - instance of Gollum::Wiki
|
44
|
-
# version - optional - The pages version
|
45
|
-
#
|
46
|
-
# Returns the Gollum::Page class
|
47
|
-
def find_page(name, wiki, version=nil)
|
48
|
-
wiki.clear_cache
|
49
|
-
path_data = parse_path(name)
|
50
|
-
wiki.paged(path_data[:name], path_data[:path], exact = true, version)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
|
55
|
-
# == Updates an existing page
|
56
|
-
#
|
57
|
-
# page - An instance of Gollum::Page
|
58
|
-
# wiki - An instance of Gollum::Wiki
|
59
|
-
# content - New content
|
60
|
-
# commit - Commit Hash
|
61
|
-
# name - A new String (optional)
|
62
|
-
# format - A filetype as symbol (optional)
|
63
|
-
#
|
64
|
-
# Returns the page
|
65
|
-
def update_page( page, wiki, content=nil, commit={}, name=nil, format=nil)
|
66
|
-
wiki.clear_cache
|
67
|
-
return page if page.nil?
|
68
|
-
name ||= page.name
|
69
|
-
format = (format || page.format).to_sym
|
70
|
-
content ||= page.raw_data
|
71
|
-
|
72
|
-
wiki.update_page(page,name,format,content.to_s,commit) unless ((!content||page.raw_data == content) && page.format == format)
|
73
|
-
|
74
|
-
self.class.find_page( mixin(page.url_path, name), wiki )
|
75
|
-
end
|
76
|
-
|
77
|
-
private
|
78
|
-
|
79
|
-
# replaces old filename with new
|
80
|
-
def mixin(old_url, new_name)
|
81
|
-
url = old_url.split("/")
|
82
|
-
url.pop
|
83
|
-
url << new_name
|
84
|
-
url.join("/")
|
85
|
-
end
|
86
|
-
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe GollumRails::Adapters::Gollum::Connector do
|
4
|
-
before(:each) do
|
5
|
-
@class = GollumRails::Adapters::Gollum::Connector
|
6
|
-
end
|
7
|
-
|
8
|
-
it "should test the Wiki path connector" do
|
9
|
-
@class.wiki_path.should be_a String
|
10
|
-
end
|
11
|
-
it "should test the Wiki options connector" do
|
12
|
-
@class.wiki_options.should be_a Hash
|
13
|
-
end
|
14
|
-
it "should test the Wiki options content" do
|
15
|
-
@class.wiki_options.should == {}
|
16
|
-
end
|
17
|
-
it "should test the Page class connector" do
|
18
|
-
@class.page_class.should == GollumRails::Adapters::Gollum::Page
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
describe GollumRails::Adapters::Gollum::Page do
|
3
|
-
before(:each) do
|
4
|
-
@commit = {
|
5
|
-
:message => 'page action',
|
6
|
-
:name => 'The Mosny',
|
7
|
-
:email => 'mosny@zyg.li'
|
8
|
-
}
|
9
|
-
end
|
10
|
-
describe "Connector stuff" do
|
11
|
-
it "should have updated the page_class on initialize" do
|
12
|
-
adapter = GollumRails::Adapters::Gollum::Page.new
|
13
|
-
GollumRails::Adapters::Gollum::Connector.page_class.should == GollumRails::Adapters::Gollum::Page
|
14
|
-
end
|
15
|
-
end
|
16
|
-
describe "statically methods" do
|
17
|
-
it "is a hash" do
|
18
|
-
GollumRails::Adapters::Gollum::Page.parse_path('google/de').should be_a Hash
|
19
|
-
end
|
20
|
-
it "should equal" do
|
21
|
-
path1 = GollumRails::Adapters::Gollum::Page.parse_path('google/de')
|
22
|
-
path2 = GollumRails::Adapters::Gollum::Page.parse_path('/google/de')
|
23
|
-
path1.should == path2
|
24
|
-
end
|
25
|
-
it "adds a leading slash" do
|
26
|
-
GollumRails::Adapters::Gollum::Page.parse_path('google/de')[:path][0].should == '/'
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|