Sha256: 1cb9a53badced43d0cb292a6a0b941b90b6595bc808defccf61748b71214d172

Contents?: true

Size: 818 Bytes

Versions: 5

Compression:

Stored size: 818 Bytes

Contents

require 'stringio'
require 'volt'
require 'volt/server/rack/component_code'

class ComponentHandler
  def initialize(component_paths)
    @component_paths = component_paths
  end

  def call(env)
    req = Rack::Request.new(env)

    # TODO: Sanatize template path
    component_name = req.path.strip.gsub(/^\/components\//, '').gsub(/[.]js$/, '')

    javascript_code = compile_for_component(component_name)

    return [200, {"Content-Type" => "text/html; charset=utf-8"}, StringIO.new(javascript_code)]
  end

  def compile_for_component(component_name)
    code = ComponentCode.new(component_name, @component_paths).code

    # Add the lib directory to the load path
    Opal.append_path(Volt.root + '/lib')

    # Compile the code
    javascript_code = Opal.compile(code)

    return javascript_code

  end


end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
volt-0.7.19 lib/volt/server/component_handler.rb
volt-0.7.18 lib/volt/server/component_handler.rb
volt-0.7.17 lib/volt/server/component_handler.rb
volt-0.7.16 lib/volt/server/component_handler.rb
volt-0.7.15 lib/volt/server/component_handler.rb