sassc-embedded 1.5.5 → 1.5.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 695381cf5ae96903ffaf015c6e406eab12c38312008ee5dce88e2f1658d6da35
4
- data.tar.gz: c5c981214af6123d9c17ff3dc4b6099bc78864419df9c29848ce146ebbfeca2d
3
+ metadata.gz: 47ccda859c1fd8acaffccd1945f5dc15907e5ca96086244a01fc3091003cf4d4
4
+ data.tar.gz: 7ee3c7121bf0c299771c4a9d3a6c1f5699a85565acea5392ddf3c3c9a6b3856f
5
5
  SHA512:
6
- metadata.gz: 9a346cd91ea29ae9618460eee15592b1316948637bae1054a343521f9a0194b290c972d37481fd91b068d47bf83d38a033efb2f9e20f3713fcbc7ad339110cbb
7
- data.tar.gz: 36d53934e2f475d3c62a42a5f7530c32668d42d4ba3a09a84eed6177bb9256d4dc7383adf64d80b6863590bffbfc676c6cec6b792b24523cbce7b516d887ff5d
6
+ metadata.gz: 6f548fbe156fa13744ced7282b9a1959f35851bd24b1c3d329542e426715a7a0dbf400e7dddff9cee76b3d73af978087a0e383f0b37e7c2c61f7c64c7c096589
7
+ data.tar.gz: 8aa5ff0798d5ffbc0699543884c2c13e953d5847b59c0ea47d4573ce68e35329ff380f16fda6b3560cc012f86a35509ab272d0f5e907b8765805a5f8c0adcd55
@@ -2,6 +2,6 @@
2
2
 
3
3
  module SassC
4
4
  module Embedded
5
- VERSION = '1.5.5'
5
+ VERSION = '1.5.8'
6
6
  end
7
7
  end
@@ -36,7 +36,7 @@ module SassC
36
36
  )
37
37
 
38
38
  @dependencies = result.loaded_urls
39
- .filter { |url| url.start_with?('file:') && url != file_url }
39
+ .filter { |url| url.start_with?(Protocol::FILE) && url != file_url }
40
40
  .map { |url| URL.file_url_to_path(url) }
41
41
  @source_map = post_process_source_map(result.source_map)
42
42
 
@@ -45,10 +45,10 @@ module SassC
45
45
  line = e.span&.start&.line
46
46
  line += 1 unless line.nil?
47
47
  url = e.span&.url
48
- path = if url&.start_with?('file:')
48
+ path = if url&.start_with?(Protocol::FILE)
49
49
  URL.parse(url).route_from(URL.path_to_file_url("#{File.absolute_path('')}/"))
50
50
  end
51
- raise SyntaxError.new(e.message, filename: path, line: line)
51
+ raise SyntaxError.new(e.full_message, filename: path, line: line)
52
52
  end
53
53
 
54
54
  private
@@ -109,7 +109,7 @@ module SassC
109
109
  data = JSON.parse(source_map)
110
110
  data['file'] = URL.parse(output_url).route_from(url).to_s if output_url
111
111
  data['sources'].map! do |source|
112
- if source.start_with?('file:')
112
+ if source.start_with?(Protocol::FILE)
113
113
  URL.parse(source).route_from(url).to_s
114
114
  else
115
115
  source
@@ -283,72 +283,55 @@ module SassC
283
283
  private_constant :FileImporter
284
284
 
285
285
  class Importer
286
- module Protocol
287
- FILE = 'file:'
288
- IMPORT = 'sassc-embedded-import:'
289
- LOAD = 'sassc-embedded-load:'
290
- LOADED = 'sassc-embedded-loaded:'
291
- end
292
-
293
- private_constant :Protocol
294
-
295
286
  def initialize(importer)
296
287
  @importer = importer
288
+
289
+ @canonical_urls = {}
290
+ @id = 0
297
291
  @importer_results = {}
298
- @load_id = 0
299
- @load_urls = {}
300
292
  @parent_urls = [URL.path_to_file_url(File.absolute_path(@importer.options[:filename] || 'stdin'))]
