Module: Precious::Views::RouteHelpers

Included in:
Layout, RSSView
Defined in:
lib/gollum/views/helpers.rb

Constant Summary collapse

ROUTES =
{
  'gollum' => {
    assets: 'assets',
    last_commit_info: 'last_commit_info',
    latest_changes: 'latest_changes',
    upload_file: 'upload_file',
    create: 'create',
    delete: 'delete',
    edit: 'edit',
    overview: 'overview',
    history: 'history',
    rename: 'rename',
    revert: 'revert',
    preview: 'preview',
    compare: 'compare',
    search: 'search'
  }
}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



48
49
50
51
52
53
54
# File 'lib/gollum/views/helpers.rb', line 48

def self.included(base)
  @@route_methods = {}
  self.parse_routes(ROUTES)
  define_method :routes_to_json do
    @@route_methods.to_json
  end
end

.parse_routes(routes, prefix = '') ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/gollum/views/helpers.rb', line 34

def self.parse_routes(routes, prefix = '')
  routes.each do |name, path|
    if path.respond_to?(:keys)
      self.parse_routes(path, "#{prefix}/#{name}")
    else
      route_path = "#{prefix}/#{path}"
      @@route_methods[name.to_s] = route_path
      define_method :"#{name.to_s}_path" do
        page_route(route_path)
      end
    end
  end
end

Instance Method Details

#clean_url(*url) ⇒ Object



60
61
62
63
64
65
66
67
68
# File 'lib/gollum/views/helpers.rb', line 60

def clean_url(*url)
  url.compact!
  return nil if url.empty?

  _url = ::File.join(*url)
  _url.gsub!(%r{/{2,}}, '/')
  _url.gsub!(%r{\?}, '%3F')
  _url
end

#page_route(page = nil) ⇒ Object



56
57
58
# File 'lib/gollum/views/helpers.rb', line 56

def page_route(page = nil)
  clean_url("/#{@base_url}", page)
end