sprockets-sass 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/sprockets/sass/functions.rb +45 -7
- data/lib/sprockets/sass/sass_template.rb +1 -1
- data/lib/sprockets/sass/version.rb +1 -1
- data/spec/sprockets-sass_spec.rb +42 -7
- data/sprockets-sass.gemspec +1 -1
- metadata +23 -23
@@ -3,6 +3,17 @@ require 'sass'
|
|
3
3
|
module Sprockets
|
4
4
|
module Sass
|
5
5
|
module Functions
|
6
|
+
# Using Sprockets::Context#asset_data_uri return a Base64-encoded `data:`
|
7
|
+
# URI with the contents of the asset at the specified path.
|
8
|
+
#
|
9
|
+
# === Examples
|
10
|
+
#
|
11
|
+
# background: asset-data-uri("image.jpg"); // background: url(data:image/jpeg;base64,...);
|
12
|
+
#
|
13
|
+
def asset_data_uri(source)
|
14
|
+
::Sass::Script::String.new "url(#{sprockets_context.asset_data_uri(source.value)})"
|
15
|
+
end
|
16
|
+
|
6
17
|
# Using Sprockets::Helpers#asset_path, return the full path
|
7
18
|
# for the given +source+ as a Sass String. This supports keyword
|
8
19
|
# arguments that mirror the +options+.
|
@@ -73,16 +84,40 @@ module Sprockets
|
|
73
84
|
end
|
74
85
|
::Sass::Script::String.new "url(#{image_path(source, options)})"
|
75
86
|
end
|
87
|
+
|
88
|
+
# Using Sprockets::Helpers#font_path, return the full path
|
89
|
+
# for the given +source+ as a Sass String. This supports keyword
|
90
|
+
# arguments that mirror the +options+.
|
91
|
+
#
|
92
|
+
# === Examples
|
93
|
+
#
|
94
|
+
# src: url(font-path("font.ttf")); // src: url("/assets/font.ttf");
|
95
|
+
# src: url(font-path("font.ttf", $digest: true)); // src: url("/assets/font-27a8f1f96afd8d4c67a59eb9447f45bd.ttf");
|
96
|
+
#
|
97
|
+
def font_path(source, options = {})
|
98
|
+
::Sass::Script::String.new sprockets_context.font_path(source.value, map_options(options)).to_s, :string
|
99
|
+
end
|
76
100
|
|
77
|
-
# Using Sprockets::
|
78
|
-
#
|
101
|
+
# Using Sprockets::Helpers#font_path, return the url CSS
|
102
|
+
# for the given +source+ as a Sass String. This supports keyword
|
103
|
+
# arguments that mirror the +options+.
|
79
104
|
#
|
80
105
|
# === Examples
|
81
|
-
#
|
82
|
-
# background: asset-data-uri("image.jpg"); // background: url(data:image/jpeg;base64,...);
|
83
106
|
#
|
84
|
-
|
85
|
-
|
107
|
+
# src: font-url("font.ttf"); // src: url("/assets/font.ttf");
|
108
|
+
# src: font-url("image.jpg", $digest: true); // src: url("/assets/font-27a8f1f96afd8d4c67a59eb9447f45bd.ttf");
|
109
|
+
#
|
110
|
+
def font_url(source, options = {})
|
111
|
+
# Work with the Compass #font_url API
|
112
|
+
if options.respond_to? :value
|
113
|
+
case options.value
|
114
|
+
when true
|
115
|
+
return font_path source
|
116
|
+
else
|
117
|
+
options = {}
|
118
|
+
end
|
119
|
+
end
|
120
|
+
::Sass::Script::String.new "url(#{font_path(source, options)})"
|
86
121
|
end
|
87
122
|
|
88
123
|
protected
|
@@ -109,7 +144,7 @@ module Sass::Script::Functions
|
|
109
144
|
|
110
145
|
# Hack to ensure previous API declarations (by Compass or whatever)
|
111
146
|
# don't take precedence.
|
112
|
-
[:asset_path, :asset_url, :image_path, :image_url, :asset_data_uri].each do |method|
|
147
|
+
[:asset_path, :asset_url, :image_path, :image_url, :font_path, :font_url, :asset_data_uri].each do |method|
|
113
148
|
defined?(@signatures) && @signatures.delete(method)
|
114
149
|
end
|
115
150
|
|
@@ -121,5 +156,8 @@ module Sass::Script::Functions
|
|
121
156
|
declare :image_url, [:source], :var_kwargs => true
|
122
157
|
declare :image_url, [:source, :only_path]
|
123
158
|
declare :image_url, [:source, :only_path, :cache_buster]
|
159
|
+
declare :font_path, [:source], :var_kwargs => true
|
160
|
+
declare :font_url, [:source], :var_kwargs => true
|
161
|
+
declare :font_url, [:source, :only_path]
|
124
162
|
declare :asset_data_uri, [:source]
|
125
163
|
end
|
data/spec/sprockets-sass_spec.rb
CHANGED
@@ -249,6 +249,19 @@ describe Sprockets::Sass do
|
|
249
249
|
@env['image_path_options.css'].to_s.should =~ %r(body \{\n background: url\("/themes/image-[0-9a-f]+.jpg"\); \}\n)
|
250
250
|
@env['image_url_options.css'].to_s.should =~ %r(body \{\n background: url\("/themes/image-[0-9a-f]+.jpg"\); \}\n)
|
251
251
|
end
|
252
|
+
|
253
|
+
it 'adds the #font_path helper' do
|
254
|
+
@assets.file 'font_path.css.scss', %(@font-face { src: url(font-path("font.ttf")); })
|
255
|
+
@assets.file 'font_url.css.scss', %(@font-face { src: font-url("font.ttf"); })
|
256
|
+
@assets.file 'font_path_options.css.scss', %(@font-face { src: url(font-path("font.ttf", $digest: true, $prefix: "/themes")); })
|
257
|
+
@assets.file 'font_url_options.css.scss', %(@font-face { src: font-url("font.ttf", $digest: true, $prefix: "/themes"); })
|
258
|
+
@assets.file 'font.ttf'
|
259
|
+
|
260
|
+
@env['font_path.css'].to_s.should == %(@font-face {\n src: url("/assets/font.ttf"); }\n)
|
261
|
+
@env['font_url.css'].to_s.should == %(@font-face {\n src: url("/assets/font.ttf"); }\n)
|
262
|
+
@env['font_path_options.css'].to_s.should =~ %r(@font-face \{\n src: url\("/themes/font-[0-9a-f]+.ttf"\); \}\n)
|
263
|
+
@env['font_url_options.css'].to_s.should =~ %r(@font-face \{\n src: url\("/themes/font-[0-9a-f]+.ttf"\); \}\n)
|
264
|
+
end
|
252
265
|
|
253
266
|
it 'adds the #asset_data_uri helper' do
|
254
267
|
@assets.file 'asset_data_uri.css.scss', %(body { background: asset-data-uri("image.jpg"); })
|
@@ -267,6 +280,15 @@ describe Sprockets::Sass do
|
|
267
280
|
@env['image_url.css'].to_s.should == %(body {\n background: url("/assets/image.jpg"); }\n)
|
268
281
|
@env['cache_buster.css'].to_s.should == %(body {\n background: url("/assets/image.jpg"); }\n)
|
269
282
|
end
|
283
|
+
|
284
|
+
it "mirrors Compass's #font_url helper" do
|
285
|
+
@assets.file 'font_path.css.scss', %(@font-face { src: url(font-url("font.ttf", true)); })
|
286
|
+
@assets.file 'font_url.css.scss', %(@font-face { src: font-url("font.ttf", false); })
|
287
|
+
@assets.file 'font.ttf'
|
288
|
+
|
289
|
+
@env['font_path.css'].to_s.should == %(@font-face {\n src: url("/assets/font.ttf"); }\n)
|
290
|
+
@env['font_url.css'].to_s.should == %(@font-face {\n src: url("/assets/font.ttf"); }\n)
|
291
|
+
end
|
270
292
|
|
271
293
|
it "mirrors Sass::Rails's #asset_path helpers" do
|
272
294
|
@assets.file 'asset_path.css.scss', %(body { background: url(asset-path("image.jpg", image)); })
|
@@ -277,13 +299,26 @@ describe Sprockets::Sass do
|
|
277
299
|
@env['asset_url.css'].to_s.should == %(body {\n background: url("/images/icon.jpg"); }\n)
|
278
300
|
end
|
279
301
|
|
280
|
-
it
|
281
|
-
css =
|
282
|
-
div {
|
283
|
-
color: red;
|
284
|
-
}
|
285
|
-
CSS
|
286
|
-
|
302
|
+
it 'compresses css' do
|
303
|
+
css = "div {\n color: red;\n}\n"
|
287
304
|
Sprockets::Sass::Compressor.new.compress(css).should == "div{color:red}\n"
|
288
305
|
end
|
306
|
+
|
307
|
+
describe Sprockets::Sass::SassTemplate do
|
308
|
+
describe 'initialize_engine' do
|
309
|
+
it 'initializes super if super is uninitinalized' do
|
310
|
+
Tilt::SassTemplate.stub(:engine_initialized?).and_return false
|
311
|
+
template = Sprockets::Sass::SassTemplate.new {}
|
312
|
+
template.should_receive(:require_template_library) # called from Tilt::SassTemplate.initialize
|
313
|
+
template.initialize_engine
|
314
|
+
end
|
315
|
+
|
316
|
+
it "does not initializes super if super is initinalized to silence warnings" do
|
317
|
+
Tilt::SassTemplate.stub(:engine_initialized?).and_return true
|
318
|
+
template = Sprockets::Sass::SassTemplate.new {}
|
319
|
+
template.should_not_receive(:require_template_library) # called from Tilt::SassTemplate.initialize
|
320
|
+
template.initialize_engine
|
321
|
+
end
|
322
|
+
end
|
323
|
+
end
|
289
324
|
end
|
data/sprockets-sass.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_development_dependency 'appraisal', '~> 0.4'
|
24
24
|
s.add_development_dependency 'rspec', '~> 2.6'
|
25
25
|
s.add_development_dependency 'test-construct', '~> 1.2'
|
26
|
-
s.add_development_dependency 'sprockets-helpers', '~> 0.
|
26
|
+
s.add_development_dependency 'sprockets-helpers', '~> 0.6'
|
27
27
|
s.add_development_dependency 'sass', '~> 3.1'
|
28
28
|
s.add_development_dependency 'compass', '~> 0.11'
|
29
29
|
s.add_development_dependency 'rake'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sprockets-sass
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-06-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sprockets
|
16
|
-
requirement:
|
16
|
+
requirement: &70201732598340 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '2.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: *70201732598340
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: tilt
|
27
|
-
requirement:
|
27
|
+
requirement: &70201732597840 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '1.1'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements:
|
35
|
+
version_requirements: *70201732597840
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: appraisal
|
38
|
-
requirement:
|
38
|
+
requirement: &70201732597360 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0.4'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements:
|
46
|
+
version_requirements: *70201732597360
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement:
|
49
|
+
requirement: &70201732596900 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '2.6'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements:
|
57
|
+
version_requirements: *70201732596900
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: test-construct
|
60
|
-
requirement:
|
60
|
+
requirement: &70201732596440 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,21 +65,21 @@ dependencies:
|
|
65
65
|
version: '1.2'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements:
|
68
|
+
version_requirements: *70201732596440
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: sprockets-helpers
|
71
|
-
requirement:
|
71
|
+
requirement: &70201732595980 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '0.
|
76
|
+
version: '0.6'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements:
|
79
|
+
version_requirements: *70201732595980
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: sass
|
82
|
-
requirement:
|
82
|
+
requirement: &70201731818520 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '3.1'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements:
|
90
|
+
version_requirements: *70201731818520
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: compass
|
93
|
-
requirement:
|
93
|
+
requirement: &70201731818060 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0.11'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements:
|
101
|
+
version_requirements: *70201731818060
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: rake
|
104
|
-
requirement:
|
104
|
+
requirement: &70201731817680 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements:
|
112
|
+
version_requirements: *70201731817680
|
113
113
|
description: When using Sprockets 2.0 with Sass you will eventually run into a pretty
|
114
114
|
big issue. `//= require` directives will not allow Sass mixins, variables, etc.
|
115
115
|
to be shared between files. So you'll try to use `@import`, and that'll also blow
|
@@ -162,7 +162,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
162
162
|
version: '0'
|
163
163
|
segments:
|
164
164
|
- 0
|
165
|
-
hash:
|
165
|
+
hash: 1670006435570534219
|
166
166
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
167
167
|
none: false
|
168
168
|
requirements:
|
@@ -171,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
171
171
|
version: '0'
|
172
172
|
segments:
|
173
173
|
- 0
|
174
|
-
hash:
|
174
|
+
hash: 1670006435570534219
|
175
175
|
requirements: []
|
176
176
|
rubyforge_project: sprockets-sass
|
177
177
|
rubygems_version: 1.8.11
|