301
293
  end
302
294
 
303
295
  def canonicalize(url, from_import:)
304
- return url if url.start_with?(Protocol::IMPORT, Protocol::LOADED)
305
-
306
- if url.start_with?(Protocol::LOAD)
307
- url = @load_urls.delete(url.delete_prefix(Protocol::LOAD))
308
- return url if @importer_results.key?(url)
309
-
296
+ if url.start_with?(Protocol::IMPORT)
297
+ canonical_url = @canonical_urls.delete(url.delete_prefix(Protocol::IMPORT))
298
+ unless @importer_results.key?(canonical_url)
299
+ canonical_url = resolve_file_url(canonical_url, @parent_urls.last, from_import)
300
+ end
301
+ @parent_urls.push(canonical_url)
302
+ canonical_url
303
+ elsif url.start_with?(Protocol::FILE)
310
304
  path = URL.parse(url).route_from(@parent_urls.last).to_s
311
- resolved = resolve_path(path, URL.file_url_to_path(@parent_urls.last), from_import)
312
- return URL.path_to_file_url(resolved) unless resolved.nil?
313
-
314
- return
315
- end
305
+ parent_path = URL.file_url_to_path(@parent_urls.last)
316
306
 
317
- return unless url.start_with?(Protocol::FILE)
318
-
319
- path = URL.parse(url).route_from(@parent_urls.last).to_s
320
- parent_path = URL.file_url_to_path(@parent_urls.last)
307
+ imports = @importer.imports(path, parent_path)
308
+ imports = [SassC::Importer::Import.new(path)] if imports.nil?
309
+ imports = [imports] unless imports.is_a?(Array)
310
+ imports.each do |import|
311
+ import.path = File.absolute_path(import.path, File.dirname(parent_path))
312
+ end
321
313
 
322
- imports = @importer.imports(path, parent_path)
323
- imports = [SassC::Importer::Import.new(path)] if imports.nil?
324
- imports = [imports] unless imports.is_a?(Array)
325
- imports.each do |import|
326
- import.path = File.absolute_path(import.path, File.dirname(parent_path))
314
+ canonical_url = "#{Protocol::IMPORT}#{next_id}"
315
+ @importer_results[canonical_url] = imports_to_native(imports)
316
+ canonical_url
317
+ elsif url.start_with?(Protocol::LOADED)
318
+ canonical_url = Protocol::LOADED
319
+ @parent_urls.pop
320
+ canonical_url
327
321
  end
328
-
329
- import_url = URL.path_to_file_url(File.absolute_path(path, File.dirname(parent_path)))
330
- canonical_url = "#{Protocol::IMPORT}#{import_url}"
331
- @importer_results[canonical_url] = imports_to_native(imports)
332
- canonical_url
333
322
  end
334
323
 
335
324
  def load(canonical_url)
336
- if canonical_url.start_with?(Protocol::IMPORT)
325
+ if @importer_results.key?(canonical_url)
337
326
  @importer_results.delete(canonical_url)
338
327
  elsif canonical_url.start_with?(Protocol::FILE)
339
- @parent_urls.push(canonical_url)
340
- if @importer_results.key?(canonical_url)
341
- @importer_results.delete(canonical_url)
342
- else
343
- path = URL.file_url_to_path(canonical_url)
344
- {
345
- contents: File.read(path),
346
- syntax: syntax(path),
347
- source_map_url: canonical_url
348
- }
349
- end
328
+ path = URL.file_url_to_path(canonical_url)
329
+ {
330
+ contents: File.read(path),
331
+ syntax: syntax(path),
332
+ source_map_url: canonical_url
333
+ }
350
334
  elsif canonical_url.start_with?(Protocol::LOADED)
