register non supported formats to there own handler and return there contents as empty so sprokets requres do not have to be changed for work. This will report to STDOUT if the file has been skipped
This commit is contained in:
parent
1099773484
commit
297f822da1
@ -2,6 +2,9 @@ require 'pathname'
|
||||
|
||||
module Jasmine
|
||||
module Headless
|
||||
|
||||
EXCLUDED_FORMATS = %w{less sass scss erb str}
|
||||
|
||||
autoload :CommandLine, 'jasmine/headless/command_line'
|
||||
|
||||
autoload :CoffeeScriptCache, 'jasmine/headless/coffee_script_cache'
|
||||
@ -16,11 +19,14 @@ module Jasmine
|
||||
autoload :UniqueAssetList, 'jasmine/headless/unique_asset_list'
|
||||
|
||||
autoload :TemplateWriter, 'jasmine/headless/template_writer'
|
||||
|
||||
autoload :FileChecker, 'jasmine/headless/file_checker'
|
||||
|
||||
autoload :CoffeeTemplate, 'jasmine/headless/coffee_template'
|
||||
autoload :JSTemplate, 'jasmine/headless/js_template'
|
||||
autoload :JSTTemplate, 'jasmine/headless/jst_template'
|
||||
autoload :CSSTemplate, 'jasmine/headless/css_template'
|
||||
autoload :NilTemplate, 'jasmine/headless/nil_template'
|
||||
|
||||
autoload :Report, 'jasmine/headless/report'
|
||||
autoload :ReportMessage, 'jasmine/headless/report_message'
|
||||
|
@ -3,11 +3,17 @@ require 'rainbow'
|
||||
|
||||
module Jasmine::Headless
|
||||
class CoffeeTemplate < Tilt::Template
|
||||
include Jasmine::Headless::FileChecker
|
||||
|
||||
self.default_mime_type = 'application/javascript'
|
||||
|
||||
def prepare ; end
|
||||
|
||||
def evaluate(scope, locals, &block)
|
||||
if bad_format?(file)
|
||||
alert_bad_format(file)
|
||||
return ''
|
||||
end
|
||||
begin
|
||||
cache = Jasmine::Headless::CoffeeScriptCache.new(file)
|
||||
source = cache.handle
|
||||
|
@ -2,11 +2,16 @@ require 'tilt/template'
|
||||
|
||||
module Jasmine::Headless
|
||||
class CSSTemplate < Tilt::Template
|
||||
include Jasmine::Headless::FileChecker
|
||||
self.default_mime_type = 'text/css'
|
||||
|
||||
def prepare ; end
|
||||
|
||||
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
|
||||
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'
|
||||
|
||||
module Jasmine::Headless
|
||||
|
||||
class FilesList
|
||||
class << self
|
||||
def vendor_asset_paths
|
||||
@ -39,8 +40,8 @@ module Jasmine::Headless
|
||||
|
||||
# ...and unregister ones we don't want/need
|
||||
Sprockets.instance_eval do
|
||||
%w{less sass scss erb str}.each do |extension|
|
||||
@engines.delete(".#{extension}")
|
||||
EXCLUDED_FORMATS.each do |extension|
|
||||
register_engine ".#{extension}", Jasmine::Headless::NilTemplate
|
||||
end
|
||||
|
||||
register_engine '.coffee', Jasmine::Headless::CoffeeTemplate
|
||||
|
@ -2,11 +2,16 @@ require 'tilt/template'
|
||||
|
||||
module Jasmine::Headless
|
||||
class JSTemplate < Tilt::Template
|
||||
include Jasmine::Headless::FileChecker
|
||||
self.default_mime_type = 'application/javascript'
|
||||
|
||||
def prepare ; end
|
||||
|
||||
def evaluate(scope, locals, &block)
|
||||
if bad_format?(file)
|
||||
alert_bad_format(file)
|
||||
return ''
|
||||
end
|
||||
if data[%r{^<script type="text/javascript"}]
|
||||
data
|
||||
else
|
||||
|
@ -2,7 +2,12 @@ require 'sprockets/jst_processor'
|
||||
|
||||
module Jasmine::Headless
|
||||
class JSTTemplate < Sprockets::JstProcessor
|
||||
include Jasmine::Headless::FileChecker
|
||||
def evaluate(*args)
|
||||
if bad_format?(file)
|
||||
alert_bad_format(file)
|
||||
return ''
|
||||
end
|
||||
%{<script type="text/javascript">#{super}</script>}
|
||||
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
|
||||
files = %x{bin/jasmine-headless-webkit -l -j spec/jasmine/with_sprockets_includes/with_sprockets_includes.yml}
|
||||
$?.exitstatus.should == 0
|
||||
|
||||
files.lines.to_a.should contain_in_order_in_file_list(
|
||||
'assets/application.js.erb: unsupported format',
|
||||
'vendor/assets/javascripts/jquery.js',
|
||||
'templates/that.jst.ejs',
|
||||
'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