Class: GollumRails::Adapters::Gollum::Page

Inherits:
Object
  • Object
show all
Defined in:
lib/gollum_rails/adapters/gollum/page.rb

Overview

Main page class for the Gollum connector.

It provides some awesome features for connecting gollum to gollum_rails such as:

* new_page
* find_page
* delete_page
* rename_page
* move_page
* first_page_commit
* page_creation time
* ...

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.find_page(name, wiki, version = nil) ⇒ Object

finds all versions of a page

name - the pagename to search wiki - instance of Gollum::Wiki version - optional - The pages version

Returns the Gollum::Page class



47
48
49
50
51
# File 'lib/gollum_rails/adapters/gollum/page.rb', line 47

def find_page(name, wiki, version=nil)
  wiki.clear_cache
  path_data = parse_path(name)
  wiki.paged(path_data[:name], path_data[:path], exact = true, version)
end

.parse_path(name) ⇒ Object

Parses a given filepath e.g. ‘/test/page’

Name is page path is /test

Returns a Hash



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/gollum_rails/adapters/gollum/page.rb', line 28

def parse_path(name)
  path = '/'
  name = name.to_s
  if name.include?('/')
    name = name[1..-1] if name[0] == "/"
    content = name.split('/')
    name = content.pop
    path = '/'+content.join('/')
  end
  { path: path, name: name }
end

Instance Method Details

#update_page(page, wiki, content = nil, commit = {}, name = nil, format = nil) ⇒ Object

Updates an existing page

page - An instance of Gollum::Page wiki - An instance of Gollum::Wiki content - New content commit - Commit Hash name - A new String (optional) format - A filetype as symbol (optional)

Returns the page



65
66
67
68
69
70
71
72
73
74
75
# File 'lib/gollum_rails/adapters/gollum/page.rb', line 65

def update_page( page, wiki, content=nil, commit={}, name=nil, format=nil)
  wiki.clear_cache
  return page if page.nil?
  name ||= page.name
  format = (format || page.format).to_sym
  content ||= page.raw_data
  
  wiki.update_page(page,name,format,content.to_s,commit) unless ((!content||page.raw_data == content) && page.format == format)
  
  self.class.find_page( mixin(page.url_path, name), wiki )
end