gollum_rails 1.0.4 → 1.0.5
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 +2 -1
- data/Gemfile.lock +118 -92
- data/Guardfile +7 -0
- data/HISTORY.md +32 -0
- data/README.md +7 -2
- data/Rakefile +5 -5
- data/gollum_rails.gemspec +9 -13
- data/lib/gollum_rails.rb +2 -9
- data/lib/gollum_rails/adapters/gollum.rb +12 -3
- data/lib/gollum_rails/adapters/gollum/page.rb +92 -45
- data/lib/gollum_rails/adapters/gollum/wiki.rb +12 -11
- data/lib/gollum_rails/page.rb +208 -65
- data/lib/gollum_rails/setup.rb +9 -2
- data/spec/gollum_rails/adapters/gollum/connector_spec.rb +8 -2
- data/spec/gollum_rails/adapters/gollum/page_spec.rb +18 -78
- data/spec/gollum_rails/adapters/gollum/{wiki_spec.rb → wiki_spec_off.rb} +0 -0
- data/spec/gollum_rails/page_spec.rb +310 -79
- data/spec/spec_helper.rb +0 -23
- metadata +17 -23
- data/lib/core_ext/string.rb +0 -3
- data/lib/gollum_rails/modulesDEPRECATED/hash.rb +0 -33
- data/lib/gollum_rails/modulesDEPRECATED/loader.rb +0 -5
- data/lib/grit/git-ruby/internal/pack.rb +0 -397
- data/spec/gollum_rails/modulesDEPRECATED/hash.rb +0 -31
- data/spec/gollum_rails_spec.rb +0 -9
- data/spec/spec.opts +0 -3
data/lib/gollum_rails.rb
CHANGED
@@ -6,9 +6,6 @@ require 'rubygems'
|
|
6
6
|
# external
|
7
7
|
require 'gollum-lib'
|
8
8
|
|
9
|
-
# patches
|
10
|
-
require 'grit/git-ruby/internal/pack'
|
11
|
-
require 'core_ext/string'
|
12
9
|
|
13
10
|
# GollumRails is a RubyGem for extending Rails and the Gollum wiki powered by github
|
14
11
|
# It has the ability to combine the benefits from a git powered wiki with Rails.
|
@@ -23,7 +20,7 @@ module GollumRails
|
|
23
20
|
autoload :Setup, 'gollum_rails/setup'
|
24
21
|
|
25
22
|
# GollumRails version string
|
26
|
-
VERSION = '1.0.
|
23
|
+
VERSION = '1.0.5'
|
27
24
|
|
28
25
|
# Simplified error
|
29
26
|
class Error < StandardError; end
|
@@ -31,13 +28,9 @@ module GollumRails
|
|
31
28
|
# All Gollum internal exceptions will be redirected to this
|
32
29
|
class GollumInternalError < Error
|
33
30
|
|
34
|
-
# The classes name, that raised the exception
|
35
|
-
attr_accessor :name
|
36
31
|
|
37
|
-
|
32
|
+
attr_accessor :name
|
38
33
|
attr_accessor :message
|
39
|
-
|
40
|
-
# The target, the class wanted to interact with
|
41
34
|
attr_accessor :target
|
42
35
|
|
43
36
|
# modifies content for throwing an exception
|
@@ -20,7 +20,11 @@ module GollumRails
|
|
20
20
|
attr_writer :page_class
|
21
21
|
|
22
22
|
# Sets the wiki class used by all instances
|
23
|
-
attr_writer :
|
23
|
+
attr_writer :wiki_path
|
24
|
+
|
25
|
+
# Sets the wiki options
|
26
|
+
attr_writer :wiki_options
|
27
|
+
|
24
28
|
|
25
29
|
# Sets the applications status
|
26
30
|
attr_writer :enabled
|
@@ -38,13 +42,18 @@ module GollumRails
|
|
38
42
|
def page_class
|
39
43
|
@page_class || Page
|
40
44
|
end
|
45
|
+
|
46
|
+
# Gets the wiki options
|
47
|
+
def wiki_options
|
48
|
+
@wiki_options || {}
|
49
|
+
end
|
41
50
|
|
42
51
|
# Gets the Globally used Page class or use a new one if not defined
|
43
52
|
#
|
44
53
|
#
|
45
54
|
# Returns the internal page class or a fresh ::Gollum::Page
|
46
|
-
def
|
47
|
-
@
|
55
|
+
def wiki_path
|
56
|
+
@wiki_path || ""
|
48
57
|
end
|
49
58
|
|
50
59
|
end
|
@@ -18,63 +18,99 @@ module GollumRails
|
|
18
18
|
|
19
19
|
Connector.page_class = self
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
#
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
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
|
30
52
|
end
|
31
53
|
|
32
|
-
|
33
|
-
# creates a new Page
|
54
|
+
# == Creates a new page
|
34
55
|
#
|
35
|
-
# name -
|
36
|
-
#
|
37
|
-
#
|
38
|
-
#
|
56
|
+
# name - The name of the page
|
57
|
+
# content - The content of the page
|
58
|
+
# wiki - An instance of Gollum::Wiki
|
59
|
+
# type - A filetype as symbol (optional)
|
60
|
+
# commit - Commit Hash
|
39
61
|
#
|
40
|
-
# Returns the
|
41
|
-
def new_page( name, content,type=:markdown, commit={} )
|
42
|
-
|
43
|
-
|
44
|
-
|
62
|
+
# Returns the page
|
63
|
+
def new_page( name, content, wiki, type=:markdown, commit={} )
|
64
|
+
path_data = self.class.parse_path(name)
|
65
|
+
wiki.write_page( path_data[:name], type, content, commit, path_data[:path].gsub!(/^\//, "").gsub!(/(\/)+$/,'') || "" )
|
66
|
+
wiki.clear_cache
|
67
|
+
self.class.find_page( name, wiki )
|
45
68
|
end
|
46
69
|
|
47
|
-
#
|
70
|
+
# == Updates an existing page
|
71
|
+
#
|
72
|
+
# page - An instance of Gollum::Page
|
73
|
+
# wiki - An instance of Gollum::Wiki
|
74
|
+
# content - New content
|
75
|
+
# commit - Commit Hash
|
76
|
+
# name - A new String (optional)
|
77
|
+
# format - A filetype as symbol (optional)
|
78
|
+
#
|
79
|
+
# Returns the page
|
80
|
+
def update_page( page, wiki, content=nil, commit={}, name=nil, format=nil)
|
81
|
+
wiki.clear_cache
|
82
|
+
return page if page.nil?
|
83
|
+
name ||= page.name
|
84
|
+
format = (format || page.format).to_sym
|
85
|
+
content ||= page.raw_data
|
86
|
+
|
87
|
+
wiki.update_page(page,name,format,content.to_s,commit) unless ((!content||page.raw_data == content) && page.format == format)
|
88
|
+
|
89
|
+
self.class.find_page( mixin(page.url_path, name), wiki )
|
90
|
+
end
|
91
|
+
|
92
|
+
# == Preview page
|
48
93
|
#
|
49
|
-
#
|
50
|
-
#
|
51
|
-
#
|
94
|
+
# wiki - An instance of Gollum::Wiki
|
95
|
+
# content - New content
|
96
|
+
# name - A String
|
97
|
+
# format - A filetype as symbol (optional)
|
52
98
|
#
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
commit_id = @wiki.update_page (old||@page),
|
57
|
-
new[:name]||@page.name,
|
58
|
-
new[:format]||@page.format,
|
59
|
-
new[:content]||@page.raw_data,
|
60
|
-
commit
|
61
|
-
else
|
62
|
-
raise Error.new "commit must be a Hash. #{new.class} given", :crit
|
63
|
-
end
|
64
|
-
|
65
|
-
# this is very ugly. Shouldn't gollum return the new page?
|
66
|
-
@page = @page.find(new[:name]||@page.name, commit_id)
|
67
|
-
@page
|
99
|
+
def preview_page(wiki, name, content, format=:markdown)
|
100
|
+
page = wiki.preview_page(name,content,format)
|
101
|
+
page.formatted_data
|
68
102
|
end
|
69
103
|
|
70
|
-
#
|
104
|
+
# == Deletes an existing page
|
71
105
|
#
|
72
|
-
# page -
|
73
|
-
#
|
106
|
+
# page - Gollum::Page
|
107
|
+
# wiki - Gollum::Wiki
|
108
|
+
# commit - Commit Hash
|
74
109
|
#
|
75
110
|
# Returns the commit id
|
76
|
-
def delete_page( commit={}
|
77
|
-
|
111
|
+
def delete_page( page,wiki,commit={} )
|
112
|
+
wiki.clear_cache
|
113
|
+
wiki.delete_page(page, commit)
|
78
114
|
end
|
79
115
|
|
80
116
|
# renames an existing page
|
@@ -94,7 +130,8 @@ module GollumRails
|
|
94
130
|
#
|
95
131
|
# Returns the Gollum::Page class
|
96
132
|
def find_page(name)
|
97
|
-
|
133
|
+
|
134
|
+
self.class.find_page(name)
|
98
135
|
end
|
99
136
|
|
100
137
|
# moves an existing page
|
@@ -170,6 +207,16 @@ module GollumRails
|
|
170
207
|
raise Error.new "page cannot be empty for #{__method__}", :high
|
171
208
|
end
|
172
209
|
end
|
210
|
+
|
211
|
+
private
|
212
|
+
|
213
|
+
# replaces old filename with new
|
214
|
+
def mixin(old_url, new_name)
|
215
|
+
url = old_url.split("/")
|
216
|
+
url.pop
|
217
|
+
url << new_name
|
218
|
+
url.join("/")
|
219
|
+
end
|
173
220
|
|
174
221
|
end
|
175
222
|
end
|
@@ -6,27 +6,28 @@ module GollumRails
|
|
6
6
|
# TODO: doc
|
7
7
|
class Wiki
|
8
8
|
|
9
|
-
# Gets / Sets the git path or object
|
10
|
-
attr_accessor :git
|
11
|
-
|
12
9
|
# Initializes the class
|
13
10
|
#
|
14
11
|
# location - String or Grit::Repo
|
15
|
-
def initialize(location)
|
16
|
-
|
17
|
-
|
18
|
-
|
12
|
+
def initialize(location, options={})
|
13
|
+
|
14
|
+
Connector.wiki_options = options
|
15
|
+
|
16
|
+
if location.is_a?(::String)
|
17
|
+
con = location
|
19
18
|
else
|
20
|
-
con=
|
19
|
+
con = location.path
|
21
20
|
end
|
22
|
-
|
21
|
+
|
22
|
+
Connector.wiki_path = con
|
23
|
+
|
23
24
|
end
|
24
25
|
|
25
26
|
# Static call from within any other class
|
26
27
|
#
|
27
28
|
# Returns a new instance of this class
|
28
|
-
def self.wiki(location)
|
29
|
-
Wiki.new(location)
|
29
|
+
def self.wiki(location, options={})
|
30
|
+
Wiki.new(location, options)
|
30
31
|
end
|
31
32
|
|
32
33
|
# Forwards unknown methods to Gollum::Wiki
|
data/lib/gollum_rails/page.rb
CHANGED
@@ -12,14 +12,12 @@ module GollumRails
|
|
12
12
|
# * new
|
13
13
|
# * save
|
14
14
|
# * delete
|
15
|
-
# *
|
15
|
+
# * find_or_initialize_by_name
|
16
16
|
#
|
17
17
|
class Page
|
18
|
-
extend
|
19
|
-
include
|
20
|
-
include
|
21
|
-
extend ::ActiveModel::Naming
|
22
|
-
|
18
|
+
extend ActiveModel::Naming
|
19
|
+
include ActiveModel::Conversion
|
20
|
+
include ActiveModel::Validations
|
23
21
|
|
24
22
|
# Callback for save
|
25
23
|
define_model_callbacks :save
|
@@ -29,25 +27,32 @@ module GollumRails
|
|
29
27
|
|
30
28
|
# Callback for delete
|
31
29
|
define_model_callbacks :delete
|
32
|
-
|
30
|
+
|
31
|
+
# Callback for initialize
|
32
|
+
define_model_callbacks :initialize
|
33
|
+
|
34
|
+
# Callback for create
|
35
|
+
define_model_callbacks :create
|
36
|
+
|
37
|
+
# Callback for commit
|
38
|
+
define_model_callbacks :commit
|
39
|
+
|
33
40
|
# static
|
34
41
|
class << self
|
35
|
-
|
36
|
-
#
|
37
|
-
attr_accessor :gollum_page
|
38
|
-
|
39
|
-
# Sets the validator
|
40
|
-
attr_writer :validator
|
41
|
-
|
42
|
+
|
42
43
|
# Finds an existing page or creates it
|
43
44
|
#
|
44
45
|
# name - The name
|
45
46
|
# commit - Hash
|
46
47
|
#
|
47
48
|
# Returns self
|
48
|
-
def find_or_initialize_by_name(name, commit)
|
49
|
-
result_for_find =
|
50
|
-
|
49
|
+
def find_or_initialize_by_name(name, commit={})
|
50
|
+
result_for_find = find(name)
|
51
|
+
unless result_for_find.nil?
|
52
|
+
result_for_find
|
53
|
+
else
|
54
|
+
new(:format => :markdown, :name => name, :content => ".", :commit => commit)
|
55
|
+
end
|
51
56
|
end
|
52
57
|
|
53
58
|
# Checks if the fileformat is supported
|
@@ -56,67 +61,88 @@ module GollumRails
|
|
56
61
|
#
|
57
62
|
# Returns true or false
|
58
63
|
def format_supported?(format)
|
59
|
-
|
60
|
-
format.in?(supported)
|
64
|
+
Gollum::Markup.formats.include?(format.to_sym)
|
61
65
|
end
|
62
66
|
|
63
67
|
# first creates an instance of itself and executes the save function.
|
64
68
|
#
|
65
|
-
#
|
69
|
+
# data - Hash containing the page data
|
66
70
|
#
|
67
71
|
#
|
68
72
|
# Returns an instance of Gollum::Page or false
|
69
|
-
def create(
|
70
|
-
page = Page.new
|
73
|
+
def create(data)
|
74
|
+
page = Page.new(data)
|
71
75
|
page.save
|
72
76
|
end
|
73
77
|
|
74
78
|
|
75
79
|
# calls `create` on current class. If returned value is nil an exception will be thrown
|
76
80
|
#
|
77
|
-
#
|
81
|
+
# data - Hash of Data containing all necessary stuff
|
82
|
+
# TODO write this stuff
|
78
83
|
#
|
79
84
|
#
|
80
85
|
# Returns an instance of Gollum::Page
|
81
|
-
def create!(
|
82
|
-
|
83
|
-
|
86
|
+
def create!(data)
|
87
|
+
page = Page.new(data)
|
88
|
+
page.save!
|
84
89
|
end
|
85
90
|
|
86
91
|
# Finds a page based on the name and specified version
|
87
92
|
#
|
88
93
|
# name - the name of the page
|
94
|
+
# version - optional - The pages version
|
89
95
|
#
|
90
96
|
# Return an instance of Gollum::Page
|
91
|
-
def find(name)
|
92
|
-
page =
|
93
|
-
|
97
|
+
def find(name, version=nil)
|
98
|
+
page = Adapters::Gollum::Page.find_page(name, wiki, version)
|
99
|
+
|
100
|
+
return new( :gollum_page => page ) unless page.nil?
|
101
|
+
return nil
|
102
|
+
|
94
103
|
end
|
95
104
|
|
96
105
|
# Gets all pages in the wiki
|
97
106
|
def all
|
98
|
-
|
107
|
+
wiki.pages
|
99
108
|
end
|
109
|
+
|
100
110
|
alias_method :find_all, :all
|
101
111
|
|
102
112
|
# Gets the wiki instance
|
103
113
|
def wiki
|
104
|
-
@wiki
|
114
|
+
@wiki ||= ::Gollum::Wiki.new(Adapters::Gollum::Connector.wiki_path, Adapters::Gollum::Connector.wiki_options)
|
115
|
+
end
|
116
|
+
|
117
|
+
# TODO: implement more of this (format, etc)
|
118
|
+
#
|
119
|
+
def method_missing(name, *args)
|
120
|
+
if name =~ /^find_by_(name)$/
|
121
|
+
self.find(args.first)
|
122
|
+
else
|
123
|
+
raise NoMethodError, "Method #{name} was not found"
|
124
|
+
end
|
105
125
|
end
|
106
126
|
|
107
127
|
end
|
108
128
|
|
109
|
-
|
129
|
+
# Gets / Sets the gollum page
|
130
|
+
#
|
131
|
+
attr_accessor :gollum_page
|
132
|
+
|
110
133
|
# Initializes a new Page
|
111
134
|
#
|
112
135
|
# attrs - Hash of attributes
|
113
136
|
#
|
114
137
|
# commit must be given to perform any page action!
|
115
138
|
def initialize(attrs = {})
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
139
|
+
run_callbacks :initialize do
|
140
|
+
if Adapters::Gollum::Connector.enabled
|
141
|
+
attrs.each{|k,v| self.public_send("#{k}=",v)} if attrs
|
142
|
+
update_attrs if attrs[:gollum_page]
|
143
|
+
else
|
144
|
+
raise GollumInternalError, 'gollum_rails is not enabled!'
|
145
|
+
end
|
120
146
|
end
|
121
147
|
end
|
122
148
|
|
@@ -126,10 +152,10 @@ module GollumRails
|
|
126
152
|
|
127
153
|
|
128
154
|
# Gets / Sets the pages name
|
129
|
-
|
155
|
+
attr_writer :name
|
130
156
|
|
131
157
|
# Gets / Sets the contents content
|
132
|
-
|
158
|
+
attr_writer :content
|
133
159
|
|
134
160
|
# Gets / Sets the commit Hash
|
135
161
|
attr_accessor :commit
|
@@ -145,14 +171,24 @@ module GollumRails
|
|
145
171
|
|
146
172
|
# Gets the pages format
|
147
173
|
def format
|
148
|
-
@format.to_sym
|
174
|
+
(@format || @gollum_page.format).to_sym
|
149
175
|
end
|
150
176
|
|
177
|
+
def name
|
178
|
+
@name ||= @gollum_page.name
|
179
|
+
end
|
180
|
+
|
181
|
+
def content
|
182
|
+
@content ||= @gollum_page.content
|
183
|
+
end
|
151
184
|
|
152
185
|
# Gets the page class
|
153
186
|
def page
|
154
|
-
|
187
|
+
Adapters::Gollum::Page.new
|
155
188
|
end
|
189
|
+
|
190
|
+
# Gollum Page
|
191
|
+
attr_accessor :gollum_page
|
156
192
|
|
157
193
|
#############
|
158
194
|
# activemodel
|
@@ -181,58 +217,77 @@ module GollumRails
|
|
181
217
|
# Returns an instance of Gollum::Page or false
|
182
218
|
def save
|
183
219
|
run_callbacks :save do
|
184
|
-
return
|
220
|
+
return nil unless valid?
|
185
221
|
begin
|
186
|
-
page.new_page(name,content,format,commit)
|
222
|
+
@gollum_page = page.new_page(name,content,wiki,format,commit)
|
187
223
|
rescue ::Gollum::DuplicatePageError => e
|
188
|
-
|
224
|
+
@gollum_page = Adapters::Gollum::Page.find_page(name, wiki)
|
189
225
|
end
|
190
|
-
return
|
226
|
+
return self
|
191
227
|
end
|
192
228
|
end
|
193
229
|
|
194
|
-
#
|
230
|
+
# == Save without exception handling
|
231
|
+
# raises errors everytime something is wrong
|
195
232
|
#
|
196
|
-
|
197
|
-
|
198
|
-
|
233
|
+
def save!
|
234
|
+
run_callbacks :save do
|
235
|
+
raise StandardError, "record is not valid" unless valid?
|
236
|
+
raise StandardError, "commit could not be empty" if commit == {}
|
237
|
+
@gollum_page = page.new_page(name,content,wiki,format,commit)
|
238
|
+
return self
|
239
|
+
end
|
240
|
+
end
|
199
241
|
|
200
|
-
# Updates an existing page (or created)
|
242
|
+
# == Updates an existing page (or created)
|
201
243
|
#
|
202
|
-
#
|
244
|
+
# content - optional. If given the content of the gollum_page will be updated
|
245
|
+
# name - optional. If given the name of gollum_page will be updated
|
246
|
+
# format - optional. Updates the format. Uses markdown as default
|
203
247
|
# commit - optional. If given this commit will be used instead of that one, used
|
204
248
|
# to initialize the instance
|
205
249
|
#
|
206
250
|
#
|
207
|
-
# Returns an instance of
|
208
|
-
def update_attributes(
|
251
|
+
# Returns an instance of GollumRails::Page
|
252
|
+
def update_attributes(content=nil,name=nil,format=:markdown, commit=nil)
|
209
253
|
run_callbacks :update do
|
210
|
-
page.update_page
|
254
|
+
@gollum_page = page.update_page(gollum_page, wiki, content, get_right_commit(commit), name, format)
|
211
255
|
end
|
212
256
|
end
|
213
|
-
|
214
|
-
# Deletes current page (also available static. See below)
|
257
|
+
|
258
|
+
# == Deletes current page (also available static. See below)
|
215
259
|
#
|
216
260
|
# commit - optional. If given this commit will be used instead of that one, used
|
217
261
|
# to initialize the instance
|
218
262
|
#
|
219
263
|
# Returns the commit id of the current action as String
|
220
|
-
def
|
264
|
+
def destroy(commit=nil)
|
221
265
|
run_callbacks :delete do
|
222
|
-
page.delete_page get_right_commit(commit)
|
266
|
+
page.delete_page(gollum_page, wiki, get_right_commit(commit))
|
223
267
|
end
|
224
268
|
end
|
225
269
|
|
270
|
+
# == Deletes current page (also available static. See below)
|
271
|
+
#
|
272
|
+
# commit - optional. If given this commit will be used instead of that one, used
|
273
|
+
# to initialize the instance
|
274
|
+
#
|
275
|
+
# Returns the commit id of the current action as String
|
276
|
+
def delete(commit=nil)
|
277
|
+
destroy(commit)
|
278
|
+
end
|
279
|
+
|
226
280
|
# checks if entry already has been saved
|
227
281
|
#
|
228
282
|
#
|
229
283
|
def persisted?
|
230
|
-
return true if
|
284
|
+
return true if gollum_page
|
231
285
|
return false
|
232
286
|
end
|
233
|
-
|
287
|
+
|
288
|
+
# == Previews the page - Mostly used if you want to see what you do before saving
|
234
289
|
#
|
235
|
-
# This is an extremely
|
290
|
+
# This is an extremely fast method!
|
236
291
|
# 1 rendering attempt take depending on the content about 0.001 (simple markdown)
|
237
292
|
# upto 0.004 (1000 chars markdown) seconds, which is quite good
|
238
293
|
#
|
@@ -242,16 +297,91 @@ module GollumRails
|
|
242
297
|
#
|
243
298
|
# Returns a String
|
244
299
|
def preview(format=:markdown)
|
245
|
-
|
246
|
-
preview.formatted_data
|
300
|
+
page.preview_page( wiki, name, content, format )
|
247
301
|
end
|
248
302
|
|
249
|
-
|
303
|
+
# == Gets the url for current page from Gollum::Page
|
304
|
+
#
|
305
|
+
# Returns a String
|
306
|
+
def url
|
307
|
+
gollum_page.url_path
|
308
|
+
end
|
309
|
+
|
310
|
+
# == Gets the title for current Gollum::Page
|
311
|
+
#
|
312
|
+
# Returns a String
|
313
|
+
def title
|
314
|
+
gollum_page.title
|
315
|
+
end
|
316
|
+
|
317
|
+
# == Gets formatted_data for current Gollum::Page
|
318
|
+
#
|
319
|
+
# Returns a String
|
320
|
+
def html_data
|
321
|
+
gollum_page.formatted_data
|
322
|
+
end
|
323
|
+
|
324
|
+
|
325
|
+
# == Gets raw_data for current Gollum::Page
|
326
|
+
#
|
327
|
+
# Returns a String
|
328
|
+
def raw_data
|
329
|
+
gollum_page.raw_data
|
330
|
+
end
|
331
|
+
|
332
|
+
# == Gets the history of current gollum_page
|
333
|
+
#
|
334
|
+
# Returns an Array
|
335
|
+
def history
|
336
|
+
return nil unless persisted?
|
337
|
+
gollum_page.versions
|
338
|
+
end
|
339
|
+
|
340
|
+
# == Gets the last modified by Gollum::Committer
|
341
|
+
#
|
342
|
+
# Returns a String
|
343
|
+
def last_changed_by
|
344
|
+
"%s <%s>" % [history.last.author.name, history.last.author.email]
|
345
|
+
end
|
346
|
+
|
347
|
+
# == Compare 2 Commits.
|
348
|
+
#
|
349
|
+
# sha1 - SHA1
|
350
|
+
# sha2 - SHA1
|
351
|
+
def compare_commits(sha1,sha2=nil)
|
352
|
+
Page.wiki.full_reverse_diff_for(@gollum_page,sha1,sha2)
|
353
|
+
end
|
354
|
+
|
355
|
+
# == The pages filename, based on the name and the format
|
356
|
+
#
|
357
|
+
# Returns a String
|
358
|
+
def filename
|
359
|
+
Page.wiki.page_file_name(@name, @format)
|
360
|
+
end
|
361
|
+
|
362
|
+
# == Checks if current page is a subpage
|
363
|
+
def sub_page?
|
364
|
+
return nil unless persisted?
|
365
|
+
@gollum_page.sub_page
|
366
|
+
end
|
367
|
+
|
368
|
+
# == Gets the version of current commit
|
369
|
+
#
|
370
|
+
def current_version(long=false)
|
371
|
+
return nil unless persisted?
|
372
|
+
unless long
|
373
|
+
@gollum_page.version_short
|
374
|
+
else
|
375
|
+
@gollum_page.version.to_s
|
376
|
+
end
|
377
|
+
|
378
|
+
end
|
379
|
+
|
250
380
|
#######
|
251
381
|
private
|
252
382
|
#######
|
253
383
|
|
254
|
-
#
|
384
|
+
# == Gets the right commit out of 2 commits
|
255
385
|
#
|
256
386
|
# commit_local - local commit Hash
|
257
387
|
#
|
@@ -261,6 +391,19 @@ module GollumRails
|
|
261
391
|
com = commit_local if !commit_local.nil?
|
262
392
|
return com
|
263
393
|
end
|
264
|
-
|
394
|
+
|
395
|
+
# == Updates local attributes from gollum_page class
|
396
|
+
#
|
397
|
+
def update_attrs
|
398
|
+
@name = gollum_page.name
|
399
|
+
@content= gollum_page.raw_data
|
400
|
+
@format = gollum_page.format
|
401
|
+
end
|
402
|
+
|
403
|
+
# == To static
|
404
|
+
def wiki
|
405
|
+
self.class.wiki
|
406
|
+
end
|
407
|
+
|
265
408
|
end
|
266
409
|
end
|