gollum_rails 1.4.1 → 1.4.2
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 +14 -12
- data/HISTORY.md +9 -0
- data/README.md +1 -1
- data/gollum_rails.gemspec +3 -3
- data/lib/gollum_rails.rb +1 -1
- data/lib/gollum_rails/adapters/gollum.rb +12 -3
- data/lib/gollum_rails/adapters/gollum/page.rb +75 -44
- data/lib/gollum_rails/adapters/gollum/wiki.rb +12 -11
- data/lib/gollum_rails/page.rb +133 -45
- 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 -77
- data/spec/gollum_rails/adapters/gollum/{wiki_spec.rb → wiki_spec_off.rb} +0 -0
- data/spec/gollum_rails/page_spec.rb +124 -44
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac973e7abd2f4b27cdc5568448bc2b604a8a43bc
|
4
|
+
data.tar.gz: b8dbaa9689b6ac1ada39efc362dea305a3fe00ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02ce3f25360dd389980da220ec91ce2f8a08abccb56799933e705523da96beccf5031ead746a3f24495d713db7b64bb46287f3919e8963e1ac118da3fe75ff7e
|
7
|
+
data.tar.gz: d4a7a8b643cfbf61a6c57e3f48eadac25d6434978ba972a2e288cbeac6824198cc349bd272d38b05f6e7ec3ce71147c49ad5369beb1d27dde8e91413a7a83fbf
|
data/Gemfile.lock
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
gollum_rails (1.4.
|
4
|
+
gollum_rails (1.4.2)
|
5
5
|
activemodel (>= 4.0.0)
|
6
|
-
gollum-lib (~> 1.0.
|
6
|
+
gollum-lib (~> 1.0.4)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
@@ -46,14 +46,14 @@ GEM
|
|
46
46
|
erubis (2.7.0)
|
47
47
|
github-markdown (0.5.3)
|
48
48
|
github-markup (0.7.5)
|
49
|
-
gollum-lib (1.0.
|
49
|
+
gollum-lib (1.0.4)
|
50
50
|
github-markdown (~> 0.5.3)
|
51
51
|
github-markup (>= 0.7.5, < 1.0.0)
|
52
52
|
grit (~> 2.5.0)
|
53
|
-
nokogiri (~> 1.
|
54
|
-
pygments.rb (~> 0.5.
|
55
|
-
sanitize (~> 2.0.
|
56
|
-
stringex (~>
|
53
|
+
nokogiri (~> 1.6.0)
|
54
|
+
pygments.rb (~> 0.5.2)
|
55
|
+
sanitize (~> 2.0.6)
|
56
|
+
stringex (~> 2.0.5)
|
57
57
|
grit (2.5.0)
|
58
58
|
diff-lcs (~> 1.1)
|
59
59
|
mime-types (~> 1.15)
|
@@ -64,12 +64,14 @@ GEM
|
|
64
64
|
mime-types (~> 1.16)
|
65
65
|
treetop (~> 1.4.8)
|
66
66
|
mime-types (1.23)
|
67
|
+
mini_portile (0.5.1)
|
67
68
|
minitest (4.7.5)
|
68
69
|
multi_json (1.7.3)
|
69
|
-
nokogiri (1.
|
70
|
+
nokogiri (1.6.0)
|
71
|
+
mini_portile (~> 0.5.0)
|
70
72
|
polyglot (0.3.3)
|
71
73
|
posix-spawn (0.3.6)
|
72
|
-
pygments.rb (0.5.
|
74
|
+
pygments.rb (0.5.2)
|
73
75
|
posix-spawn (~> 0.3.6)
|
74
76
|
yajl-ruby (~> 1.1.0)
|
75
77
|
rack (1.5.2)
|
@@ -100,8 +102,8 @@ GEM
|
|
100
102
|
rspec-expectations (2.13.0)
|
101
103
|
diff-lcs (>= 1.1.3, < 2.0)
|
102
104
|
rspec-mocks (2.13.1)
|
103
|
-
sanitize (2.0.
|
104
|
-
nokogiri (>= 1.4.4
|
105
|
+
sanitize (2.0.6)
|
106
|
+
nokogiri (>= 1.4.4)
|
105
107
|
simplecov (0.7.1)
|
106
108
|
multi_json (~> 1.0)
|
107
109
|
simplecov-html (~> 0.7.1)
|
@@ -115,7 +117,7 @@ GEM
|
|
115
117
|
actionpack (>= 3.0)
|
116
118
|
activesupport (>= 3.0)
|
117
119
|
sprockets (~> 2.8)
|
118
|
-
stringex (
|
120
|
+
stringex (2.0.6)
|
119
121
|
thor (0.18.1)
|
120
122
|
thread_safe (0.1.0)
|
121
123
|
atomic
|
data/HISTORY.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
# 1.4.2 1th August 2013
|
2
|
+
* Found an issue that the Wiki was not updating from external pushes
|
3
|
+
* Some helper methods implemented
|
4
|
+
* Improved code quality
|
5
|
+
* Should be threadsaver now
|
6
|
+
* Updated documentation
|
7
|
+
|
8
|
+
# 1.4.1 26th June 2013
|
9
|
+
* Rails4
|
1
10
|
|
2
11
|
# 1.0.4 1th May 2013
|
3
12
|
* removed mutex again
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@ Gollum for Rails
|
|
6
6
|
[](https://coveralls.io/r/nirnanaaa/gollum_rails)
|
7
7
|
|
8
8
|
|
9
|
-
gollum_rails combines the git-powered wiki software gollum with the
|
9
|
+
gollum_rails combines the git-powered wiki software gollum with the extreme popular webframework rails.
|
10
10
|
It improves the lightweight "gollum" experience which is quite awesome.
|
11
11
|
|
12
12
|
with gollum_rails you can:
|
data/gollum_rails.gemspec
CHANGED
@@ -4,13 +4,13 @@ Gem::Specification.new do |s|
|
|
4
4
|
s.name = 'gollum_rails'
|
5
5
|
s.rubyforge_project = s.name
|
6
6
|
|
7
|
-
s.version = '1.4.
|
7
|
+
s.version = '1.4.2'
|
8
8
|
|
9
9
|
s.summary = 'Combines Gollum and Rails'
|
10
10
|
s.description= 'include Gollum into Rails with ease'
|
11
11
|
|
12
12
|
s.add_dependency 'activemodel', '>= 4.0.0'
|
13
|
-
s.add_dependency 'gollum-lib', '~> 1.0.
|
13
|
+
s.add_dependency 'gollum-lib', '~> 1.0.4'
|
14
14
|
|
15
15
|
s.add_development_dependency 'rspec', '~> 2.13.0'
|
16
16
|
s.add_development_dependency 'rr', '~> 1.1.1'
|
@@ -59,7 +59,7 @@ Gem::Specification.new do |s|
|
|
59
59
|
spec/gollum_rails/adapters/gollum/connector_spec.rb
|
60
60
|
spec/gollum_rails/adapters/gollum/error_spec.rb
|
61
61
|
spec/gollum_rails/adapters/gollum/page_spec.rb
|
62
|
-
spec/gollum_rails/adapters/gollum/
|
62
|
+
spec/gollum_rails/adapters/gollum/wiki_spec_off.rb
|
63
63
|
spec/gollum_rails/error_spec.rb
|
64
64
|
spec/gollum_rails/page_spec.rb
|
65
65
|
spec/gollum_rails/respository_spec.rb
|
data/lib/gollum_rails.rb
CHANGED
@@ -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,70 +18,92 @@ module GollumRails
|
|
18
18
|
|
19
19
|
Connector.page_class = self
|
20
20
|
|
21
|
-
# Gets / Sets current page
|
22
|
-
attr_accessor :page
|
23
|
-
|
24
|
-
# Gets / Sets the wiki
|
25
|
-
attr_accessor :wiki
|
26
|
-
|
27
21
|
class << self
|
28
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
|
+
|
29
40
|
# finds all versions of a page
|
30
41
|
#
|
31
42
|
# name - the pagename to search
|
43
|
+
# wiki - instance of Gollum::Wiki
|
32
44
|
#
|
33
45
|
# Returns the Gollum::Page class
|
34
|
-
def find_page(name)
|
35
|
-
|
46
|
+
def find_page(name, wiki)
|
47
|
+
path_data = parse_path(name)
|
48
|
+
wiki.paged(path_data[:name], path_data[:path], exact = true)
|
36
49
|
end
|
37
|
-
|
38
50
|
end
|
39
51
|
|
40
|
-
#
|
52
|
+
# == Creates a new page
|
41
53
|
#
|
42
|
-
# name -
|
43
|
-
#
|
44
|
-
#
|
45
|
-
#
|
54
|
+
# name - The name of the page
|
55
|
+
# content - The content of the page
|
56
|
+
# wiki - An instance of Gollum::Wiki
|
57
|
+
# type - A filetype as symbol (optional)
|
58
|
+
# commit - Commit Hash
|
46
59
|
#
|
47
|
-
# Returns the
|
48
|
-
def new_page( name, content,type=:markdown, commit={} )
|
49
|
-
|
50
|
-
|
51
|
-
|
60
|
+
# Returns the page
|
61
|
+
def new_page( name, content, wiki, type=:markdown, commit={} )
|
62
|
+
path_data = self.class.parse_path(name)
|
63
|
+
wiki.write_page( path_data[:name], type, content, commit, path_data[:path].gsub!(/^\//, "").gsub!(/(\/)+$/,'') || "" )
|
64
|
+
self.class.find_page( name, wiki )
|
52
65
|
end
|
53
66
|
|
54
|
-
#
|
67
|
+
# == Updates an existing page
|
68
|
+
#
|
69
|
+
# page - An instance of Gollum::Page
|
70
|
+
# wiki - An instance of Gollum::Wiki
|
71
|
+
# content - New content
|
72
|
+
# commit - Commit Hash
|
73
|
+
# name - A new String (optional)
|
74
|
+
# format - A filetype as symbol (optional)
|
75
|
+
#
|
76
|
+
# Returns the page
|
77
|
+
def update_page( page, wiki, content=nil, commit={}, name=nil, format=nil)
|
78
|
+
return if !page || ((!content||page.raw_data == content) && page.format == format)
|
79
|
+
name ||= page.name
|
80
|
+
format = (format || page.format).to_sym
|
81
|
+
content ||= page.raw_data
|
82
|
+
wiki.update_page(page,name,format,content.to_s,commit)
|
83
|
+
self.class.find_page( mixin(page.url_path, name), wiki )
|
84
|
+
end
|
85
|
+
|
86
|
+
# == Preview page
|
55
87
|
#
|
56
|
-
#
|
57
|
-
#
|
58
|
-
#
|
88
|
+
# wiki - An instance of Gollum::Wiki
|
89
|
+
# content - New content
|
90
|
+
# name - A String
|
91
|
+
# format - A filetype as symbol (optional)
|
59
92
|
#
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
commit_id = Connector.wiki_class.update_page (old||@page),
|
64
|
-
new[:name]||@page.name,
|
65
|
-
new[:format]||@page.format,
|
66
|
-
new[:content]||@page.raw_data,
|
67
|
-
commit
|
68
|
-
else
|
69
|
-
raise Error.new "commit must be a Hash. #{new.class} given", :crit
|
70
|
-
end
|
71
|
-
|
72
|
-
# this is very ugly. Shouldn't gollum return the new page?
|
73
|
-
@page = @page.find(new[:name]||@page.name, commit_id)
|
74
|
-
@page
|
93
|
+
def preview_page(wiki, name, content, format=:markdown)
|
94
|
+
page = wiki.preview_page(name,content,format)
|
95
|
+
page.formatted_data
|
75
96
|
end
|
76
97
|
|
77
|
-
#
|
98
|
+
# == Deletes an existing page
|
78
99
|
#
|
79
|
-
# page -
|
80
|
-
#
|
100
|
+
# page - Gollum::Page
|
101
|
+
# wiki - Gollum::Wiki
|
102
|
+
# commit - Commit Hash
|
81
103
|
#
|
82
104
|
# Returns the commit id
|
83
|
-
def delete_page( commit={}
|
84
|
-
|
105
|
+
def delete_page( page,wiki,commit={} )
|
106
|
+
wiki.delete_page(page, commit)
|
85
107
|
end
|
86
108
|
|
87
109
|
# renames an existing page
|
@@ -101,7 +123,6 @@ module GollumRails
|
|
101
123
|
#
|
102
124
|
# Returns the Gollum::Page class
|
103
125
|
def find_page(name)
|
104
|
-
puts "DEPRECATED! Use Page.find_page instead"
|
105
126
|
self.class.find_page(name)
|
106
127
|
end
|
107
128
|
|
@@ -178,6 +199,16 @@ module GollumRails
|
|
178
199
|
raise Error.new "page cannot be empty for #{__method__}", :high
|
179
200
|
end
|
180
201
|
end
|
202
|
+
|
203
|
+
private
|
204
|
+
|
205
|
+
# replaces old filename with new
|
206
|
+
def mixin(old_url, new_name)
|
207
|
+
url = old_url.split("/")
|
208
|
+
url.pop
|
209
|
+
url << new_name
|
210
|
+
url.join("/")
|
211
|
+
end
|
181
212
|
|
182
213
|
end
|
183
214
|
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
@@ -15,10 +15,6 @@ module GollumRails
|
|
15
15
|
# * find_or_initialize_by_name
|
16
16
|
#
|
17
17
|
class Page
|
18
|
-
# extend ::ActiveModel::Callbacks
|
19
|
-
# include ::ActiveModel::Validations
|
20
|
-
# include ::ActiveModel::Conversion
|
21
|
-
# extend ::ActiveModel::Naming
|
22
18
|
include ::ActiveModel::Model
|
23
19
|
|
24
20
|
|
@@ -30,16 +26,19 @@ module GollumRails
|
|
30
26
|
|
31
27
|
# Callback for delete
|
32
28
|
define_model_callbacks :delete
|
33
|
-
|
29
|
+
|
30
|
+
# Callback for initialize
|
31
|
+
define_model_callbacks :initialize
|
32
|
+
|
33
|
+
# Callback for create
|
34
|
+
define_model_callbacks :create
|
35
|
+
|
36
|
+
# Callback for commit
|
37
|
+
define_model_callbacks :commit
|
38
|
+
|
34
39
|
# static
|
35
40
|
class << self
|
36
|
-
|
37
|
-
#
|
38
|
-
attr_accessor :gollum_page
|
39
|
-
|
40
|
-
# Sets the validator
|
41
|
-
attr_writer :validator
|
42
|
-
|
41
|
+
|
43
42
|
# Finds an existing page or creates it
|
44
43
|
#
|
45
44
|
# name - The name
|
@@ -63,24 +62,26 @@ module GollumRails
|
|
63
62
|
|
64
63
|
# first creates an instance of itself and executes the save function.
|
65
64
|
#
|
66
|
-
#
|
65
|
+
# data - Hash containing the page data
|
67
66
|
#
|
68
67
|
#
|
69
68
|
# Returns an instance of Gollum::Page or false
|
70
|
-
def create(
|
71
|
-
page = Page.new
|
69
|
+
def create(data)
|
70
|
+
page = Page.new(data)
|
72
71
|
page.save
|
73
72
|
end
|
74
73
|
|
75
74
|
|
76
75
|
# calls `create` on current class. If returned value is nil an exception will be thrown
|
77
76
|
#
|
78
|
-
#
|
77
|
+
# data - Hash of Data containing all necessary stuff
|
78
|
+
# TODO write this stuff
|
79
79
|
#
|
80
80
|
#
|
81
81
|
# Returns an instance of Gollum::Page
|
82
|
-
def create!(
|
83
|
-
|
82
|
+
def create!(data)
|
83
|
+
page = Page.new(data)
|
84
|
+
page.save!
|
84
85
|
end
|
85
86
|
|
86
87
|
# Finds a page based on the name and specified version
|
@@ -89,23 +90,37 @@ module GollumRails
|
|
89
90
|
#
|
90
91
|
# Return an instance of Gollum::Page
|
91
92
|
def find(name)
|
92
|
-
|
93
|
+
self.new(gollum_page: Adapters::Gollum::Page.find_page(name, wiki))
|
93
94
|
end
|
94
95
|
|
95
96
|
# Gets all pages in the wiki
|
96
97
|
def all
|
97
98
|
wiki.pages
|
98
99
|
end
|
100
|
+
|
99
101
|
alias_method :find_all, :all
|
100
102
|
|
101
103
|
# Gets the wiki instance
|
102
104
|
def wiki
|
103
|
-
@wiki
|
105
|
+
@wiki ||= ::Gollum::Wiki.new(Adapters::Gollum::Connector.wiki_path, Adapters::Gollum::Connector.wiki_options)
|
106
|
+
end
|
107
|
+
|
108
|
+
# TODO: implement more of this (format, etc)
|
109
|
+
#
|
110
|
+
def method_missing(name, *args)
|
111
|
+
if name =~ /^find_by_(name)$/
|
112
|
+
self.find(args.first)
|
113
|
+
else
|
114
|
+
raise NoMethodError, "Method #{name} was not found"
|
115
|
+
end
|
104
116
|
end
|
105
117
|
|
106
118
|
end
|
107
119
|
|
108
|
-
|
120
|
+
# Gets / Sets the gollum page
|
121
|
+
#
|
122
|
+
attr_accessor :gollum_page
|
123
|
+
|
109
124
|
# Initializes a new Page
|
110
125
|
#
|
111
126
|
# attrs - Hash of attributes
|
@@ -114,6 +129,7 @@ module GollumRails
|
|
114
129
|
def initialize(attrs = {})
|
115
130
|
if Adapters::Gollum::Connector.enabled
|
116
131
|
attrs.each{|k,v| self.public_send("#{k}=",v)} if attrs
|
132
|
+
update_attrs if attrs[:gollum_page]
|
117
133
|
else
|
118
134
|
raise GollumInternalError, 'gollum_rails is not enabled!'
|
119
135
|
end
|
@@ -150,8 +166,11 @@ module GollumRails
|
|
150
166
|
|
151
167
|
# Gets the page class
|
152
168
|
def page
|
153
|
-
|
169
|
+
Adapters::Gollum::Page.new
|
154
170
|
end
|
171
|
+
|
172
|
+
# Gollum Page
|
173
|
+
attr_accessor :gollum_page
|
155
174
|
|
156
175
|
#############
|
157
176
|
# activemodel
|
@@ -180,37 +199,45 @@ module GollumRails
|
|
180
199
|
# Returns an instance of Gollum::Page or false
|
181
200
|
def save
|
182
201
|
run_callbacks :save do
|
183
|
-
return
|
202
|
+
return nil unless valid?
|
184
203
|
begin
|
185
|
-
page.new_page(name,content,format,commit)
|
204
|
+
@gollum_page = page.new_page(name,content,wiki,format,commit)
|
186
205
|
rescue ::Gollum::DuplicatePageError => e
|
187
|
-
|
206
|
+
@gollum_page = Adapters::Gollum::Page.find_page(name, wiki)
|
188
207
|
end
|
189
|
-
return
|
208
|
+
return self
|
190
209
|
end
|
191
210
|
end
|
192
211
|
|
193
|
-
#
|
212
|
+
# == Save without exception handling
|
213
|
+
# raises errors everytime something is wrong
|
194
214
|
#
|
195
|
-
|
196
|
-
|
197
|
-
|
215
|
+
def save!
|
216
|
+
run_callbacks :save do
|
217
|
+
raise StandardError, "record is not valid" unless valid?
|
218
|
+
raise StandardError, "commit could not be empty" if commit == {}
|
219
|
+
@gollum_page = page.new_page(name,content,wiki,format,commit)
|
220
|
+
return self
|
221
|
+
end
|
222
|
+
end
|
198
223
|
|
199
|
-
# Updates an existing page (or created)
|
224
|
+
# == Updates an existing page (or created)
|
200
225
|
#
|
201
|
-
#
|
226
|
+
# content - optional. If given the content of the gollum_page will be updated
|
227
|
+
# name - optional. If given the name of gollum_page will be updated
|
228
|
+
# format - optional. Updates the format. Uses markdown as default
|
202
229
|
# commit - optional. If given this commit will be used instead of that one, used
|
203
230
|
# to initialize the instance
|
204
231
|
#
|
205
232
|
#
|
206
|
-
# Returns an instance of
|
207
|
-
def update_attributes(
|
233
|
+
# Returns an instance of GollumRails::Page
|
234
|
+
def update_attributes(content=nil,name=nil,format=:markdown, commit=nil)
|
208
235
|
run_callbacks :update do
|
209
|
-
page.update_page
|
236
|
+
@gollum_page = page.update_page(gollum_page, wiki, content, get_right_commit(commit), name, format)
|
210
237
|
end
|
211
238
|
end
|
212
239
|
|
213
|
-
# Deletes current page (also available static. See below)
|
240
|
+
# == Deletes current page (also available static. See below)
|
214
241
|
#
|
215
242
|
# commit - optional. If given this commit will be used instead of that one, used
|
216
243
|
# to initialize the instance
|
@@ -218,7 +245,7 @@ module GollumRails
|
|
218
245
|
# Returns the commit id of the current action as String
|
219
246
|
def delete(commit=nil)
|
220
247
|
run_callbacks :delete do
|
221
|
-
page.delete_page get_right_commit(commit)
|
248
|
+
page.delete_page(gollum_page, wiki, get_right_commit(commit))
|
222
249
|
end
|
223
250
|
end
|
224
251
|
|
@@ -226,12 +253,13 @@ module GollumRails
|
|
226
253
|
#
|
227
254
|
#
|
228
255
|
def persisted?
|
229
|
-
return true if
|
256
|
+
return true if gollum_page
|
230
257
|
return false
|
231
258
|
end
|
232
|
-
|
259
|
+
|
260
|
+
# == Previews the page - Mostly used if you want to see what you do before saving
|
233
261
|
#
|
234
|
-
# This is an extremely
|
262
|
+
# This is an extremely fast method!
|
235
263
|
# 1 rendering attempt take depending on the content about 0.001 (simple markdown)
|
236
264
|
# upto 0.004 (1000 chars markdown) seconds, which is quite good
|
237
265
|
#
|
@@ -241,16 +269,63 @@ module GollumRails
|
|
241
269
|
#
|
242
270
|
# Returns a String
|
243
271
|
def preview(format=:markdown)
|
244
|
-
|
245
|
-
preview.formatted_data
|
272
|
+
page.preview_page( wiki, name, content, format )
|
246
273
|
end
|
247
274
|
|
248
|
-
|
275
|
+
# == Gets the url for current page from Gollum::Page
|
276
|
+
#
|
277
|
+
# Returns a String
|
278
|
+
def url
|
279
|
+
gollum_page.url_path
|
280
|
+
end
|
281
|
+
|
282
|
+
# == Gets the title for current Gollum::Page
|
283
|
+
#
|
284
|
+
# Returns a String
|
285
|
+
def title
|
286
|
+
gollum_page.title
|
287
|
+
end
|
288
|
+
|
289
|
+
# == Gets formatted_data for current Gollum::Page
|
290
|
+
#
|
291
|
+
# Returns a String
|
292
|
+
def html_data
|
293
|
+
gollum_page.formatted_data
|
294
|
+
end
|
295
|
+
|
296
|
+
|
297
|
+
# == Gets raw_data for current Gollum::Page
|
298
|
+
#
|
299
|
+
# Returns a String
|
300
|
+
def raw_data
|
301
|
+
gollum_page.raw_data
|
302
|
+
end
|
303
|
+
|
304
|
+
# == Gets the history of current gollum_page
|
305
|
+
#
|
306
|
+
# Returns an Array
|
307
|
+
def history
|
308
|
+
gollum_page.versions
|
309
|
+
end
|
310
|
+
|
311
|
+
# == Gets the last modified by Gollum::Committer
|
312
|
+
#
|
313
|
+
# Returns a String
|
314
|
+
def last_changed_by
|
315
|
+
"%s <%s>" % [history.last.author.name, history.last.author.email]
|
316
|
+
end
|
317
|
+
|
318
|
+
|
319
|
+
def compare_commits(sha1,sha2)
|
320
|
+
puts "NOT YET IMPLEMENTED"
|
321
|
+
end
|
322
|
+
|
323
|
+
|
249
324
|
#######
|
250
325
|
private
|
251
326
|
#######
|
252
327
|
|
253
|
-
#
|
328
|
+
# == Gets the right commit out of 2 commits
|
254
329
|
#
|
255
330
|
# commit_local - local commit Hash
|
256
331
|
#
|
@@ -260,6 +335,19 @@ module GollumRails
|
|
260
335
|
com = commit_local if !commit_local.nil?
|
261
336
|
return com
|
262
337
|
end
|
263
|
-
|
338
|
+
|
339
|
+
# == Updates local attributes from gollum_page class
|
340
|
+
#
|
341
|
+
def update_attrs
|
342
|
+
@name = gollum_page.name
|
343
|
+
@content= gollum_page.raw_data
|
344
|
+
@format = gollum_page.format
|
345
|
+
end
|
346
|
+
|
347
|
+
# == To static
|
348
|
+
def wiki
|
349
|
+
self.class.wiki
|
350
|
+
end
|
351
|
+
|
264
352
|
end
|
265
353
|
end
|
data/lib/gollum_rails/setup.rb
CHANGED
@@ -27,6 +27,9 @@ module GollumRails
|
|
27
27
|
# Gets / Sets the repository
|
28
28
|
attr_accessor :repository
|
29
29
|
|
30
|
+
# Gets / Sets the init options
|
31
|
+
attr_accessor :options
|
32
|
+
|
30
33
|
# Startup action for building wiki components
|
31
34
|
#
|
32
35
|
# Returns true or throws an exception if the path is invalid
|
@@ -39,7 +42,11 @@ module GollumRails
|
|
39
42
|
initialize_wiki @repository
|
40
43
|
end
|
41
44
|
end
|
42
|
-
|
45
|
+
end
|
46
|
+
|
47
|
+
# Wiki startup options
|
48
|
+
def options=(options)
|
49
|
+
@options = options
|
43
50
|
end
|
44
51
|
|
45
52
|
# defines block builder for Rails initializer.
|
@@ -68,7 +75,7 @@ module GollumRails
|
|
68
75
|
def initialize_wiki(path)
|
69
76
|
if path_valid? path
|
70
77
|
repository = Grit::Repo.new path.to_s
|
71
|
-
GollumRails::Adapters::Gollum::Wiki.new
|
78
|
+
GollumRails::Adapters::Gollum::Wiki.new(repository, options || {})
|
72
79
|
true
|
73
80
|
else
|
74
81
|
raise GollumInternalError, 'no repository path specified'
|
@@ -5,9 +5,15 @@ describe GollumRails::Adapters::Gollum::Connector do
|
|
5
5
|
@class = GollumRails::Adapters::Gollum::Connector
|
6
6
|
end
|
7
7
|
|
8
|
-
it "should test the Wiki
|
9
|
-
@class.
|
8
|
+
it "should test the Wiki path connector" do
|
9
|
+
@class.wiki_path.should be_a String
|
10
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
|
11
17
|
it "should test the Page class connector" do
|
12
18
|
@class.page_class.should == GollumRails::Adapters::Gollum::Page
|
13
19
|
end
|
@@ -6,83 +6,24 @@ describe GollumRails::Adapters::Gollum::Page do
|
|
6
6
|
:name => 'The Mosny',
|
7
7
|
:email => 'mosny@zyg.li'
|
8
8
|
}
|
9
|
-
|
10
|
-
@location = "#{File.dirname(__FILE__)}/../../../utils/wiki.git"
|
11
|
-
@repo = Grit::Repo.init_bare @location
|
12
|
-
@wiki = GollumRails::Adapters::Gollum::Wiki.new @repo
|
13
|
-
@page = GollumRails::Adapters::Gollum::Page.new
|
14
9
|
end
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
@page.new_page 'testpage', 'content', :markdown, @commit
|
35
|
-
@page.delete_page(@commit).should be_instance_of String
|
36
|
-
end
|
37
|
-
it "should update an existing page" do
|
38
|
-
@page.new_page 'testpage', 'content', :markdown, @commit
|
39
|
-
page = {}
|
40
|
-
page[:name] = 'test'
|
41
|
-
page[:format] = :markdown
|
42
|
-
page[:content] = "content"
|
43
|
-
@page.update_page(page, @commit)
|
44
|
-
|
45
|
-
page = []
|
46
|
-
expect{@page.update_page(page, @commit)}.to raise_error GollumRails::Adapters::Gollum::Error
|
47
|
-
|
48
|
-
page = {}
|
49
|
-
page[:content] = "test"
|
50
|
-
@page.update_page(page, @commit).raw_data.should == page[:content]
|
51
|
-
|
52
|
-
page = {}
|
53
|
-
page[:name] = "test"
|
54
|
-
@page.update_page(page, @commit).name.should == page[:name]
|
55
|
-
|
56
|
-
page = {}
|
57
|
-
page[:format] = :wiki
|
58
|
-
@page.update_page(page, @commit).format.should == :mediawiki
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
@page.delete_page(@commit)
|
63
|
-
end
|
64
|
-
it "should find a page" do
|
65
|
-
@page.new_page 'content_page', 'content', :markdown, @commit
|
66
|
-
|
67
|
-
GollumRails::Adapters::Gollum::Page.find_page("content_page")
|
68
|
-
@page.delete_page(@commit)
|
69
|
-
end
|
70
|
-
it "should test the commit methods" do
|
71
|
-
@page.new_page 'content_page', 'content', :markdown, @commit
|
72
|
-
@page.page_last_edited_date.should be_instance_of Time
|
73
|
-
@page.page_created.should be_instance_of Time
|
74
|
-
@page.page_last_commit.should be_instance_of Grit::Commit
|
75
|
-
@page.page_commit(@page.page.versions.first.id).should be_instance_of Grit::Commit
|
76
|
-
@page.page_commit_date(@page.page.versions.first.id).should be_instance_of Time
|
77
|
-
@page.page_first_commit.should be_instance_of Grit::Commit
|
78
|
-
@page.delete_page(@commit)
|
79
|
-
end
|
80
|
-
it "should test the error throwing" do
|
81
|
-
expect{@page.page_last_commit}.to raise_error GollumRails::Adapters::Gollum::Error
|
82
|
-
expect{@page.page_first_commit}.to raise_error GollumRails::Adapters::Gollum::Error
|
83
|
-
expect{@page.page_last_edited_date}.to raise_error GollumRails::Adapters::Gollum::Error
|
84
|
-
expect{@page.page_created}.to raise_error GollumRails::Adapters::Gollum::Error
|
85
|
-
expect{@page.page_commit(1)}.to raise_error GollumRails::Adapters::Gollum::Error
|
86
|
-
expect{@page.page_commit_date(1)}.to raise_error GollumRails::Adapters::Gollum::Error
|
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
|
87
28
|
end
|
88
29
|
end
|
File without changes
|
@@ -2,58 +2,139 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe "Gollum Page" do
|
4
4
|
before(:each) do
|
5
|
+
GollumRails::Setup.build do |config|
|
6
|
+
config.repository = File.join(File.dirname(__FILE__),'..','utils','wiki.git')
|
7
|
+
config.options={}
|
8
|
+
config.startup = true
|
9
|
+
end
|
10
|
+
|
5
11
|
@commit = {
|
6
|
-
:
|
7
|
-
:
|
8
|
-
:
|
12
|
+
name: "flo",
|
13
|
+
message: "commit",
|
14
|
+
email: "mosny@zyg.li"
|
9
15
|
}
|
10
16
|
@call = {
|
11
|
-
:
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:
|
17
|
+
name: "Goole",
|
18
|
+
content: "content data",
|
19
|
+
commit: @commit,
|
20
|
+
format: :markdown
|
15
21
|
}
|
16
22
|
end
|
23
|
+
|
17
24
|
describe GollumRails::Page do
|
18
|
-
class RailsModel < GollumRails::Page
|
25
|
+
class RailsModel < GollumRails::Page; end
|
19
26
|
|
27
|
+
describe "the creation of a page" do
|
28
|
+
|
29
|
+
before :each do
|
30
|
+
@rr = RailsModel.new(@call)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "saves via .save" do
|
34
|
+
@rr.save.should be_a GollumRails::Page
|
35
|
+
end
|
36
|
+
|
20
37
|
|
21
|
-
|
38
|
+
it "saves via .create" do
|
39
|
+
RailsModel.create(@call).should be_a GollumRails::Page
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
it "fails if invalid arguments are supplied via the ! create" do
|
44
|
+
args = {
|
45
|
+
name: "Gaming",
|
46
|
+
content: "content data",
|
47
|
+
commit: {},
|
48
|
+
format: :markdown
|
49
|
+
}
|
50
|
+
expect{RailsModel.create!(args)}.to raise_error StandardError #change this
|
51
|
+
end
|
52
|
+
it "has a history now" do
|
53
|
+
@rr.save
|
54
|
+
@rr.history.should be_a Array
|
55
|
+
end
|
56
|
+
it "outputs the raw_data" do
|
57
|
+
@rr.save
|
58
|
+
@rr.raw_data.should == @call[:content]
|
59
|
+
end
|
60
|
+
it "has the formatted data" do
|
61
|
+
@rr.save
|
62
|
+
@rr.html_data.should == '<p>content data</p>'
|
63
|
+
end
|
64
|
+
it "was last changed by me" do
|
65
|
+
@rr.save
|
66
|
+
@rr.last_changed_by.should == 'flo <mosny@zyg.li>'
|
67
|
+
end
|
68
|
+
it "has a title" do
|
69
|
+
@rr.save
|
70
|
+
@rr.title.should == "Goole"
|
71
|
+
end
|
72
|
+
it "has a url" do
|
73
|
+
@rr.save
|
74
|
+
@rr.url.should =="Goole"
|
75
|
+
end
|
22
76
|
|
23
|
-
it "should test the creation of a page" do
|
24
|
-
rr = RailsModel.new(@call)
|
25
|
-
rr.save.should be_instance_of Gollum::Page
|
26
|
-
rr.save!.should be_instance_of Gollum::Page
|
27
|
-
RailsModel.create(@call)
|
28
77
|
end
|
29
78
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
79
|
+
describe "the update of a page" do
|
80
|
+
before :each do
|
81
|
+
@rr = RailsModel.new(@call)
|
82
|
+
@rr.save
|
83
|
+
end
|
84
|
+
|
85
|
+
it { @rr.update_attributes({:name => "google", :format => :wiki}).should be_a Gollum::Page }
|
86
|
+
|
34
87
|
end
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
88
|
+
describe "method missings" do
|
89
|
+
|
90
|
+
it "should perform a normal find" do
|
91
|
+
RailsModel.find_by_name('Goole').should be_a GollumRails::Page
|
92
|
+
|
93
|
+
|
94
|
+
end
|
95
|
+
|
40
96
|
end
|
41
97
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
98
|
+
describe "should test the deletion of a page" do
|
99
|
+
before :each do
|
100
|
+
@rr = RailsModel.new @call
|
101
|
+
@cc = @rr.save
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should return a string" do
|
105
|
+
delete = @rr.delete
|
106
|
+
delete.should be_a String
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should return a SHA1 hash" do
|
110
|
+
delete = @rr.delete
|
111
|
+
delete.length.should == 40
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should also work was result from save" do
|
115
|
+
delete = @cc.delete
|
116
|
+
delete.should be_a String
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should test the recreation" do
|
120
|
+
delete = @rr.delete
|
121
|
+
@rr.save.should be_a GollumRails::Page
|
122
|
+
@rr.delete.should be_a String
|
123
|
+
|
52
124
|
end
|
53
125
|
end
|
54
126
|
|
127
|
+
|
128
|
+
100.times do
|
129
|
+
it "should test the preview" do
|
130
|
+
rr = RailsModel.new :content => "# content", :name => "somepage"
|
131
|
+
rr.preview.should include("<h1>content<a class=\"anchor\" id=\"content\" href=\"#content\"></a></h1>")
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
55
135
|
it "should test exception methods" do
|
56
|
-
|
136
|
+
RailsModel.create @call
|
137
|
+
expect{RailsModel.create! @call}.to raise_error Gollum::DuplicatePageError
|
57
138
|
end
|
58
139
|
|
59
140
|
it "should test the supported formats" do
|
@@ -69,11 +150,11 @@ describe "Gollum Page" do
|
|
69
150
|
rr = RailsModel.new @call
|
70
151
|
rr.name.should == "Goole"
|
71
152
|
rr.content.should == "content data"
|
72
|
-
rr.commit.should
|
153
|
+
rr.commit.should be_a Hash
|
73
154
|
rr.commit.should == @commit
|
74
155
|
rr.format.should == :markdown
|
75
156
|
rr.save
|
76
|
-
rr.page.should
|
157
|
+
rr.page.should be_a GollumRails::Adapters::Gollum::Page
|
77
158
|
end
|
78
159
|
it "should test setters" do
|
79
160
|
rr = RailsModel.new
|
@@ -87,7 +168,7 @@ describe "Gollum Page" do
|
|
87
168
|
it "should test find or initialize" do
|
88
169
|
rr = RailsModel.new @call
|
89
170
|
rr.save
|
90
|
-
RailsModel.find_or_initialize_by_name(@call[:name], @commit).should
|
171
|
+
RailsModel.find_or_initialize_by_name(@call[:name], @commit).should be_a GollumRails::Page
|
91
172
|
end
|
92
173
|
end
|
93
174
|
describe "callbacks" do
|
@@ -136,16 +217,15 @@ describe "Gollum Page" do
|
|
136
217
|
test = CallbackTest.new @call
|
137
218
|
test.persisted?.should be_false
|
138
219
|
test.save
|
139
|
-
test.delete @commit
|
140
|
-
test.save
|
141
|
-
test.update_attributes @call
|
142
|
-
test.persisted?.should be_true
|
143
220
|
end
|
144
221
|
end
|
145
222
|
describe "rails extension" do
|
223
|
+
|
146
224
|
it "should test fetch_all" do
|
147
|
-
GollumRails::Page.all.length.should ==
|
148
|
-
|
225
|
+
GollumRails::Page.all.length.should == 1
|
226
|
+
end
|
227
|
+
it "should test all" do
|
228
|
+
GollumRails::Page.find_all.length.should == 1
|
149
229
|
end
|
150
230
|
|
151
231
|
end
|
@@ -195,7 +275,7 @@ describe "Gollum Page" do
|
|
195
275
|
100.times do |time|
|
196
276
|
Thread.new do
|
197
277
|
ThreadModel.new(@call)
|
198
|
-
ThreadModel.save.should
|
278
|
+
ThreadModel.save.should be_a(GollumRails::Page)
|
199
279
|
ThreadModel.delete(@commit).length.should == 40
|
200
280
|
end
|
201
281
|
end
|
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.4.
|
4
|
+
version: 1.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Kasper
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.0.
|
33
|
+
version: 1.0.4
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.0.
|
40
|
+
version: 1.0.4
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -119,7 +119,7 @@ files:
|
|
119
119
|
- spec/gollum_rails/adapters/gollum/connector_spec.rb
|
120
120
|
- spec/gollum_rails/adapters/gollum/error_spec.rb
|
121
121
|
- spec/gollum_rails/adapters/gollum/page_spec.rb
|
122
|
-
- spec/gollum_rails/adapters/gollum/
|
122
|
+
- spec/gollum_rails/adapters/gollum/wiki_spec_off.rb
|
123
123
|
- spec/gollum_rails/error_spec.rb
|
124
124
|
- spec/gollum_rails/page_spec.rb
|
125
125
|
- spec/gollum_rails/respository_spec.rb
|
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
150
|
version: '0'
|
151
151
|
requirements: []
|
152
152
|
rubyforge_project: gollum_rails
|
153
|
-
rubygems_version: 2.0.
|
153
|
+
rubygems_version: 2.0.5
|
154
154
|
signing_key:
|
155
155
|
specification_version: 4
|
156
156
|
summary: Combines Gollum and Rails
|