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