Class: Orkester::Router

Inherits:
Object
  • Object
show all
Defined in:
lib/orkester/router.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRouter

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

#routesObject

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