Sha256: c798d5473212514303408118b1c5b1022e5c2437c77ced5ca1a2aadd279bd615

Contents?: true

Size: 1.25 KB

Versions: 21

Compression:

Stored size: 1.25 KB

Contents

require 'opal/cli_runners'

module Opal
  module CliRunners
    class Server
      def initialize(output, port)
        @output ||= output || $stdout
        @port = port
      end
      attr_reader :output, :port, :server

      def run(source, argv)
        unless argv.empty?
          raise ArgumentError, 'Program arguments are not supported on the PhantomJS runner'
        end

        require 'rack'
        require 'webrick'
        require 'logger'

        @server = Rack::Server.start(
          :app       => app(source),
          :Port      => port,
          :AccessLog => [],
          :Logger    => Logger.new(output)
        )
      end

      def exit_status
        nil
      end

      def app(source)
        lambda do |env|
          case env['PATH_INFO']
          when '/'
            body = <<-HTML
            <!doctype html>
            <html>
              <head>
                <meta charset="utf-8"/>
                <script src="/cli_runner.js"></script>
              </head>
            </html>
            HTML
            [200, {}, [body]]
          when '/cli_runner.js'
            [200, {'Content-Type' => 'text/javascript'}, [source]]
          else
            [404, {}, [body]]
          end
        end
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 2 rubygems

Version Path
opal-0.9.4 lib/opal/cli_runners/server.rb
opal-0.9.3 lib/opal/cli_runners/server.rb
opal-0.9.2 lib/opal/cli_runners/server.rb
opal-0.9.0 lib/opal/cli_runners/server.rb
opal-0.9.0.rc1 lib/opal/cli_runners/server.rb
opal-0.9.0.beta2 lib/opal/cli_runners/server.rb
opal-0.9.0.beta1 lib/opal/cli_runners/server.rb
opal-0.8.1 lib/opal/cli_runners/server.rb
opal-0.8.1.rc1 lib/opal/cli_runners/server.rb
opal-wedge-0.9.0.dev lib/opal/cli_runners/server.rb
opal-0.8.0 lib/opal/cli_runners/server.rb
opal-0.8.0.rc3 lib/opal/cli_runners/server.rb
opal-0.8.0.rc2 lib/opal/cli_runners/server.rb
opal-0.8.0.rc1 lib/opal/cli_runners/server.rb
opal-0.8.0.beta1 lib/opal/cli_runners/server.rb
opal-0.7.2 lib/opal/cli_runners/server.rb
opal-0.7.1 lib/opal/cli_runners/server.rb
opal-0.7.0 lib/opal/cli_runners/server.rb
opal-0.7.0.rc1 lib/opal/cli_runners/server.rb
opal-0.7.0.beta3 lib/opal/cli_runners/server.rb