class Orkester::Router
Attributes
routes[RW]
Public Class Methods
new()
click to toggle source
# File lib/orkester/router.rb, line 9 def initialize self.routes = [] add_route(/\/orkester\/(.*)\/javascripts\/main.js/, :render_javascripts) add_route(/\/orkester\/(.*)\/stylesheets\/main.css/, :render_stylesheets) add_route(/\/orkester\/(.*)\/info/, :render_index) end
Public Instance Methods
add_route(route, method)
click to toggle source
# File lib/orkester/router.rb, line 59 def add_route(route, method) self.routes.push({ regex: route, method: method }) end
render_index(package_name)
click to toggle source
# File lib/orkester/router.rb, line 31 def render_index(package_name) path = Orkester.root.join(package_name, "index.html") if path.exist? html = File.read path else html = " No index.html " end [200, {"Content-Type" => "text/html"}, [html] ] end
render_javascripts(package_name)
click to toggle source
# File lib/orkester/router.rb, line 41 def render_javascripts(package_name) renderer = Orkester::Main.new root: Orkester.root result = renderer.compile_package package_name javascripts = result.javascripts [200, {"Content-Type" => "text/javascript"}, javascripts ] end
render_stylesheets(package_name)
click to toggle source
# File lib/orkester/router.rb, line 50 def render_stylesheets(package_name) renderer = Orkester::Main.new root: Orkester.root result = renderer.compile_package package_name stylesheets = result.stylesheets [200, {"Content-Type" => "text/css"}, stylesheets ] end
try(env)
click to toggle source
# File lib/orkester/router.rb, line 16 def try(env) req = Rack::Request.new(env) path = req.path self.routes.each do |route| match = path.match(route[:regex]) if match match = match.to_a args = match.slice 1, match.size return self.send route[:method], *args else end end nil end