sass 3.3.0.alpha.64 → 3.3.0.alpha.67
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/REVISION +1 -1
- data/VERSION +1 -1
- data/VERSION_DATE +1 -1
- data/lib/sass/engine.rb +17 -1
- data/lib/sass/plugin/compiler.rb +1 -1
- data/lib/sass/source/map.rb +15 -10
- data/test/sass/importer_test.rb +28 -6
- data/test/sass/source_map_test.rb +2 -2
- metadata +4 -4
data/REVISION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
f2051741fd9b7025a9ad2a9601cabeaea16a9c35
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.3.0.alpha.
|
1
|
+
3.3.0.alpha.67
|
data/VERSION_DATE
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
28 December 2012 21:03:29 GMT
|
data/lib/sass/engine.rb
CHANGED
@@ -273,7 +273,8 @@ module Sass
|
|
273
273
|
# to the location of the CSS file.
|
274
274
|
# @return [(String, Sass::Source::Map)] The rendered CSS and the associated
|
275
275
|
# source map
|
276
|
-
# @raise [Sass::SyntaxError] if there's an error in the document
|
276
|
+
# @raise [Sass::SyntaxError] if there's an error in the document, or if the
|
277
|
+
# public URL for this document couldn't be determined.
|
277
278
|
# @raise [Encoding::UndefinedConversionError] if the source encoding
|
278
279
|
# cannot be converted to UTF-8
|
279
280
|
# @raise [ArgumentError] if the document uses an unknown encoding with `@charset`
|
@@ -332,6 +333,21 @@ module Sass
|
|
332
333
|
private
|
333
334
|
|
334
335
|
def _render_with_sourcemap(sourcemap_uri)
|
336
|
+
if @options[:filename].nil?
|
337
|
+
raise Sass::SyntaxError.new(<<ERR)
|
338
|
+
Error generating source map: couldn't determine public URL for the source stylesheet.
|
339
|
+
No filename is available so there's nothing for the source map to link to.
|
340
|
+
ERR
|
341
|
+
elsif @options[:importer].nil? ||
|
342
|
+
!(@options[:importer].public_url(@options[:filename]) ||
|
343
|
+
@options[:importer].is_a?(Sass::Importers::Filesystem))
|
344
|
+
raise Sass::SyntaxError.new(<<ERR)
|
345
|
+
Error generating source map: couldn't determine public URL for "#{@options[:filename]}".
|
346
|
+
Without a public URL, there's nothing for the source map to link to.
|
347
|
+
Custom importers should define the #public_url method.
|
348
|
+
ERR
|
349
|
+
end
|
350
|
+
|
335
351
|
rendered, sourcemap = _to_tree.render_with_sourcemap
|
336
352
|
compressed = @options[:style] == :compressed
|
337
353
|
rendered << "\n" if rendered[-1] != ?\n
|
data/lib/sass/plugin/compiler.rb
CHANGED
@@ -331,7 +331,7 @@ module Sass::Plugin
|
|
331
331
|
end
|
332
332
|
|
333
333
|
write_file(css, rendered)
|
334
|
-
write_file(sourcemap, mapping.to_json(css)) if mapping
|
334
|
+
write_file(sourcemap, mapping.to_json(:css_path => css, :sourcemap_path => sourcemap)) if mapping
|
335
335
|
run_updated_stylesheet(filename, css, sourcemap) unless compilation_error_occured
|
336
336
|
end
|
337
337
|
|
data/lib/sass/source/map.rb
CHANGED
@@ -76,9 +76,9 @@ module Sass::Source
|
|
76
76
|
# layout of the server for the purposes of linking to source stylesheets
|
77
77
|
# that use the filesystem importer.
|
78
78
|
#
|
79
|
-
# Regardless of which options are passed to this method,
|
80
|
-
#
|
81
|
-
#
|
79
|
+
# Regardless of which options are passed to this method, source stylesheets
|
80
|
+
# that are imported using a non-default importer will only be linked to in
|
81
|
+
# the source map if their importers implement
|
82
82
|
# \{Sass::Importers::Base#public\_url\}.
|
83
83
|
#
|
84
84
|
# @option options :css_uri [String]
|
@@ -88,10 +88,8 @@ module Sass::Source
|
|
88
88
|
# @option options :sourcemap_path [String]
|
89
89
|
# The (eventual) local path of the sourcemap file.
|
90
90
|
# @return [String] The JSON string.
|
91
|
-
# @raise [ArgumentError] If neither `:css_uri` nor `:css_path`
|
92
|
-
# specified.
|
93
|
-
# @raise [Sass::SyntaxError] If the public URL of a stylesheet cannot be
|
94
|
-
# determined.
|
91
|
+
# @raise [ArgumentError] If neither `:css_uri` nor `:css_path` and
|
92
|
+
# `:sourcemap_path` are specified.
|
95
93
|
def to_json(options)
|
96
94
|
css_uri, css_path, sourcemap_path = [:css_uri, :css_path, :sourcemap_path].map {|o| options[o]}
|
97
95
|
unless css_uri || (css_path && sourcemap_path)
|
@@ -110,6 +108,7 @@ module Sass::Source
|
|
110
108
|
next_source_id = 0
|
111
109
|
line_data = []
|
112
110
|
segment_data_for_line = []
|
111
|
+
no_public_url = Set.new
|
113
112
|
|
114
113
|
# These track data necessary for the delta coding.
|
115
114
|
previous_target_line = nil
|
@@ -124,10 +123,16 @@ module Sass::Source
|
|
124
123
|
if importer.is_a?(Sass::Importers::Filesystem) && sourcemap_path
|
125
124
|
file_path = Pathname.new(importer.root).join(file)
|
126
125
|
source_uri = file_path.relative_path_from(sourcemap_path.dirname).to_s
|
126
|
+
elsif no_public_url.include?(file)
|
127
|
+
next
|
127
128
|
else
|
128
|
-
|
129
|
-
|
130
|
-
|
129
|
+
no_public_url << file
|
130
|
+
Sass::Util.sass_warn <<WARNING
|
131
|
+
WARNING: Couldn't determine public URL for "#{file}" while generating sourcemap.
|
132
|
+
Without a public URL, there's nothing for the source map to link to.
|
133
|
+
Custom importers should define the #public_url method.
|
134
|
+
WARNING
|
135
|
+
next
|
131
136
|
end
|
132
137
|
end
|
133
138
|
|
data/test/sass/importer_test.rb
CHANGED
@@ -225,9 +225,11 @@ SCSS
|
|
225
225
|
|
226
226
|
rendered, sourcemap = engine.render_with_sourcemap('http://1.example.com/style.map')
|
227
227
|
|
228
|
-
|
229
|
-
|
230
|
-
|
228
|
+
assert_warning(<<WARNING) {sourcemap.to_json(:css_uri => 'css_uri')}
|
229
|
+
WARNING: Couldn't determine public URL for "#{filename_for_test(:scss)}" while generating sourcemap.
|
230
|
+
Without a public URL, there's nothing for the source map to link to.
|
231
|
+
Custom importers should define the #public_url method.
|
232
|
+
WARNING
|
231
233
|
end
|
232
234
|
|
233
235
|
def test_source_map_with_css_uri_and_css_path_doesnt_support_filesystem_importer
|
@@ -244,9 +246,11 @@ SCSS
|
|
244
246
|
|
245
247
|
rendered, sourcemap = engine.render_with_sourcemap('http://1.example.com/style.map')
|
246
248
|
|
247
|
-
|
248
|
-
|
249
|
-
|
249
|
+
assert_warning(<<WARNING) {sourcemap.to_json(:css_uri => 'css_uri', :css_path => 'css_path')}
|
250
|
+
WARNING: Couldn't determine public URL for "#{filename_for_test(:scss)}" while generating sourcemap.
|
251
|
+
Without a public URL, there's nothing for the source map to link to.
|
252
|
+
Custom importers should define the #public_url method.
|
253
|
+
WARNING
|
250
254
|
end
|
251
255
|
|
252
256
|
def test_source_map_with_css_uri_and_sourcemap_path_supports_filesystem_importer
|
@@ -302,6 +306,24 @@ SCSS
|
|
302
306
|
JSON
|
303
307
|
end
|
304
308
|
|
309
|
+
def test_render_with_sourcemap_requires_filename
|
310
|
+
file_system_importer = Sass::Importers::Filesystem.new('.')
|
311
|
+
engine = Sass::Engine.new(".foo {a: b}", :syntax => :scss, :importer => file_system_importer)
|
312
|
+
assert_raise_message(Sass::SyntaxError, <<MESSAGE) {engine.render_with_sourcemap('sourcemap_url')}
|
313
|
+
Error generating source map: couldn't determine public URL for the source stylesheet.
|
314
|
+
No filename is available so there's nothing for the source map to link to.
|
315
|
+
MESSAGE
|
316
|
+
end
|
317
|
+
|
318
|
+
def test_render_with_sourcemap_requires_importer_with_public_url
|
319
|
+
class_importer = ClassImporter.new({"pear" => "color: green;"}, {"pear" => Time.now})
|
320
|
+
assert_raise_message(Sass::SyntaxError, <<MESSAGE) {class_importer.find("pear", {}).render_with_sourcemap('sourcemap_url')}
|
321
|
+
Error generating source map: couldn't determine public URL for "pear".
|
322
|
+
Without a public URL, there's nothing for the source map to link to.
|
323
|
+
Custom importers should define the #public_url method.
|
324
|
+
MESSAGE
|
325
|
+
end
|
326
|
+
|
305
327
|
def fixture_dir
|
306
328
|
File.join(File.dirname(__FILE__), "fixtures")
|
307
329
|
end
|
@@ -375,7 +375,7 @@ CSS
|
|
375
375
|
def test_extend_sourcemap_scss
|
376
376
|
assert_parses_with_mapping <<'SCSS', <<'CSS'
|
377
377
|
.error {
|
378
|
-
{{1}}border{{/1}}: {{2}}1px #
|
378
|
+
{{1}}border{{/1}}: {{2}}1px #ff00aa{{/2}};
|
379
379
|
{{3}}background-color{{/3}}: {{4}}#fdd{{/4}};
|
380
380
|
}
|
381
381
|
.seriousError {
|
@@ -384,7 +384,7 @@ CSS
|
|
384
384
|
}
|
385
385
|
SCSS
|
386
386
|
.error, .seriousError {
|
387
|
-
{{1}}border{{/1}}: {{2}}1px #
|
387
|
+
{{1}}border{{/1}}: {{2}}1px #ff00aa{{/2}};
|
388
388
|
{{3}}background-color{{/3}}: {{4}}#fdd{{/4}}; }
|
389
389
|
|
390
390
|
.seriousError {
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sass
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 592302987
|
5
5
|
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 3
|
9
9
|
- 0
|
10
10
|
- alpha
|
11
|
-
-
|
12
|
-
version: 3.3.0.alpha.
|
11
|
+
- 67
|
12
|
+
version: 3.3.0.alpha.67
|
13
13
|
platform: ruby
|
14
14
|
authors:
|
15
15
|
- Nathan Weizenbaum
|
@@ -19,7 +19,7 @@ autorequire:
|
|
19
19
|
bindir: bin
|
20
20
|
cert_chain: []
|
21
21
|
|
22
|
-
date: 2012-12-
|
22
|
+
date: 2012-12-28 00:00:00 -05:00
|
23
23
|
default_executable:
|
24
24
|
dependencies:
|
25
25
|
- !ruby/object:Gem::Dependency
|