Patch for unsupported formats in sprockets #90
@ -2,6 +2,9 @@ require 'pathname'
|
|||||||
|
|
||||||
module Jasmine
|
module Jasmine
|
||||||
module Headless
|
module Headless
|
||||||
|
|
||||||
|
EXCLUDED_FORMATS = %w{less sass scss erb str}
|
||||||
|
|
||||||
autoload :CommandLine, 'jasmine/headless/command_line'
|
autoload :CommandLine, 'jasmine/headless/command_line'
|
||||||
|
|
||||||
autoload :CoffeeScriptCache, 'jasmine/headless/coffee_script_cache'
|
autoload :CoffeeScriptCache, 'jasmine/headless/coffee_script_cache'
|
||||||
@ -16,11 +19,14 @@ module Jasmine
|
|||||||
autoload :UniqueAssetList, 'jasmine/headless/unique_asset_list'
|
autoload :UniqueAssetList, 'jasmine/headless/unique_asset_list'
|
||||||
|
|
||||||
autoload :TemplateWriter, 'jasmine/headless/template_writer'
|
autoload :TemplateWriter, 'jasmine/headless/template_writer'
|
||||||
|
|
||||||
|
autoload :FileChecker, 'jasmine/headless/file_checker'
|
||||||
|
|
||||||
autoload :CoffeeTemplate, 'jasmine/headless/coffee_template'
|
autoload :CoffeeTemplate, 'jasmine/headless/coffee_template'
|
||||||
autoload :JSTemplate, 'jasmine/headless/js_template'
|
autoload :JSTemplate, 'jasmine/headless/js_template'
|
||||||
autoload :JSTTemplate, 'jasmine/headless/jst_template'
|
autoload :JSTTemplate, 'jasmine/headless/jst_template'
|
||||||
autoload :CSSTemplate, 'jasmine/headless/css_template'
|
autoload :CSSTemplate, 'jasmine/headless/css_template'
|
||||||
|
autoload :NilTemplate, 'jasmine/headless/nil_template'
|
||||||
|
|
||||||
autoload :Report, 'jasmine/headless/report'
|
autoload :Report, 'jasmine/headless/report'
|
||||||
autoload :ReportMessage, 'jasmine/headless/report_message'
|
autoload :ReportMessage, 'jasmine/headless/report_message'
|
||||||
|
@ -3,11 +3,17 @@ require 'rainbow'
|
|||||||
|
|
||||||
module Jasmine::Headless
|
module Jasmine::Headless
|
||||||
class CoffeeTemplate < Tilt::Template
|
class CoffeeTemplate < Tilt::Template
|
||||||
|
include Jasmine::Headless::FileChecker
|
||||||
|
|
||||||
self.default_mime_type = 'application/javascript'
|
self.default_mime_type = 'application/javascript'
|
||||||
|
|
||||||
def prepare ; end
|
def prepare ; end
|
||||||
|
|
||||||
def evaluate(scope, locals, &block)
|
def evaluate(scope, locals, &block)
|
||||||
|
if bad_format?(file)
|
||||||
|
alert_bad_format(file)
|
||||||
|
return ''
|
||||||
|
end
|
||||||
begin
|
begin
|
||||||
cache = Jasmine::Headless::CoffeeScriptCache.new(file)
|
cache = Jasmine::Headless::CoffeeScriptCache.new(file)
|
||||||
source = cache.handle
|
source = cache.handle
|
||||||
|
@ -2,11 +2,16 @@ require 'tilt/template'
|
|||||||
|
|
||||||
module Jasmine::Headless
|
module Jasmine::Headless
|
||||||
class CSSTemplate < Tilt::Template
|
class CSSTemplate < Tilt::Template
|
||||||
|
include Jasmine::Headless::FileChecker
|
||||||
self.default_mime_type = 'text/css'
|
self.default_mime_type = 'text/css'
|
||||||
|
|
||||||
def prepare ; end
|
def prepare ; end
|
||||||
|
|
||||||
def evaluate(scope, locals, &block)
|
def evaluate(scope, locals, &block)
|
||||||
|
if bad_format?(file)
|
||||||
|
alert_bad_format(file)
|
||||||
|
return ''
|
||||||
|
end
|
||||||
file ? %{<link rel="stylesheet" href="#{file}" type="text/css" />} : data
|
file ? %{<link rel="stylesheet" href="#{file}" type="text/css" />} : data
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
10
lib/jasmine/headless/file_checker.rb
Normal file
10
lib/jasmine/headless/file_checker.rb
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
module Jasmine::Headless::FileChecker
|
||||||
|
def bad_format?(file)
|
||||||
|
return if file.nil?
|
||||||
|
::Jasmine::Headless::EXCLUDED_FORMATS.any? {|format| file.include?(".#{format}") }
|
||||||
|
end
|
||||||
|
|
||||||
|
def alert_bad_format(file)
|
||||||
|
puts "[%s] %s: %s" % [ 'Skipping File'.color(:red), file.color(:yellow), "unsupported format".color(:white) ]
|
||||||
|
end
|
||||||
|
end
|
@ -6,6 +6,7 @@ require 'sprockets'
|
|||||||
require 'sprockets/engines'
|
require 'sprockets/engines'
|
||||||
|
|
||||||
module Jasmine::Headless
|
module Jasmine::Headless
|
||||||
|
|
||||||
class FilesList
|
class FilesList
|
||||||
class << self
|
class << self
|
||||||
def vendor_asset_paths
|
def vendor_asset_paths
|
||||||
@ -39,8 +40,8 @@ module Jasmine::Headless
|
|||||||
|
|
||||||
# ...and unregister ones we don't want/need
|
# ...and unregister ones we don't want/need
|
||||||
Sprockets.instance_eval do
|
Sprockets.instance_eval do
|
||||||
%w{less sass scss erb str}.each do |extension|
|
EXCLUDED_FORMATS.each do |extension|
|
||||||
@engines.delete(".#{extension}")
|
register_engine ".#{extension}", Jasmine::Headless::NilTemplate
|
||||||
end
|
end
|
||||||
|
|
||||||
register_engine '.coffee', Jasmine::Headless::CoffeeTemplate
|
register_engine '.coffee', Jasmine::Headless::CoffeeTemplate
|
||||||
|
@ -2,11 +2,16 @@ require 'tilt/template'
|
|||||||
|
|
||||||
module Jasmine::Headless
|
module Jasmine::Headless
|
||||||
class JSTemplate < Tilt::Template
|
class JSTemplate < Tilt::Template
|
||||||
|
include Jasmine::Headless::FileChecker
|
||||||
self.default_mime_type = 'application/javascript'
|
self.default_mime_type = 'application/javascript'
|
||||||
|
|
||||||
def prepare ; end
|
def prepare ; end
|
||||||
|
|
||||||
def evaluate(scope, locals, &block)
|
def evaluate(scope, locals, &block)
|
||||||
|
if bad_format?(file)
|
||||||
|
alert_bad_format(file)
|
||||||
|
return ''
|
||||||
|
end
|
||||||
if data[%r{^<script type="text/javascript"}]
|
if data[%r{^<script type="text/javascript"}]
|
||||||
data
|
data
|
||||||
else
|
else
|
||||||
|
@ -2,7 +2,12 @@ require 'sprockets/jst_processor'
|
|||||||
|
|
||||||
module Jasmine::Headless
|
module Jasmine::Headless
|
||||||
class JSTTemplate < Sprockets::JstProcessor
|
class JSTTemplate < Sprockets::JstProcessor
|
||||||
|
include Jasmine::Headless::FileChecker
|
||||||
def evaluate(*args)
|
def evaluate(*args)
|
||||||
|
if bad_format?(file)
|
||||||
|
alert_bad_format(file)
|
||||||
|
return ''
|
||||||
|
end
|
||||||
%{<script type="text/javascript">#{super}</script>}
|
%{<script type="text/javascript">#{super}</script>}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
14
lib/jasmine/headless/nil_template.rb
Normal file
14
lib/jasmine/headless/nil_template.rb
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
require 'tilt/template'
|
||||||
|
require 'rainbow'
|
||||||
|
|
||||||
|
module Jasmine::Headless
|
||||||
|
class NilTemplate < Tilt::Template
|
||||||
|
|
||||||
|
def prepare ; end
|
||||||
|
|
||||||
|
def evaluate(scope, locals, &block)
|
||||||
|
return ''
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -4,8 +4,8 @@ describe 'sprockets' do
|
|||||||
it 'should pull in the code via sprockets' do
|
it 'should pull in the code via sprockets' do
|
||||||
files = %x{bin/jasmine-headless-webkit -l -j spec/jasmine/with_sprockets_includes/with_sprockets_includes.yml}
|
files = %x{bin/jasmine-headless-webkit -l -j spec/jasmine/with_sprockets_includes/with_sprockets_includes.yml}
|
||||||
$?.exitstatus.should == 0
|
$?.exitstatus.should == 0
|
||||||
|
|
||||||
files.lines.to_a.should contain_in_order_in_file_list(
|
files.lines.to_a.should contain_in_order_in_file_list(
|
||||||
|
'assets/application.js.erb: unsupported format',
|
||||||
'vendor/assets/javascripts/jquery.js',
|
'vendor/assets/javascripts/jquery.js',
|
||||||
'templates/that.jst.ejs',
|
'templates/that.jst.ejs',
|
||||||
'templates/this.jst',
|
'templates/this.jst',
|
||||||
|
22
spec/lib/jasmine/headless/file_checker_spec.rb
Normal file
22
spec/lib/jasmine/headless/file_checker_spec.rb
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Jasmine::Headless::FileChecker do
|
||||||
|
include FakeFS::SpecHelpers
|
||||||
|
|
||||||
|
let(:test_class) do
|
||||||
|
object = Object.new
|
||||||
|
object.class.send(:include, Jasmine::Headless::FileChecker)
|
||||||
|
object
|
||||||
|
end
|
||||||
|
|
||||||
|
context "bad_format?" do
|
||||||
|
it "should return false wth correct format" do
|
||||||
|
test_class.bad_format?('foobar.js').should be_false
|
||||||
|
end
|
||||||
|
it "should return false wth wrong format" do
|
||||||
|
test_class.bad_format?('foobar.js.erb').should be_true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
31
spec/lib/jasmine/headless/nil_template_spec.rb
Normal file
31
spec/lib/jasmine/headless/nil_template_spec.rb
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Jasmine::Headless::NilTemplate do
|
||||||
|
include FakeFS::SpecHelpers
|
||||||
|
|
||||||
|
let(:template) { described_class.new(file) { data } }
|
||||||
|
let(:file) { 'file' }
|
||||||
|
let(:data) { '' }
|
||||||
|
|
||||||
|
subject { template.render }
|
||||||
|
|
||||||
|
before do
|
||||||
|
File.open(file, 'wb') if file
|
||||||
|
end
|
||||||
|
|
||||||
|
context "no file'" do
|
||||||
|
let(:file) { nil }
|
||||||
|
|
||||||
|
it { should == data }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'file' do
|
||||||
|
it { should == '' }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'script as first thing' do
|
||||||
|
let(:data) { '' }
|
||||||
|
|
||||||
|
it { should == data }
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user