351
- @parent_urls.pop
352
335
  {
353
336
  contents: '',
354
337
  syntax: :scss
@@ -362,10 +345,12 @@ module SassC
362
345
  @load_paths ||= (@importer.options[:load_paths] || []) + SassC.load_paths
363
346
  end
364
347
 
365
- def resolve_path(path, parent_path, from_import)
348
+ def resolve_file_url(url, parent_url, from_import)
349
+ path = URL.parse(url).route_from(parent_url).to_s
350
+ parent_path = URL.file_url_to_path(parent_url)
366
351
  [File.dirname(parent_path)].concat(load_paths).each do |load_path|
367
352
  resolved = FileImporter.resolve_path(File.absolute_path(path, load_path), from_import)
368
- return resolved unless resolved.nil?
353
+ return URL.path_to_file_url(resolved) unless resolved.nil?
369
354
  end
370
355
  nil
371
356
  end
@@ -384,33 +369,38 @@ module SassC
384
369
  def imports_to_native(imports)
385
370
  {
386
371
  contents: imports.flat_map do |import|
387
- load_id = @load_id
388
- @load_id = load_id.next
389
- load_url = URL.path_to_file_url(import.path)
390
- @load_urls[load_id.to_s] = load_url
372
+ id = next_id
373
+ canonical_url = URL.path_to_file_url(import.path)
374
+ @canonical_urls[id] = canonical_url
391
375
  if import.source
392
- @importer_results[load_url] = if import.source.is_a?(Hash)
393
- {
394
- contents: import.source[:contents],
395
- syntax: import.source[:syntax],
396
- source_map_url: load_url
397
- }
398
- else
399
- {
400
- contents: import.source,
401
- syntax: syntax(import.path),
402
- source_map_url: load_url
403
- }
404
- end
376
+ @importer_results[canonical_url] = if import.source.is_a?(Hash)
377
+ {
378
+ contents: import.source[:contents],
379
+ syntax: import.source[:syntax],
380
+ source_map_url: canonical_url
381
+ }
382
+ else
383
+ {
384
+ contents: import.source,
385
+ syntax: syntax(import.path),
386
+ source_map_url: canonical_url
387
+ }
388
+ end
405
389
  end
406
390
  [
407
- "@import \"#{Protocol::LOAD}#{load_id}\";",
408
- "@import \"#{Protocol::LOADED}#{load_id}\";"
391
+ "@import \"#{Protocol::IMPORT}#{id}\";",
392
+ "@import \"#{Protocol::LOADED}#{id}\";"
409
393
  ]
410
394
  end.join("\n"),
411
395
  syntax: :scss
412
396
  }
413
397
  end
398
+
399
+ def next_id
400
+ id = @id
401
+ @id = id.next
402
+ id.to_s
403
+ end
414
404
  end
415
405
 
416
406
  private_constant :Importer
@@ -542,6 +532,14 @@ module SassC
542
532
  end
543
533
  end
544
534
 
535
+ module Protocol
536
+ FILE = 'file:'
537
+ IMPORT = 'sassc-embedded-import:'
538
+ LOADED = 'sassc-embedded-loaded:'
539
+ end
540
+
541
+ private_constant :Protocol
542
+
545
543
  module URL
546
544
  PARSER = URI::Parser.new({ RESERVED: ';/?:@&=+$,' })
547
545
 
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.5.5
4
+ version: 1.5.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - なつき
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-06 00:00:00.000000000 Z
11
+ date: 2022-04-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sassc
@@ -138,8 +138,8 @@ homepage: https://github.com/ntkme/sassc-embedded-polyfill-ruby
138
138
  licenses:
139
139
  - MIT
140
140
  metadata:
141
- documentation_uri: https://rubydoc.info/gems/sassc-embedded/1.5.5
142
- source_code_uri: https://github.com/ntkme/sassc-embedded-polyfill-ruby/tree/v1.5.5
141
+ documentation_uri: https://rubydoc.info/gems/sassc-embedded/1.5.8
142
+ source_code_uri: https://github.com/ntkme/sassc-embedded-polyfill-ruby/tree/v1.5.8
143
143
  funding_uri: https://github.com/sponsors/ntkme
144
144
  post_install_message:
145
145
  rdoc_options: []