sinatra-asset-snack 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/sinatra/asset_snack/asset_snack.rb +6 -2
- data/lib/sinatra/asset_snack/compilers/asset_compiler.rb +11 -0
- data/lib/sinatra/asset_snack/compilers/coffee_script_compiler.rb +1 -1
- data/lib/sinatra/asset_snack/compilers/sass_compiler.rb +1 -1
- data/lib/sinatra/asset_snack/configuration.rb +21 -0
- data/lib/sinatra/asset_snack/extensions.rb +13 -0
- data/lib/sinatra/asset_snack/version.rb +2 -2
- data/releases/sinatra-asset-snack-0.1.0.gem +0 -0
- data/test/asset_snack_test.rb +10 -0
- data/test/compilers/coffee_script_compiler_test.rb +12 -3
- data/test/configuration_test.rb +10 -0
- data/test/test_helper.rb +3 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZGMyNDljMmRiZDJkMDFhODIzNDFjMWEyMzNjMzc5YTE5YmYxN2RmMw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OTY5N2VlZjA2OTM3ZGNmNTdkYmViMjI5YWQzNGE3MDBkMTVkMTgyZA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NDM2NGFmNzU1NDFkOTNiZDk2MzdlNjg5NGRlMjI3MmZhNTQwYjAyZGNhOTQ1
|
10
|
+
MDA1NTZjYWEzOWNmMzAwZWNlYjM2ZjA0NGExZjNkZmEyMTYzNDNiMDkwZDhk
|
11
|
+
MmU4M2JmMjViYWQzYWYzNzFiYmIyZjFiNDYyNjY0ZWQyYTQ3YjU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
OTcyNGMwMDdiZTVjM2VjYzg3MTBlZWM1NTc3ZDA3Y2M3ZTE2ZTFkNjFjMjkw
|
14
|
+
MjEyYzk3YzBjMjlmYjkzYTI3OTQ4NzNiNDhlYTUyMjBmNjM1YzJiMTMyNjkw
|
15
|
+
M2NiZTQ4YjM4NWQ4OTU1YzY3NjQwMGU4NTg5ZmRjYzcxNTk3MGQ=
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Sinatra
|
2
2
|
module AssetSnack
|
3
3
|
class << self
|
4
|
-
attr_reader :compilers
|
4
|
+
attr_reader :compilers, :configuration
|
5
5
|
|
6
6
|
def registered(app)
|
7
7
|
app.extend ClassMethods
|
@@ -9,6 +9,10 @@ module Sinatra
|
|
9
9
|
app.send(:helpers, Helpers)
|
10
10
|
end
|
11
11
|
|
12
|
+
def configure(&block)
|
13
|
+
@configuration = Configuration.new(&block)
|
14
|
+
end
|
15
|
+
|
12
16
|
def register_compiler(compiler, handled_extensions)
|
13
17
|
@compilers ||= {}
|
14
18
|
handled_extensions.each do |ext|
|
@@ -18,7 +22,7 @@ module Sinatra
|
|
18
22
|
|
19
23
|
def compiler_for(file_path)
|
20
24
|
ext = (File.extname(file_path) || '.').downcase[1..-1]
|
21
|
-
@compilers[ext.to_sym]
|
25
|
+
@compilers[ext.to_sym]
|
22
26
|
end
|
23
27
|
end # self
|
24
28
|
|
@@ -6,6 +6,17 @@ module Sinatra
|
|
6
6
|
class << self
|
7
7
|
attr_reader :compiled_mime_type, :handled_extensions
|
8
8
|
|
9
|
+
def inherited(klass)
|
10
|
+
klass.send(:define_singleton_method, :key) do
|
11
|
+
short_name = name.split('::').last
|
12
|
+
short_name.gsub(/compiler\z/i, '').underscore.to_sym
|
13
|
+
end
|
14
|
+
|
15
|
+
klass.send(:define_singleton_method, :configuration) do
|
16
|
+
AssetSnack.configuration.compilers[klass.key]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
9
20
|
def compile_file(file_path)
|
10
21
|
ext = File.extname(file_path).downcase[1..-1]
|
11
22
|
return unless ext && handled_extensions.include?(ext.to_sym)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Sinatra
|
2
|
+
module AssetSnack
|
3
|
+
class Configuration
|
4
|
+
attr_reader :compilers
|
5
|
+
|
6
|
+
def initialize(&block)
|
7
|
+
instance_exec(self, &block) unless block.nil?
|
8
|
+
end
|
9
|
+
|
10
|
+
def compilers
|
11
|
+
@compilers ||= Hash.new.tap do |hash|
|
12
|
+
Compilers.constants.each do |compiler|
|
13
|
+
next if compiler == :AssetCompiler
|
14
|
+
hash[ Compilers.const_get(compiler).key ] = {}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end # Configuration
|
20
|
+
end # AssetSnack
|
21
|
+
end # Siantra
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class String
|
2
|
+
unless instance_methods.include? :underscore
|
3
|
+
def underscore
|
4
|
+
word = self.dup
|
5
|
+
word.gsub!(/::/, '/')
|
6
|
+
word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
|
7
|
+
word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
|
8
|
+
word.tr!("-", "_")
|
9
|
+
word.downcase!
|
10
|
+
word
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
Binary file
|
data/test/asset_snack_test.rb
CHANGED
@@ -19,5 +19,15 @@ module Sinatra
|
|
19
19
|
get '/javascript/application.js'
|
20
20
|
last_response.headers['Content-Type'].must_equal 'text/js'
|
21
21
|
end
|
22
|
+
|
23
|
+
it 'should allow compiler configuration' do
|
24
|
+
Sinatra::AssetSnack.configure do |config|
|
25
|
+
config.compilers[:coffee_script] = {bare: true}
|
26
|
+
end
|
27
|
+
|
28
|
+
get '/javascript/application.js'
|
29
|
+
puts last_response.body
|
30
|
+
last_response.body.wont_include ').call(this);'
|
31
|
+
end
|
22
32
|
end
|
23
33
|
end
|
@@ -8,13 +8,22 @@ module Sinatra
|
|
8
8
|
let(:compiled) {
|
9
9
|
<<-EOS
|
10
10
|
(function() {
|
11
|
-
|
11
|
+
(function() {
|
12
|
+
var x;
|
12
13
|
|
13
|
-
|
14
|
-
});
|
14
|
+
return x = "test";
|
15
|
+
});
|
16
|
+
|
17
|
+
}).call(this);
|
15
18
|
EOS
|
16
19
|
}
|
17
20
|
|
21
|
+
before(:all) do
|
22
|
+
Sinatra::AssetSnack.configure do |config|
|
23
|
+
config.compilers[:coffee_script] = {}
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
18
27
|
it 'must compile a coffeesript file' do
|
19
28
|
subject.class.compile_file(file_path).must_equal compiled
|
20
29
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require './test/test_helper'
|
2
|
+
module Sinatra::AssetSnack
|
3
|
+
describe Configuration do
|
4
|
+
|
5
|
+
it 'should allow setting of compiler configuration' do
|
6
|
+
config = Configuration.new { |c| c.compilers[:coffee_script] = {bare: true} }
|
7
|
+
config.compilers[:coffee_script].must_equal(bare: true)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -9,6 +9,9 @@ require './lib/sinatra/asset_snack'
|
|
9
9
|
MiniTest::Reporters.use! MiniTest::Reporters::SpecReporter.new
|
10
10
|
|
11
11
|
class App < Sinatra::Base
|
12
|
+
Sinatra::AssetSnack.configure do |config|
|
13
|
+
config.compilers[:coffee_script] = {bare: true}
|
14
|
+
end
|
12
15
|
register Sinatra::AssetSnack
|
13
16
|
asset_map '/javascript/application.js', ['test/fixtures/**/*.coffee']
|
14
17
|
asset_map '/stylesheets/application.css', ['test/fixtures/**/*.scss']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra-asset-snack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Kitzelman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-03-
|
11
|
+
date: 2013-03-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|
@@ -141,12 +141,16 @@ files:
|
|
141
141
|
- lib/sinatra/asset_snack/compilers/asset_compiler.rb
|
142
142
|
- lib/sinatra/asset_snack/compilers/coffee_script_compiler.rb
|
143
143
|
- lib/sinatra/asset_snack/compilers/sass_compiler.rb
|
144
|
+
- lib/sinatra/asset_snack/configuration.rb
|
145
|
+
- lib/sinatra/asset_snack/extensions.rb
|
144
146
|
- lib/sinatra/asset_snack/helpers.rb
|
145
147
|
- lib/sinatra/asset_snack/version.rb
|
148
|
+
- releases/sinatra-asset-snack-0.1.0.gem
|
146
149
|
- sinatra-asset-snack.gemspec
|
147
150
|
- test/asset_snack_test.rb
|
148
151
|
- test/compilers/coffee_script_compiler_test.rb
|
149
152
|
- test/compilers/sass_compiler_test.rb
|
153
|
+
- test/configuration_test.rb
|
150
154
|
- test/fixtures/test.coffee
|
151
155
|
- test/fixtures/test.scss
|
152
156
|
- test/fixtures/test_two.coffee
|