Class: Volt::IndexFiles
Instance Method Summary collapse
- #call(env) ⇒ Object
- #css_files ⇒ Object
- #html ⇒ Object
-
#initialize(app, component_paths, opal_files) ⇒ IndexFiles
constructor
A new instance of IndexFiles.
- #javascript_files ⇒ Object
- #route_match?(path) ⇒ Boolean
Constructor Details
#initialize(app, component_paths, opal_files) ⇒ IndexFiles
Returns a new instance of IndexFiles.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/volt/server/rack/index_files.rb', line 7 def initialize(app, component_paths, opal_files) @app = app @component_paths = component_paths @opal_files = opal_files @@router ||= Routes.new.define do # Load routes for each component component_paths.components.values.flatten.uniq.each do |component_path| routes_path = "#{component_path}/config/routes.rb" if File.exists?(routes_path) route_file = File.read(routes_path) instance_eval(route_file, routes_path, 0) end end end end |
Instance Method Details
#call(env) ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/volt/server/rack/index_files.rb', line 33 def call(env) if route_match?(env['PATH_INFO']) [200, { 'Content-Type' => 'text/html; charset=utf-8' }, [html]] else @app.call env end end |
#css_files ⇒ Object
53 54 55 |
# File 'lib/volt/server/rack/index_files.rb', line 53 def css_files AssetFiles.new('main', @component_paths).css_files end |
#html ⇒ Object
41 42 43 44 45 46 |
# File 'lib/volt/server/rack/index_files.rb', line 41 def html index_path = File.(File.join(Volt.root, 'config/base/index.html')) html = File.read(index_path) ERB.new(html, nil, '-').result(binding) end |
#javascript_files ⇒ Object
48 49 50 51 |
# File 'lib/volt/server/rack/index_files.rb', line 48 def javascript_files # TODO: Cache somehow, this is being loaded every time AssetFiles.new('main', @component_paths).javascript_files(@opal_files) end |
#route_match?(path) ⇒ Boolean
25 26 27 28 29 30 31 |
# File 'lib/volt/server/rack/index_files.rb', line 25 def route_match?(path) params = @@router.url_to_params(path) return params if params false end |