sassc-embedded 1.74.1 → 1.75.2
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.
- checksums.yaml +4 -4
- data/lib/sassc/embedded/version.rb +1 -1
- data/lib/sassc/embedded.rb +83 -127
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf373b6b88c4dcdc3c784f85965562aa6e86ffffafd8ecb2b30513f2f52d51ae
|
4
|
+
data.tar.gz: d29bad09cafd09e2a5953c46ec546fe9674fc022bbae0b9092d399d4902b621c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c0ecd4e0d91d6890d2b9312a7f39889d46f58095299fa3160a7f133e2dc5efd51734ea0577c80271fedb0601357e9231d6beadd24dbff0e7e54a5b1a048ea74c
|
7
|
+
data.tar.gz: b58e4c56f4e3e41796f497885107f63765b91ec2fe81171cdc27b4d6d5d0a82909776a7453f723eee666f4e1cfedf1bedab35a75632517959e4e0cbe3b2ba909
|
data/lib/sassc/embedded.rb
CHANGED
@@ -13,11 +13,9 @@ module SassC
|
|
13
13
|
def render
|
14
14
|
return @template.dup if @template.empty?
|
15
15
|
|
16
|
-
importers = import_handler.setup(nil)
|
17
|
-
|
18
16
|
result = ::Sass.compile_string(
|
19
17
|
@template,
|
20
|
-
importer:
|
18
|
+
importer: (NoopImporter unless @options[:importer].nil?),
|
21
19
|
load_paths:,
|
22
20
|
syntax:,
|
23
21
|
url: file_url,
|
@@ -28,7 +26,7 @@ module SassC
|
|
28
26
|
style: output_style,
|
29
27
|
|
30
28
|
functions: functions_handler.setup(nil, functions: @functions),
|
31
|
-
importers:
|
29
|
+
importers: import_handler.setup(nil).concat(@options.fetch(:importers, [])),
|
32
30
|
|
33
31
|
alert_ascii: @options.fetch(:alert_ascii, false),
|
34
32
|
alert_color: @options.fetch(:alert_color, nil),
|
@@ -137,11 +135,7 @@ module SassC
|
|
137
135
|
end
|
138
136
|
|
139
137
|
def load_paths
|
140
|
-
@load_paths ||=
|
141
|
-
(@options[:load_paths] || []) + SassC.load_paths
|
142
|
-
else
|
143
|
-
[]
|
144
|
-
end
|
138
|
+
@load_paths ||= (@options[:load_paths] || []) + SassC.load_paths
|
145
139
|
end
|
146
140
|
end
|
147
141
|
|
@@ -185,6 +179,16 @@ module SassC
|
|
185
179
|
end
|
186
180
|
end
|
187
181
|
|
182
|
+
module NoopImporter
|
183
|
+
module_function
|
184
|
+
|
185
|
+
def canonicalize(...); end
|
186
|
+
|
187
|
+
def load(...); end
|
188
|
+
end
|
189
|
+
|
190
|
+
private_constant :NoopImporter
|
191
|
+
|
188
192
|
class ImportHandler
|
189
193
|
def setup(_native_options)
|
190
194
|
if @importer
|
@@ -235,15 +239,6 @@ module SassC
|
|
235
239
|
return exactly_one(try_path(path))
|
236
240
|
end
|
237
241
|
|
238
|
-
unless ext.empty?
|
239
|
-
if from_import
|
240
|
-
result = exactly_one(try_path("#{without_ext(path)}.import#{ext}"))
|
241
|
-
return warn_deprecation_ext(result) unless result.nil?
|
242
|
-
end
|
243
|
-
result = exactly_one(try_path(path))
|
244
|
-
return warn_deprecation_ext(result) unless result.nil?
|
245
|
-
end
|
246
|
-
|
247
242
|
if from_import
|
248
243
|
result = exactly_one(try_path_with_ext("#{path}.import"))
|
249
244
|
return result unless result.nil?
|
@@ -300,21 +295,6 @@ module SassC
|
|
300
295
|
ext = File.extname(path)
|
301
296
|
path.delete_suffix(ext)
|
302
297
|
end
|
303
|
-
|
304
|
-
def warn_deprecation_ext(path)
|
305
|
-
basename = File.basename(path)
|
306
|
-
warn <<~WARNING
|
307
|
-
Deprecation Warning: Importing files with extensions other than `.scss`, `.sass`, `.css` from relative path or load paths without custom SassC::Importer is deprecated.
|
308
|
-
|
309
|
-
Recommandation: Rename #{basename} to #{basename}.scss
|
310
|
-
|
311
|
-
More info: https://github.com/sass-contrib/sassc-embedded-shim-ruby/pull/86
|
312
|
-
|
313
|
-
#{path}
|
314
|
-
#{' ' * (path.length - basename.length)}#{'^' * basename.length}
|
315
|
-
WARNING
|
316
|
-
path
|
317
|
-
end
|
318
298
|
end
|
319
299
|
end
|
320
300
|
|
@@ -323,87 +303,64 @@ module SassC
|
|
323
303
|
class ImportCache
|
324
304
|
def initialize(importer)
|
325
305
|
@importer = importer
|
326
|
-
@canonical_urls = {}
|
327
|
-
@id = 0
|
328
306
|
@importer_results = {}
|
329
|
-
@
|
330
|
-
@parent_urls = [URL.path_to_file_url(File.absolute_path(@importer.options[:filename] || 'stdin'))]
|
307
|
+
@file_url = nil
|
331
308
|
end
|
332
309
|
|
333
310
|
def canonicalize(url, context)
|
334
|
-
if
|
335
|
-
canonical_url = @canonical_urls.delete(url)
|
336
|
-
unless @importer_results.key?(canonical_url)
|
337
|
-
path = URL.unescape(canonical_url)
|
338
|
-
parent_path = URL.file_url_to_path(@parent_urls.last)
|
339
|
-
canonical_url = resolve_file_url(path, parent_path, context.from_import)
|
340
|
-
return unless canonical_url
|
341
|
-
|
342
|
-
# Temporarily disable FileImporter optimization
|
343
|
-
# https://github.com/sass/dart-sass/issues/2208
|
344
|
-
#
|
345
|
-
# if ['.sass', '.scss', '.css'].include?(File.extname(URL.file_url_to_path(canonical_url)))
|
346
|
-
# @canonical_urls[url] = canonical_url
|
347
|
-
# return nil
|
348
|
-
# end
|
349
|
-
end
|
350
|
-
@parent_urls.push(canonical_url)
|
351
|
-
canonical_url
|
352
|
-
elsif url.start_with?(Protocol::LOADED)
|
353
|
-
@parent_urls.pop
|
354
|
-
Protocol::LOADED
|
355
|
-
else
|
356
|
-
parent_url = @parent_urls.last
|
357
|
-
url = URL.join(parent_url, url)
|
358
|
-
return unless url.start_with?(Protocol::FILE)
|
311
|
+
return if context.containing_url.nil?
|
359
312
|
|
360
|
-
|
361
|
-
|
313
|
+
containing_url = if context.containing_url.start_with?(Protocol::GLOB)
|
314
|
+
URL.unescape(URL.parse(context.containing_url).fragment)
|
315
|
+
else
|
316
|
+
context.containing_url
|
317
|
+
end
|
362
318
|
|
319
|
+
return unless containing_url.start_with?(Protocol::FILE)
|
320
|
+
|
321
|
+
path = URL.unescape(url)
|
322
|
+
parent_path = URL.file_url_to_path(containing_url)
|
323
|
+
parent_dir = File.dirname(parent_path)
|
324
|
+
|
325
|
+
if containing_url == context.containing_url
|
363
326
|
imports = @importer.imports(path, parent_path)
|
364
327
|
imports = [SassC::Importer::Import.new(path)] if imports.nil?
|
365
328
|
imports = [imports] unless imports.is_a?(Array)
|
366
|
-
|
367
|
-
canonical_url
|
368
|
-
|
369
|
-
|
329
|
+
canonical_url = imports_to_native(imports, parent_dir, context.from_import, url, context.containing_url)
|
330
|
+
if @importer_results.key?(canonical_url)
|
331
|
+
canonical_url
|
332
|
+
else
|
333
|
+
@file_url = canonical_url
|
334
|
+
nil
|
335
|
+
end
|
336
|
+
else
|
337
|
+
canonical_url = URL.path_to_file_url(File.absolute_path(path, parent_dir))
|
338
|
+
if @importer_results.key?(canonical_url)
|
339
|
+
canonical_url
|
340
|
+
else
|
341
|
+
@file_url = resolve_file_url(path, parent_dir, context.from_import)
|
342
|
+
nil
|
343
|
+
end
|
370
344
|
end
|
371
345
|
end
|
372
346
|
|
373
347
|
def load(canonical_url)
|
374
|
-
|
375
|
-
@importer_results.delete(canonical_url)
|
376
|
-
elsif canonical_url.start_with?(Protocol::FILE)
|
377
|
-
path = URL.file_url_to_path(canonical_url)
|
378
|
-
{
|
379
|
-
contents: File.read(path),
|
380
|
-
syntax: syntax(path),
|
381
|
-
source_map_url: canonical_url
|
382
|
-
}
|
383
|
-
elsif canonical_url.start_with?(Protocol::LOADED)
|
384
|
-
{
|
385
|
-
contents: '',
|
386
|
-
syntax: :scss
|
387
|
-
}
|
388
|
-
end
|
348
|
+
@importer_results.delete(canonical_url)
|
389
349
|
end
|
390
350
|
|
391
|
-
def find_file_url(
|
392
|
-
|
393
|
-
return unless canonical_url
|
351
|
+
def find_file_url(_url, context)
|
352
|
+
return if context.containing_url.nil? || @file_url.nil?
|
394
353
|
|
395
|
-
@
|
354
|
+
canonical_url = @file_url
|
355
|
+
@file_url = nil
|
396
356
|
canonical_url
|
397
357
|
end
|
398
358
|
|
399
359
|
private
|
400
360
|
|
401
|
-
def resolve_file_url(path,
|
402
|
-
|
403
|
-
|
404
|
-
return URL.path_to_file_url(resolved) unless resolved.nil?
|
405
|
-
end
|
406
|
-
nil
|
361
|
+
def resolve_file_url(path, parent_dir, from_import)
|
362
|
+
resolved = FileSystemImporter.resolve_path(File.absolute_path(path, parent_dir), from_import)
|
363
|
+
URL.path_to_file_url(resolved) unless resolved.nil?
|
407
364
|
end
|
408
365
|
|
409
366
|
def syntax(path)
|
@@ -417,44 +374,44 @@ module SassC
|
|
417
374
|
end
|
418
375
|
end
|
419
376
|
|
420
|
-
def
|
421
|
-
|
377
|
+
def import_to_native(import, parent_dir, from_import, canonicalize)
|
378
|
+
if import.source
|
379
|
+
canonical_url = URL.path_to_file_url(File.absolute_path(import.path, parent_dir))
|
380
|
+
@importer_results[canonical_url] = if import.source.is_a?(Hash)
|
381
|
+
{
|
382
|
+
contents: import.source[:contents],
|
383
|
+
syntax: import.source[:syntax],
|
384
|
+
source_map_url: canonical_url
|
385
|
+
}
|
386
|
+
else
|
387
|
+
{
|
388
|
+
contents: import.source,
|
389
|
+
syntax: syntax(import.path),
|
390
|
+
source_map_url: canonical_url
|
391
|
+
}
|
392
|
+
end
|
393
|
+
return canonical_url if canonicalize
|
394
|
+
elsif canonicalize
|
395
|
+
return resolve_file_url(import.path, parent_dir, from_import)
|
396
|
+
end
|
397
|
+
|
398
|
+
URL.escape(import.path)
|
399
|
+
end
|
400
|
+
|
401
|
+
def imports_to_native(imports, parent_dir, from_import, url, containing_url)
|
402
|
+
return import_to_native(imports.first, parent_dir, from_import, true) if imports.one?
|
403
|
+
|
404
|
+
canonical_url = "#{Protocol::GLOB}?#{URL.escape(url)}##{URL.escape(containing_url)}"
|
405
|
+
@importer_results[canonical_url] = {
|
422
406
|
contents: imports.flat_map do |import|
|
423
|
-
if import.source
|
424
|
-
canonical_url = URL.path_to_file_url(File.absolute_path(import.path, parent_dir))
|
425
|
-
@importer_results[canonical_url] = if import.source.is_a?(Hash)
|
426
|
-
{
|
427
|
-
contents: import.source[:contents],
|
428
|
-
syntax: import.source[:syntax],
|
429
|
-
source_map_url: canonical_url
|
430
|
-
}
|
431
|
-
else
|
432
|
-
{
|
433
|
-
contents: import.source,
|
434
|
-
syntax: syntax(import.path),
|
435
|
-
source_map_url: canonical_url
|
436
|
-
}
|
437
|
-
end
|
438
|
-
else
|
439
|
-
canonical_url = URL.escape(import.path)
|
440
|
-
end
|
441
|
-
import_url = "#{Protocol::IMPORT}#{next_id}"
|
442
|
-
loaded_url = "#{Protocol::LOADED}#{next_id}"
|
443
|
-
@canonical_urls[import_url] = canonical_url
|
444
407
|
at_rule = from_import ? '@import' : '@forward'
|
445
|
-
|
446
|
-
|
447
|
-
#{at_rule} #{Script::Value::String.quote(loaded_url)};
|
448
|
-
SCSS
|
408
|
+
url = import_to_native(import, parent_dir, from_import, false)
|
409
|
+
"#{at_rule} #{Script::Value::String.quote(url)};"
|
449
410
|
end.join("\n"),
|
450
411
|
syntax: :scss
|
451
412
|
}
|
452
|
-
end
|
453
413
|
|
454
|
-
|
455
|
-
id = @id
|
456
|
-
@id = id.next
|
457
|
-
id
|
414
|
+
canonical_url
|
458
415
|
end
|
459
416
|
end
|
460
417
|
|
@@ -610,8 +567,7 @@ module SassC
|
|
610
567
|
|
611
568
|
module Protocol
|
612
569
|
FILE = 'file:'
|
613
|
-
|
614
|
-
LOADED = 'sassc-embedded-loaded:'
|
570
|
+
GLOB = 'sassc-embedded-glob:'
|
615
571
|
end
|
616
572
|
|
617
573
|
private_constant :Protocol
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sassc-embedded
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.75.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- なつき
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-04-
|
11
|
+
date: 2024-04-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sass-embedded
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.75'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.75'
|
27
27
|
description: An embedded sass shim for SassC.
|
28
28
|
email:
|
29
29
|
- i@ntk.me
|
@@ -79,7 +79,7 @@ licenses:
|
|
79
79
|
metadata:
|
80
80
|
bug_tracker_uri: https://github.com/sass-contrib/sassc-embedded-shim-ruby/issues
|
81
81
|
documentation_uri: https://rubydoc.info/gems/sassc
|
82
|
-
source_code_uri: https://github.com/sass-contrib/sassc-embedded-shim-ruby/tree/v1.
|
82
|
+
source_code_uri: https://github.com/sass-contrib/sassc-embedded-shim-ruby/tree/v1.75.2
|
83
83
|
funding_uri: https://github.com/sponsors/ntkme
|
84
84
|
rubygems_mfa_required: 'true'
|
85
85
|
post_install_message:
|