sass-embedded 0.14.0 → 0.15.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1c998b528ffddfc218f32dbefa09559dbdf519cf8a430f8dc9a58d4cae8a7b2a
4
- data.tar.gz: 84bb150040b3e01d68b7673f00ab08041deb98e357cb653a01ca99e40569f553
3
+ metadata.gz: 8b1ad905f18295ab48835d21b1e6a9c644a860154b37531eeaae2f50f16f70e9
4
+ data.tar.gz: 229fe63046318d8ce512683d11e3868e8c70d6b28897badeb74be7757ff63e7e
5
5
  SHA512:
6
- metadata.gz: cb4dd021d2dfd85b652dcf88c523e106c84a8ebcfa8e158c02f5a8b43aa4fc852b506dd39b33cf83766253be59bb084b7612a49165883eca4062c9c17b5f1a25
7
- data.tar.gz: d804392b2bc53fccba57c2d68c86f9118ffe80c24c854cea62b462738185634d59af4e41fc8ea86fabe0db120e16133d15bb3f2822ad3064c1c4e7c467796871
6
+ metadata.gz: 20bc3d260f0ac7bd9473351b7f59a08ccd1de7720afc56c027c83025924b7c986335994a4b257344e8c8435c11b5248de2d1dd512cf5e499d85eeddd1166f260
7
+ data.tar.gz: 5cd706afea71314dc85b47d58f3d4cb9f7ecc82a0a1ed72fc8afc5f772bd98022a8026b62eb490b7c2d9c74c1045d7edb945736078e5195f8c93f858d3f6cc7f
@@ -145,7 +145,7 @@ module Sass
145
145
  string: unless @source.nil?
146
146
  EmbeddedProtocol::InboundMessage::CompileRequest::StringInput.new(
147
147
  source: @source,
148
- url: @url,
148
+ url: @url&.to_s,
149
149
  syntax: to_proto_syntax(@syntax),
150
150
  importer: @importer.nil? ? nil : to_proto_importer(@importer, @importers.length)
151
151
  )
@@ -163,8 +163,7 @@ module Sass
163
163
 
164
164
  def canonicalize_response(canonicalize_request)
165
165
  importer = importer_of_id canonicalize_request.importer_id
166
- url = importer.canonicalize canonicalize_request.url,
167
- from_import: canonicalize_request.from_import
166
+ url = importer.canonicalize(canonicalize_request.url, from_import: canonicalize_request.from_import)&.to_s
168
167
 
169
168
  EmbeddedProtocol::InboundMessage::CanonicalizeResponse.new(
170
169
  id: canonicalize_request.id,
@@ -186,7 +185,7 @@ module Sass
186
185
  success: EmbeddedProtocol::InboundMessage::ImportResponse::ImportSuccess.new(
187
186
  contents: importer_result.contents,
188
187
  syntax: to_proto_syntax(importer_result.syntax),
189
- source_map_url: importer_result.respond_to?(:source_map_url) ? importer_result.source_map_url : nil
188
+ source_map_url: importer_result.respond_to?(:source_map_url) ? importer_result.source_map_url&.to_s : nil
190
189
  )
191
190
  )
192
191
  rescue StandardError => e
@@ -198,8 +197,7 @@ module Sass
198
197
 
199
198
  def file_import_response(file_import_request)
200
199
  importer = importer_of_id file_import_request.importer_id
201
- file_url = importer.find_file_url file_import_request.url,
202
- from_import: file_import_request.from_import
200
+ file_url = importer.find_file_url(file_import_request.url, from_import: file_import_request.from_import)&.to_s
203
201
 
204
202
  raise "file_url must be a file: URL, was \"#{file_url}\"" if !file_url.nil? && !file_url.start_with?('file:')
205
203
 
@@ -3,7 +3,7 @@
3
3
  require 'base64'
4
4
  require 'json'
5
5
  require 'pathname'
6
- require_relative 'url'
6
+ require 'uri'
7
7
 
8
8
  module Sass
9
9
  # The {Embedded} host for using dart-sass-embedded. Each instance creates
@@ -309,11 +309,17 @@ module Sass
309
309
  raise result if result.is_a? StandardError
310
310
 
311
311
  if result&.key? :contents
312
- @importer_results[canonical_url] = ImporterResult.new(result[:contents], :scss)
312
+ @importer_results[canonical_url] = {
313
+ contents: result[:contents],
314
+ syntax: :scss
315
+ }
313
316
  canonical_url
314
317
  elsif result&.key? :file
315
318
  canonical_url = Url.path_to_file_url(File.absolute_path(result[:file]))
316
- @importer_results[canonical_url] = ImporterResult.new(File.read(result[:file]), :scss)
319
+ @importer_results[canonical_url] = {
320
+ contents: File.read(result[:file]),
321
+ syntax: :scss
322
+ }
317
323
  canonical_url
318
324
  end
319
325
  end
@@ -323,6 +329,35 @@ module Sass
323
329
  end
324
330
  end
325
331
 
