Sha256: c1e8829defc39a7b969c3ec220007e8819e7a2db25e535fcc37a26fc71fd22c0

Contents?: true

Size: 1.93 KB

Versions: 1

Compression:

Stored size: 1.93 KB

Contents

require "rack/asset_compiler"
require "rack/sass_compiler"

module Rack
  class HalfPipe

    def initialize(app)
      @compilers = []

      @compilers << Rack::AssetCompiler.new(app, scripts_config)
      @compilers << Rack::AssetCompiler.new(app, bower_js_config)
      @compilers << Rack::AssetCompiler.new(app, bower_css_config)
      @compilers << Rack::SassCompiler.new(app, sass_config)

      @app = app
    end

    def call(env)
      res = @compilers[0].call(env)

      if res[0] != 404
        return res
      end

      res = @compilers[1].call(env)

      if res[0] != 404
        return res
      end

      res = @compilers[2].call(env)

      if res[0] != 404
        return res
      end

      res = @compilers[3].call(env)

      if res[0] != 404
        return res
      end

      @app.call(env)


        # @compilers.reduce(nil) do |response,compiler|
        #   response.tap{ |u| puts "response: #{response.inspect}" } || compiler.call(env).tap { |u| puts "call returned: #{u.inspect}" }
        # end

      # res || @app.call(env)

    end

    private

    def scripts_config
      {
        source_dir: 'app/scripts',
        url: '/scripts',
        source_extension: 'js',
        content_type: 'application/javascript',
        compiler: pass_thru_compiler
      }
    end

    def bower_js_config
      {
        source_dir: 'components',
        url: '/components',
        source_extension: 'js',
        content_type: 'application/javascript',
        compiler: pass_thru_compiler
      }
    end

    def bower_css_config
      {
        source_dir: 'components',
        url: '/components/css',
        source_extension: 'css',
        content_type: 'text/css',
        compiler: pass_thru_compiler
      }
    end

    def sass_config
      {
        :source_dir => 'app/styles',
        :url => '/styles'
      }
    end

    def pass_thru_compiler
      ->(source_file){
        ::File.read(source_file)
      }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
half-pipe-0.0.1 lib/rack/half-pipe.rb