Namespace (#1328)
* CSS to SCSS * Use sprockets * Use Sprockets helpers * Fix gollum.editor.js error when changing language * Add keybinding files required by ace and some ace ext files that are required or might be useful. * Move app paths to /gollum namespace, add route helpers for view templates * Use path helper for links in page view * Use path helper methods in javascript assets * Refactored sprockets helpers for mustache * Remove debugging
This commit is contained in:
+50
-18
@@ -2,31 +2,63 @@ require 'yaml'
|
||||
|
||||
module Precious
|
||||
module Views
|
||||
module RouteHelpers
|
||||
ROUTES = {
|
||||
'gollum' => {
|
||||
last_commit_info: 'last-commit-info',
|
||||
latest_changes: 'latest_changes',
|
||||
upload_file: 'uploadFile',
|
||||
create: 'create',
|
||||
delete: 'delete',
|
||||
edit: 'edit',
|
||||
pages: 'pages',
|
||||
history: 'history',
|
||||
rename: 'rename',
|
||||
preview: 'preview',
|
||||
compare: 'compare',
|
||||
search: 'search'
|
||||
}
|
||||
}
|
||||
|
||||
def self.parse_routes(routes, prefix = '')
|
||||
routes.each do |name, path|
|
||||
if path.respond_to?(:keys)
|
||||
self.parse_routes(path, "#{prefix}/#{name}")
|
||||
else
|
||||
define_method :"#{name.to_s}_path" do
|
||||
"#{base_url}/#{prefix}/#{path}".gsub(/\/{2,}/, '/') # remove double slashes
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.included(base)
|
||||
self.parse_routes(ROUTES)
|
||||
end
|
||||
end
|
||||
|
||||
module SprocketsHelpers
|
||||
def self.included(base)
|
||||
|
||||
def helper_proc_with_options(method)
|
||||
Proc.new do |args|
|
||||
def sprockets_stylesheet_tag
|
||||
lambda do |args|
|
||||
args = args.split(' ')
|
||||
if args.size > 1 then
|
||||
options = args[1..-1].join(' ')
|
||||
options = YAML.safe_load("---\n#{options}\n", [Symbol])
|
||||
end
|
||||
options = options.respond_to?(:to_h) ? options.to_h : {}
|
||||
options = options.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
|
||||
send(method, args[0], options)
|
||||
end
|
||||
end
|
||||
|
||||
['stylesheet_path','javascript_path', 'image_path'].each do |method|
|
||||
define_method :"#{method}_mustache" do
|
||||
Proc.new {|args| send(method.to_sym, args)}
|
||||
name = args[0]
|
||||
options = {:media => :all}
|
||||
options[:media] = :print if args[1] == 'print'
|
||||
send(:stylesheet_tag, name, options)
|
||||
end
|
||||
end
|
||||
|
||||
['stylesheet_tag','javascript_tag'].each do |method|
|
||||
define_method :"#{method}_mustache" do
|
||||
helper_proc_with_options(method.to_sym)
|
||||
def sprockets_javascript_tag
|
||||
lambda do |name|
|
||||
send(:javascript_tag, name)
|
||||
end
|
||||
end
|
||||
|
||||
def sprockets_image_path
|
||||
lambda do |args|
|
||||
send(:image_path, name)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user