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 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