Class: Orkester::Router
- Inherits:
-
Object
- Object
- Orkester::Router
- Defined in:
- lib/orkester/router.rb
Instance Attribute Summary collapse
-
#routes ⇒ Object
Returns the value of attribute routes.
Instance Method Summary collapse
- #add_route(route, method) ⇒ Object
-
#initialize ⇒ Router
constructor
A new instance of Router.
- #render_index(package_name) ⇒ Object
- #render_javascripts(package_name) ⇒ Object
- #render_stylesheets(package_name) ⇒ Object
- #try(env) ⇒ Object
Constructor Details
#initialize ⇒ Router
Returns a new instance of Router.
9 10 11 12 13 14 |
# 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 |
Instance Attribute Details
#routes ⇒ Object
Returns the value of attribute routes.
6 7 8 |
# File 'lib/orkester/router.rb', line 6 def routes @routes end |
Instance Method Details
#add_route(route, method) ⇒ Object
59 60 61 62 63 64 |
# File 'lib/orkester/router.rb', line 59 def add_route(route, method) self.routes.push({ regex: route, method: method }) end |
#render_index(package_name) ⇒ Object
31 32 33 34 35 36 37 38 39 |
# 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) ⇒ Object
41 42 43 44 45 46 47 48 |
# 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) ⇒ Object
50 51 52 53 54 55 56 57 |
# 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) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# 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 |