332
+ # @deprecated
333
+ # The {Url} module.
334
+ module Url
335
+ # The {::URI::Parser} that is in consistent with RFC 2396 (URI Generic Syntax) and dart:core library.
336
+ URI_PARSER = URI::Parser.new({ RESERVED: ';/?:@&=+$,' })
337
+
338
+ FILE_SCHEME = 'file://'
339
+
340
+ private_constant :URI_PARSER, :FILE_SCHEME
341
+
342
+ module_function
343
+
344
+ def path_to_file_url(path)
345
+ if File.absolute_path? path
346
+ URI_PARSER.escape "#{FILE_SCHEME}#{Gem.win_platform? ? '/' : ''}#{path}"
347
+ else
348
+ URI_PARSER.escape path
349
+ end
350
+ end
351
+
352
+ def file_url_to_path(url)
353
+ if url.start_with? FILE_SCHEME
354
+ URI_PARSER.unescape url[(FILE_SCHEME.length + (Gem.win_platform? ? 1 : 0))..]
355
+ else
356
+ URI_PARSER.unescape url
357
+ end
358
+ end
359
+ end
360
+
326
361
  private_constant :LegacyImporter
327
362
  end
328
363
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sass
4
4
  class Embedded
5
- VERSION = '0.14.0'
5
+ VERSION = '0.15.0'
6
6
  end
7
7
  end
data/lib/sass/embedded.rb CHANGED
@@ -4,11 +4,9 @@ require_relative 'compile_error'
4
4
  require_relative 'compile_result'
5
5
  require_relative 'embedded/channel'
6
6
  require_relative 'embedded/compile_context'
7
- require_relative 'embedded/render'
8
- require_relative 'embedded/url'
7
+ require_relative 'embedded/render' # deprecated
9
8
  require_relative 'embedded/version'
10
9
  require_relative 'embedded/version_context'
11
- require_relative 'importer_result'
12
10
  require_relative 'logger'
13
11
 
14
12
  module Sass
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sass-embedded
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - なつき
@@ -177,13 +177,9 @@ files:
177
177
  - lib/sass/embedded/observer.rb
178
178
  - lib/sass/embedded/protocol_error.rb
179
179
  - lib/sass/embedded/render.rb
180
- - lib/sass/embedded/url.rb
181
180
  - lib/sass/embedded/version.rb
182
181
  - lib/sass/embedded/version_context.rb
183
182
  - lib/sass/embedded_protocol.rb
184
- - lib/sass/file_importer.rb
185
- - lib/sass/importer.rb
186
- - lib/sass/importer_result.rb
187
183
  - lib/sass/logger.rb
188
184
  - lib/sass/logger/source_location.rb
189
185
  - lib/sass/logger/source_span.rb
@@ -191,8 +187,8 @@ homepage: https://github.com/ntkme/sass-embedded-host-ruby
191
187
  licenses:
192
188
  - MIT
193
189
  metadata:
194
- documentation_uri: https://www.rubydoc.info/gems/sass-embedded/0.14.0
195
- source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v0.14.0
190
+ documentation_uri: https://www.rubydoc.info/gems/sass-embedded/0.15.0
191
+ source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v0.15.0
196
192
  funding_uri: https://github.com/sponsors/ntkme
197
193
  post_install_message:
198
194
  rdoc_options: []
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'uri'
4
-
5
- module Sass
6
- class Embedded
7
- # The {Url} module.
8
- module Url
9
- # The {::URI::Parser} that is in consistent with RFC 2396 (URI Generic Syntax) and dart:core library.
10
- URI_PARSER = URI::Parser.new({ RESERVED: ';/?:@&=+$,' })
11
-
12
- FILE_SCHEME = 'file://'
13
-
14
- private_constant :URI_PARSER, :FILE_SCHEME
15
-
16
- module_function
17
-
18
- def path_to_file_url(path)
19
- if File.absolute_path? path
20
- URI_PARSER.escape "#{FILE_SCHEME}#{Gem.win_platform? ? File::SEPARATOR : ''}#{path}"
21
- else
22
- URI_PARSER.escape path
23
- end
24
- end
25
-
26
- def file_url_to_path(url)
27
- if url.start_with? FILE_SCHEME
28
- URI_PARSER.unescape url[(FILE_SCHEME.length + (Gem.win_platform? ? 1 : 0))..]
29
- else
30
- URI_PARSER.unescape url
31
- end
32
- end
33
- end
34
- end
35
- end
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Sass
4
- # The {FileImporter} interface.
5
- class FileImporter
6
- def find_file_url(url, from_import:) # rubocop:disable Lint/UnusedMethodArgument
7
- raise NotImplementedError, 'FileImporter#find_file_url must be implemented'
8
- end
9
- end
10
- end
data/lib/sass/importer.rb DELETED
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Sass
4
- # The {Importer} interface.
5
- class Importer
6
- def canonicalize(url) # rubocop:disable Lint/UnusedMethodArgument
7
- raise NotImplementedError, 'Importer#canonicalize must be implemented'
8
- end
9
-
10
- def load(canonical_url) # rubocop:disable Lint/UnusedMethodArgument
11
- raise NotImplementedError, 'Importer#load must be implemented'
12
- end
13
- end
14
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Sass
4
- # The {ImporterResult} of {Importer#load}.
5
- class ImporterResult
6
- attr_reader :contents, :syntax, :source_map_url
7
-
8
- def initialize(contents, syntax, source_map_url = nil)
9
- @contents = contents
10
- @syntax = syntax
11
- @source_map_url = source_map_url
12
- end
13
- end
14
- end