sass-embedded 1.54.9 → 1.55.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: ba4dffee35cd747cce67de5bfe4debc7ea0158fb56de27822bff9dc8cbad8e77
4
- data.tar.gz: 56c4aea5b5d528746dbe96d7789058015e9af394731c3f3f6f6e347f1bb21ac2
3
+ metadata.gz: ee7d52b37c80905070cd65a96799ad116d6106f88cadca73059ca671b5a82927
4
+ data.tar.gz: 8934a78850974f0459228356bb896f354b029af6f367c7b0a70445ca90b61452
5
5
  SHA512:
6
- metadata.gz: d73daef0cda8db040827b3ded905d296cc82518ac510f09ff9946c6d88b997dbc2286230ad9db9fcc8bbe0792592f8df2bf60ba9a3113bca4ad901a49afbcb94
7
- data.tar.gz: 7d1cbc06c400aae621bbc6d7df4c7f56735cfbde7a906469c4c3d64403b6d3a24edd66faa0c9d5ffbf35de2b3070bf0f452d29f5067470aa23c426b07a504fc3
6
+ metadata.gz: f898deff1d68ddf87e339e0da3a3ef01f5dbce53ca69c439b8d92c8bd4a2fd013c623eb3443550ec2cc2be2fa6505259ad0bdbb42b76c19a768f2bf401ebec4c
7
+ data.tar.gz: 4bdebd4fe3e7734ff058c8f1cd9d74a492a7a654067f06ac6d5e656a3528dd75c1b2a374cc1b40e0742f2b20971dc8b5f79b80888a1f697158cb1d7041236a4f
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![build](https://github.com/ntkme/sass-embedded-host-ruby/actions/workflows/build.yml/badge.svg)](https://github.com/ntkme/sass-embedded-host-ruby/actions/workflows/build.yml)
4
4
  [![gem](https://badge.fury.io/rb/sass-embedded.svg)](https://rubygems.org/gems/sass-embedded)
5
5
 
6
- This is a Ruby library that implements the host side of the [Embedded Sass protocol](https://github.com/sass/sass-embedded-protocol).
6
+ This is a Ruby library that implements the host side of the [Embedded Sass protocol](https://github.com/sass/embedded-protocol).
7
7
 
8
8
  It exposes a Ruby API for Sass that's backed by a native [Dart Sass](https://sass-lang.com/dart-sass) executable.
9
9
 
data/ext/sass/Rakefile CHANGED
@@ -4,7 +4,9 @@ require 'rake/clean'
4
4
 
5
5
  task default: %i[install clean]
6
6
 
7
- task install: %w[sass_embedded embedded.rb embedded_sass_pb.rb]
7
+ task install: %w[embedded.rb] do
8
+ Rake::Task['embedded_sass_pb.rb'].invoke unless File.exist?('embedded_sass_pb.rb')
9
+ end
8
10
 
9
11
  CLEAN.include %w[protoc.exe *.proto *.tar.gz *.zip]
10
12
 
@@ -51,14 +53,59 @@ end
51
53
  # This is a FileUtils extension that defines several additional commands to be
52
54
  # added to the FileUtils utility functions.
53
55
  module FileUtils
56
+ # PowerShell quirks:
57
+ # - `powershell -Command -`:
58
+ # Arguments must be part of command, thus cannot pass arguments safely without escaping.
59
+ # - `powershell -Command <script-block> [-args <arg-array>]`:
60
+ # This only works when invoking powershell subshell in powershell.
61
+ # - `powershell -Command <string> [<CommandParameters>]`:
62
+ # CommandParameters are joined with command and then parsed, thus cannot pass arguments safely without escaping.
63
+ # - `powershell -File -`:
64
+ # Arguments must be part of file, thus cannot pass arguments safely without escaping.
65
+ # - `powershell -File <filePath> <args>`:
66
+ # This is the only way to pass arguments safely without escaping.
67
+ def powershell(file, *args)
68
+ sh 'powershell', '-NoLogo', '-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-File', file, *args
69
+ end
70
+
71
+ def junzip(archive, dest = '.')
72
+ require 'java'
73
+
74
+ Rake.rake_output_message "Archive: #{archive}" if Rake::FileUtilsExt.verbose_flag
75
+
76
+ current_directory = java.nio.file.Paths.get(org.jruby.Ruby.getGlobalRuntime.getCurrentDirectory)
77
+ zip_file = java.util.zip.ZipFile.new(current_directory.resolve(archive).toFile)
78
+ dest_path = current_directory.resolve(dest).normalize
79
+ entries = zip_file.entries
80
+ while entries.hasMoreElements
81
+ entry = entries.nextElement
82
+ name = entry.getName
83
+ path = dest_path.resolve(name).normalize
84
+ raise unless path.startsWith(dest_path)
85
+
86
+ Rake.rake_output_message " inflating: #{name}" if Rake::FileUtilsExt.verbose_flag
87
+
88
+ if entry.isDirectory
89
+ java.nio.file.Files.createDirectories(path)
90
+ else
91
+ java.nio.file.Files.createDirectories(path.getParent)
92
+ java.nio.file.Files.copy(zip_file.getInputStream(entry), path)
93
+ end
94
+ end
95
+ ensure
96
+ zip_file&.close
97
+ end
98
+
54
99
  def unarchive(archive, dest = '.')
55
100
  case archive.downcase
56
101
  when ->(name) { name.include?('.tar.') || name.end_with?('.tar') }
57
102
  mkdir_p dest
58
103
  sh 'tar', '-vxC', dest, '-f', archive
59
104
  when ->(name) { name.end_with?('.zip') }
60
- if Gem.win_platform?
61
- sh 'cscript', 'unzip.vbs', '//B', '//Nologo', archive, dest
105
+ if RUBY_PLATFORM == 'java'
106
+ junzip archive, dest
107
+ elsif Gem.win_platform?
108
+ powershell 'expand-archive.ps1', '-Force', '-LiteralPath', archive, '-DestinationPath', dest, '-PassThru'
62
109
  else
63
110
  sh 'unzip', '-od', dest, archive
64
111
  end
@@ -0,0 +1,349 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: embedded_sass.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ Google::Protobuf::DescriptorPool.generated_pool.build do
7
+ add_file("embedded_sass.proto", :syntax => :proto3) do
8
+ add_message "sass.embedded_protocol.InboundMessage" do
9
+ oneof :message do
10
+ optional :compile_request, :message, 2, "sass.embedded_protocol.InboundMessage.CompileRequest"
11
+ optional :canonicalize_response, :message, 3, "sass.embedded_protocol.InboundMessage.CanonicalizeResponse"
12
+ optional :import_response, :message, 4, "sass.embedded_protocol.InboundMessage.ImportResponse"
13
+ optional :file_import_response, :message, 5, "sass.embedded_protocol.InboundMessage.FileImportResponse"
14
+ optional :function_call_response, :message, 6, "sass.embedded_protocol.InboundMessage.FunctionCallResponse"
15
+ optional :version_request, :message, 7, "sass.embedded_protocol.InboundMessage.VersionRequest"
16
+ end
17
+ end
18
+ add_message "sass.embedded_protocol.InboundMessage.VersionRequest" do
19
+ optional :id, :uint32, 1
20
+ end
21
+ add_message "sass.embedded_protocol.InboundMessage.CompileRequest" do
22
+ optional :id, :uint32, 1
23
+ optional :style, :enum, 4, "sass.embedded_protocol.OutputStyle"
24
+ optional :source_map, :bool, 5
25
+ repeated :importers, :message, 6, "sass.embedded_protocol.InboundMessage.CompileRequest.Importer"
26
+ repeated :global_functions, :string, 7
27
+ optional :alert_color, :bool, 8
28
+ optional :alert_ascii, :bool, 9
29
+ optional :verbose, :bool, 10
30
+ optional :quiet_deps, :bool, 11
31
+ optional :source_map_include_sources, :bool, 12
32
+ optional :charset, :bool, 13
33
+ oneof :input do
34
+ optional :string, :message, 2, "sass.embedded_protocol.InboundMessage.CompileRequest.StringInput"
35
+ optional :path, :string, 3
36
+ end
37
+ end
38
+ add_message "sass.embedded_protocol.InboundMessage.CompileRequest.StringInput" do
39
+ optional :source, :string, 1
40
+ optional :url, :string, 2
41
+ optional :syntax, :enum, 3, "sass.embedded_protocol.Syntax"
42
+ optional :importer, :message, 4, "sass.embedded_protocol.InboundMessage.CompileRequest.Importer"
43
+ end
44
+ add_message "sass.embedded_protocol.InboundMessage.CompileRequest.Importer" do
45
+ oneof :importer do
46
+ optional :path, :string, 1
47
+ optional :importer_id, :uint32, 2
48
+ optional :file_importer_id, :uint32, 3
49
+ end
50
+ end
51
+ add_message "sass.embedded_protocol.InboundMessage.CanonicalizeResponse" do
52
+ optional :id, :uint32, 1
53
+ oneof :result do
54
+ optional :url, :string, 2
55
+ optional :error, :string, 3
56
+ end
57
+ end
58
+ add_message "sass.embedded_protocol.InboundMessage.ImportResponse" do
59
+ optional :id, :uint32, 1
60
+ oneof :result do
61
+ optional :success, :message, 2, "sass.embedded_protocol.InboundMessage.ImportResponse.ImportSuccess"
62
+ optional :error, :string, 3
63
+ end
64
+ end
65
+ add_message "sass.embedded_protocol.InboundMessage.ImportResponse.ImportSuccess" do
66
+ optional :contents, :string, 1
67
+ optional :syntax, :enum, 2, "sass.embedded_protocol.Syntax"
68
+ optional :source_map_url, :string, 3
69
+ end
70
+ add_message "sass.embedded_protocol.InboundMessage.FileImportResponse" do
71
+ optional :id, :uint32, 1
72
+ oneof :result do
73
+ optional :file_url, :string, 2
74
+ optional :error, :string, 3
75
+ end
76
+ end
77
+ add_message "sass.embedded_protocol.InboundMessage.FunctionCallResponse" do
78
+ optional :id, :uint32, 1
79
+ repeated :accessed_argument_lists, :uint32, 4
80
+ oneof :result do
81
+ optional :success, :message, 2, "sass.embedded_protocol.Value"
82
+ optional :error, :string, 3
83
+ end
84
+ end
85
+ add_message "sass.embedded_protocol.OutboundMessage" do
86
+ oneof :message do
87
+ optional :error, :message, 1, "sass.embedded_protocol.ProtocolError"
88
+ optional :compile_response, :message, 2, "sass.embedded_protocol.OutboundMessage.CompileResponse"
89
+ optional :log_event, :message, 3, "sass.embedded_protocol.OutboundMessage.LogEvent"
90
+ optional :canonicalize_request, :message, 4, "sass.embedded_protocol.OutboundMessage.CanonicalizeRequest"
91
+ optional :import_request, :message, 5, "sass.embedded_protocol.OutboundMessage.ImportRequest"
92
+ optional :file_import_request, :message, 6, "sass.embedded_protocol.OutboundMessage.FileImportRequest"
93
+ optional :function_call_request, :message, 7, "sass.embedded_protocol.OutboundMessage.FunctionCallRequest"
94
+ optional :version_response, :message, 8, "sass.embedded_protocol.OutboundMessage.VersionResponse"
95
+ end
96
+ end
97
+ add_message "sass.embedded_protocol.OutboundMessage.VersionResponse" do
98
+ optional :id, :uint32, 5
99
+ optional :protocol_version, :string, 1
100
+ optional :compiler_version, :string, 2
101
+ optional :implementation_version, :string, 3
102
+ optional :implementation_name, :string, 4
103
+ end
104
+ add_message "sass.embedded_protocol.OutboundMessage.CompileResponse" do
105
+ optional :id, :uint32, 1
106
+ oneof :result do
107
+ optional :success, :message, 2, "sass.embedded_protocol.OutboundMessage.CompileResponse.CompileSuccess"
108
+ optional :failure, :message, 3, "sass.embedded_protocol.OutboundMessage.CompileResponse.CompileFailure"
109
+ end
110
+ end
111
+ add_message "sass.embedded_protocol.OutboundMessage.CompileResponse.CompileSuccess" do
112
+ optional :css, :string, 1
113
+ optional :source_map, :string, 2
114
+ repeated :loaded_urls, :string, 3
115
+ end
116
+ add_message "sass.embedded_protocol.OutboundMessage.CompileResponse.CompileFailure" do
117
+ optional :message, :string, 1
118
+ optional :span, :message, 2, "sass.embedded_protocol.SourceSpan"
119
+ optional :stack_trace, :string, 3
120
+ optional :formatted, :string, 4
121
+ end
122
+ add_message "sass.embedded_protocol.OutboundMessage.LogEvent" do
123
+ optional :compilation_id, :uint32, 1
124
+ optional :type, :enum, 2, "sass.embedded_protocol.LogEventType"
125
+ optional :message, :string, 3
126
+ optional :span, :message, 4, "sass.embedded_protocol.SourceSpan"
127
+ optional :stack_trace, :string, 5
128
+ optional :formatted, :string, 6
129
+ end
130
+ add_message "sass.embedded_protocol.OutboundMessage.CanonicalizeRequest" do
131
+ optional :id, :uint32, 1
132
+ optional :compilation_id, :uint32, 2
133
+ optional :importer_id, :uint32, 3
134
+ optional :url, :string, 4
135
+ optional :from_import, :bool, 5
136
+ end
137
+ add_message "sass.embedded_protocol.OutboundMessage.ImportRequest" do
138
+ optional :id, :uint32, 1
139
+ optional :compilation_id, :uint32, 2
140
+ optional :importer_id, :uint32, 3
141
+ optional :url, :string, 4
142
+ end
143
+ add_message "sass.embedded_protocol.OutboundMessage.FileImportRequest" do
144
+ optional :id, :uint32, 1
145
+ optional :compilation_id, :uint32, 2
146
+ optional :importer_id, :uint32, 3
147
+ optional :url, :string, 4
148
+ optional :from_import, :bool, 5
149
+ end
150
+ add_message "sass.embedded_protocol.OutboundMessage.FunctionCallRequest" do
151
+ optional :id, :uint32, 1
152
+ optional :compilation_id, :uint32, 2
153
+ repeated :arguments, :message, 5, "sass.embedded_protocol.Value"
154
+ oneof :identifier do
155
+ optional :name, :string, 3
156
+ optional :function_id, :uint32, 4
157
+ end
158
+ end
159
+ add_message "sass.embedded_protocol.ProtocolError" do
160
+ optional :type, :enum, 1, "sass.embedded_protocol.ProtocolErrorType"
161
+ optional :id, :uint32, 2
162
+ optional :message, :string, 3
163
+ end
164
+ add_message "sass.embedded_protocol.SourceSpan" do
165
+ optional :text, :string, 1
166
+ optional :start, :message, 2, "sass.embedded_protocol.SourceSpan.SourceLocation"
167
+ optional :end, :message, 3, "sass.embedded_protocol.SourceSpan.SourceLocation"
168
+ optional :url, :string, 4
169
+ optional :context, :string, 5
170
+ end
171
+ add_message "sass.embedded_protocol.SourceSpan.SourceLocation" do
172
+ optional :offset, :uint32, 1
173
+ optional :line, :uint32, 2
174
+ optional :column, :uint32, 3
175
+ end
176
+ add_message "sass.embedded_protocol.Value" do
177
+ oneof :value do
178
+ optional :string, :message, 1, "sass.embedded_protocol.Value.String"
179
+ optional :number, :message, 2, "sass.embedded_protocol.Value.Number"
180
+ optional :rgb_color, :message, 3, "sass.embedded_protocol.Value.RgbColor"
181
+ optional :hsl_color, :message, 4, "sass.embedded_protocol.Value.HslColor"
182
+ optional :list, :message, 5, "sass.embedded_protocol.Value.List"
183
+ optional :map, :message, 6, "sass.embedded_protocol.Value.Map"
184
+ optional :singleton, :enum, 7, "sass.embedded_protocol.SingletonValue"
185
+ optional :compiler_function, :message, 8, "sass.embedded_protocol.Value.CompilerFunction"
186
+ optional :host_function, :message, 9, "sass.embedded_protocol.Value.HostFunction"
187
+ optional :argument_list, :message, 10, "sass.embedded_protocol.Value.ArgumentList"
188
+ optional :hwb_color, :message, 11, "sass.embedded_protocol.Value.HwbColor"
189
+ optional :calculation, :message, 12, "sass.embedded_protocol.Value.Calculation"
190
+ end
191
+ end
192
+ add_message "sass.embedded_protocol.Value.String" do
193
+ optional :text, :string, 1
194
+ optional :quoted, :bool, 2
195
+ end
196
+ add_message "sass.embedded_protocol.Value.Number" do
197
+ optional :value, :double, 1
198
+ repeated :numerators, :string, 2
199
+ repeated :denominators, :string, 3
200
+ end
201
+ add_message "sass.embedded_protocol.Value.RgbColor" do
202
+ optional :red, :uint32, 1
203
+ optional :green, :uint32, 2
204
+ optional :blue, :uint32, 3
205
+ optional :alpha, :double, 4
206
+ end
207
+ add_message "sass.embedded_protocol.Value.HslColor" do
208
+ optional :hue, :double, 1
209
+ optional :saturation, :double, 2
210
+ optional :lightness, :double, 3
211
+ optional :alpha, :double, 4
212
+ end
213
+ add_message "sass.embedded_protocol.Value.HwbColor" do
214
+ optional :hue, :double, 1
215
+ optional :whiteness, :double, 2
216
+ optional :blackness, :double, 3
217
+ optional :alpha, :double, 4
218
+ end
219
+ add_message "sass.embedded_protocol.Value.List" do
220
+ optional :separator, :enum, 1, "sass.embedded_protocol.ListSeparator"
221
+ optional :has_brackets, :bool, 2
222
+ repeated :contents, :message, 3, "sass.embedded_protocol.Value"
223
+ end
224
+ add_message "sass.embedded_protocol.Value.Map" do
225
+ repeated :entries, :message, 1, "sass.embedded_protocol.Value.Map.Entry"
226
+ end
227
+ add_message "sass.embedded_protocol.Value.Map.Entry" do
228
+ optional :key, :message, 1, "sass.embedded_protocol.Value"
229
+ optional :value, :message, 2, "sass.embedded_protocol.Value"
230
+ end
231
+ add_message "sass.embedded_protocol.Value.CompilerFunction" do
232
+ optional :id, :uint32, 1
233
+ end
234
+ add_message "sass.embedded_protocol.Value.HostFunction" do
235
+ optional :id, :uint32, 1
236
+ optional :signature, :string, 2
237
+ end
238
+ add_message "sass.embedded_protocol.Value.ArgumentList" do
239
+ optional :id, :uint32, 1
240
+ optional :separator, :enum, 2, "sass.embedded_protocol.ListSeparator"
241
+ repeated :contents, :message, 3, "sass.embedded_protocol.Value"
242
+ map :keywords, :string, :message, 4, "sass.embedded_protocol.Value"
243
+ end
244
+ add_message "sass.embedded_protocol.Value.Calculation" do
245
+ optional :name, :string, 1
246
+ repeated :arguments, :message, 2, "sass.embedded_protocol.Value.Calculation.CalculationValue"
247
+ end
248
+ add_message "sass.embedded_protocol.Value.Calculation.CalculationValue" do
249
+ oneof :value do
250
+ optional :number, :message, 1, "sass.embedded_protocol.Value.Number"
251
+ optional :string, :string, 2
252
+ optional :interpolation, :string, 3
253
+ optional :operation, :message, 4, "sass.embedded_protocol.Value.Calculation.CalculationOperation"
254
+ optional :calculation, :message, 5, "sass.embedded_protocol.Value.Calculation"
255
+ end
256
+ end
257
+ add_message "sass.embedded_protocol.Value.Calculation.CalculationOperation" do
258
+ optional :operator, :enum, 1, "sass.embedded_protocol.CalculationOperator"
259
+ optional :left, :message, 2, "sass.embedded_protocol.Value.Calculation.CalculationValue"
260
+ optional :right, :message, 3, "sass.embedded_protocol.Value.Calculation.CalculationValue"
261
+ end
262
+ add_enum "sass.embedded_protocol.OutputStyle" do
263
+ value :EXPANDED, 0
264
+ value :COMPRESSED, 1
265
+ end
266
+ add_enum "sass.embedded_protocol.Syntax" do
267
+ value :SCSS, 0
268
+ value :INDENTED, 1
269
+ value :CSS, 2
270
+ end
271
+ add_enum "sass.embedded_protocol.LogEventType" do
272
+ value :WARNING, 0
273
+ value :DEPRECATION_WARNING, 1
274
+ value :DEBUG, 2
275
+ end
276
+ add_enum "sass.embedded_protocol.ProtocolErrorType" do
277
+ value :PARSE, 0
278
+ value :PARAMS, 1
279
+ value :INTERNAL, 2
280
+ end
281
+ add_enum "sass.embedded_protocol.ListSeparator" do
282
+ value :COMMA, 0
283
+ value :SPACE, 1
284
+ value :SLASH, 2
285
+ value :UNDECIDED, 3
286
+ end
287
+ add_enum "sass.embedded_protocol.SingletonValue" do
288
+ value :TRUE, 0
289
+ value :FALSE, 1
290
+ value :NULL, 2
291
+ end
292
+ add_enum "sass.embedded_protocol.CalculationOperator" do
293
+ value :PLUS, 0
294
+ value :MINUS, 1
295
+ value :TIMES, 2
296
+ value :DIVIDE, 3
297
+ end
298
+ end
299
+ end
300
+
301
+ module Sass
302
+ module EmbeddedProtocol
303
+ InboundMessage = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.InboundMessage").msgclass
304
+ InboundMessage::VersionRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.InboundMessage.VersionRequest").msgclass
305
+ InboundMessage::CompileRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.InboundMessage.CompileRequest").msgclass
306
+ InboundMessage::CompileRequest::StringInput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.InboundMessage.CompileRequest.StringInput").msgclass
307
+ InboundMessage::CompileRequest::Importer = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.InboundMessage.CompileRequest.Importer").msgclass
308
+ InboundMessage::CanonicalizeResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.InboundMessage.CanonicalizeResponse").msgclass
309
+ InboundMessage::ImportResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.InboundMessage.ImportResponse").msgclass
310
+ InboundMessage::ImportResponse::ImportSuccess = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.InboundMessage.ImportResponse.ImportSuccess").msgclass
311
+ InboundMessage::FileImportResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.InboundMessage.FileImportResponse").msgclass
312
+ InboundMessage::FunctionCallResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.InboundMessage.FunctionCallResponse").msgclass
313
+ OutboundMessage = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.OutboundMessage").msgclass
314
+ OutboundMessage::VersionResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.OutboundMessage.VersionResponse").msgclass
315
+ OutboundMessage::CompileResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.OutboundMessage.CompileResponse").msgclass
316
+ OutboundMessage::CompileResponse::CompileSuccess = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.OutboundMessage.CompileResponse.CompileSuccess").msgclass
317
+ OutboundMessage::CompileResponse::CompileFailure = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.OutboundMessage.CompileResponse.CompileFailure").msgclass
318
+ OutboundMessage::LogEvent = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.OutboundMessage.LogEvent").msgclass
319
+ OutboundMessage::CanonicalizeRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.OutboundMessage.CanonicalizeRequest").msgclass
320
+ OutboundMessage::ImportRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.OutboundMessage.ImportRequest").msgclass
321
+ OutboundMessage::FileImportRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.OutboundMessage.FileImportRequest").msgclass
322
+ OutboundMessage::FunctionCallRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.OutboundMessage.FunctionCallRequest").msgclass
323
+ ProtocolError = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.ProtocolError").msgclass
324
+ SourceSpan = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.SourceSpan").msgclass
325
+ SourceSpan::SourceLocation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.SourceSpan.SourceLocation").msgclass
326
+ Value = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value").msgclass
327
+ Value::String = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.String").msgclass
328
+ Value::Number = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.Number").msgclass
329
+ Value::RgbColor = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.RgbColor").msgclass
330
+ Value::HslColor = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.HslColor").msgclass
331
+ Value::HwbColor = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.HwbColor").msgclass
332
+ Value::List = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.List").msgclass
333
+ Value::Map = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.Map").msgclass
334
+ Value::Map::Entry = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.Map.Entry").msgclass
335
+ Value::CompilerFunction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.CompilerFunction").msgclass
336
+ Value::HostFunction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.HostFunction").msgclass
337
+ Value::ArgumentList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.ArgumentList").msgclass
338
+ Value::Calculation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.Calculation").msgclass
339
+ Value::Calculation::CalculationValue = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.Calculation.CalculationValue").msgclass
340
+ Value::Calculation::CalculationOperation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.Calculation.CalculationOperation").msgclass
341
+ OutputStyle = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.OutputStyle").enummodule
342
+ Syntax = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Syntax").enummodule
343
+ LogEventType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.LogEventType").enummodule
344
+ ProtocolErrorType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.ProtocolErrorType").enummodule
345
+ ListSeparator = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.ListSeparator").enummodule
346
+ SingletonValue = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.SingletonValue").enummodule
347
+ CalculationOperator = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.CalculationOperator").enummodule
348
+ end
349
+ end
@@ -0,0 +1 @@
1
+ Expand-Archive @args
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "dependencies": {
3
- "sass-embedded": "1.54.9"
3
+ "sass-embedded": "1.55.0"
4
4
  }
5
5
  }
@@ -26,7 +26,7 @@ module Sass
26
26
  end
27
27
 
28
28
  def register(importer)
29
- importer = Structifier.to_struct(importer)
29
+ importer = Structifier.to_struct(importer, :canonicalize, :load, :find_file_url)
30
30
 
31
31
  is_importer = importer.respond_to?(:canonicalize) && importer.respond_to?(:load)
32
32
  is_file_importer = importer.respond_to?(:find_file_url)
@@ -65,7 +65,7 @@ module Sass
65
65
 
66
66
  def import(import_request)
67
67
  importer = @importers_by_id[import_request.importer_id]
68
- importer_result = Structifier.to_struct importer.load(import_request.url)
68
+ importer_result = Structifier.to_struct importer.load(import_request.url), :contents, :syntax, :source_map_url
69
69
 
70
70
  EmbeddedProtocol::InboundMessage::ImportResponse.new(
71
71
  id: import_request.id,
@@ -10,7 +10,7 @@ module Sass
10
10
  attr_reader :logger
11
11
 
12
12
  def initialize(logger)
13
- @logger = Structifier.to_struct(logger)
13
+ @logger = Structifier.to_struct(logger, :debug, :warn)
14
14
  end
15
15
 
16
16
  def log(event)
@@ -132,7 +132,7 @@ module Sass
132
132
  yield
133
133
  @async.await
134
134
  ensure
135
- @connection.disconnect
135
+ @connection&.disconnect
136
136
  end
137
137
  end
138
138
 
@@ -8,13 +8,16 @@ module Sass
8
8
  module Structifier
9
9
  module_function
10
10
 
11
- def to_struct(obj)
11
+ def to_struct(obj, *symbols)
12
12
  return obj unless obj.is_a? Hash
13
13
 
14
14
  struct = Object.new
15
- obj.each do |key, value|
15
+ symbols.each do |key|
16
+ next unless obj.key?(key)
17
+
18
+ value = obj[key]
16
19
  if value.respond_to? :call
17
- struct.define_singleton_method key.to_sym do |*args, **kwargs|
20
+ struct.define_singleton_method key do |*args, **kwargs|
18
21
  if kwargs.empty?
19
22
  value.call(*args)
20
23
  else
@@ -22,7 +25,7 @@ module Sass
22
25
  end
23
26
  end
24
27
  else
25
- struct.define_singleton_method key.to_sym do
28
+ struct.define_singleton_method key do
26
29
  value
27
30
  end
28
31
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sass
4
4
  class Embedded
5
- VERSION = '1.54.9'
5
+ VERSION = '1.55.0'
6
6
  end
7
7
  end
@@ -2,5 +2,9 @@
2
2
 
3
3
  module Sass
4
4
  # An exception thrown by Sass Script.
5
- class ScriptError < StandardError; end
5
+ class ScriptError < StandardError
6
+ def initialize(message, name = nil)
7
+ super(name.nil? ? message : "$#{name}: #{message}")
8
+ end
9
+ end
6
10
  end
@@ -44,7 +44,7 @@ module Sass
44
44
  hwb_to_rgb
45
45
  @whiteness = @blackness = nil
46
46
  else
47
- raise error 'Invalid Color'
47
+ raise Sass::ScriptError, 'Invalid Color'
48
48
  end
49
49
  end
50
50
 
@@ -63,8 +63,7 @@ module Sass
63
63
  result = between(number, min, max)
64
64
  return result unless result.nil?
65
65
 
66
- message = "#{number} must be between #{min} and #{max}."
67
- raise Sass::ScriptError, name.nil? ? message : "$#{name}: #{message}"
66
+ raise Sass::ScriptError.new("#{number} must be between #{min} and #{max}.", name)
68
67
  end
69
68
 
70
69
  def hash(number)
@@ -13,7 +13,7 @@ module Sass
13
13
  # @param bracketed [::Boolean]
14
14
  def initialize(contents = [], separator: ',', bracketed: false)
15
15
  if separator.nil? && contents.length > 1
16
- raise error 'A list with more than one element must have an explicit separator'
16
+ raise Sass::ScriptError, 'A list with more than one element must have an explicit separator'
17
17
  end
18
18
 
19
19
  @contents = contents.freeze
@@ -24,12 +24,16 @@ module Sass
24
24
  denominator_units = []
25
25
  when ::Hash
26
26
  numerator_units = unit.fetch(:numerator_units, [])
27
- raise error "invalid numerator_units #{numerator_units.inspect}" unless numerator_units.is_a? Array
27
+ unless numerator_units.is_a? Array
28
+ raise Sass::ScriptError, "invalid numerator_units #{numerator_units.inspect}"
29
+ end
28
30
 
29
31
  denominator_units = unit.fetch(:denominator_units, [])
30
- raise error "invalid denominator_units #{denominator_units.inspect}" unless denominator_units.is_a? Array
32
+ unless denominator_units.is_a? Array
33
+ raise Sass::ScriptError, "invalid denominator_units #{denominator_units.inspect}"
34
+ end
31
35
  else
32
- raise error "invalid unit #{unit.inspect}"
36
+ raise Sass::ScriptError, "invalid unit #{unit.inspect}"
33
37
  end
34
38
 
35
39
  unless denominator_units.empty? && numerator_units.empty?
@@ -105,7 +109,7 @@ module Sass
105
109
  # @return [Number]
106
110
  # @raise [ScriptError]
107
111
  def assert_unitless(name = nil)
108
- raise error "Expected #{self} to have no units", name unless unitless?
112
+ raise Sass::ScriptError.new("Expected #{self} to have no units", name) unless unitless?
109
113
 
110
114
  self
111
115
  end
@@ -125,7 +129,7 @@ module Sass
125
129
  # @return [Number]
126
130
  # @raise [ScriptError]
127
131
  def assert_unit(unit, name = nil)
128
- raise error "Expected #{self} to have unit #{unit.inspect}", name unless unit?(unit)
132
+ raise Sass::ScriptError.new("Expected #{self} to have unit #{unit.inspect}", name) unless unit?(unit)
129
133
 
130
134
  self
131
135
  end
@@ -138,7 +142,7 @@ module Sass
138
142
  # @return [Integer]
139
143
  # @raise [ScriptError]
140
144
  def assert_integer(name = nil)
141
- raise error "#{self} is not an integer", name unless integer?
145
+ raise Sass::ScriptError.new("#{self} is not an integer", name) unless integer?
142
146
 
143
147
  to_i
144
148
  end
@@ -271,7 +275,8 @@ module Sass
271
275
  other: nil,
272
276
  other_name: nil)
273
277
  if other && (other.numerator_units != new_denominator_units && other.denominator_units != new_denominator_units)
274
- raise error "Expect #{other} to have units #{unit_string(new_numerator_units, new_denominator_units).inspect}"
278
+ raise Sass::ScriptError, "Expect #{other} to have units #{unit_string(new_numerator_units,
279
+ new_denominator_units).inspect}"
275
280
  end
276
281
 
277
282
  return value if numerator_units == new_numerator_units && denominator_units == new_denominator_units
@@ -288,19 +293,21 @@ module Sass
288
293
  message << " $#{other_name}:" unless other_name.nil?
289
294
  message << " #{other} have incompatible units"
290
295
  message << " (one has units and the other doesn't)" if unitless? || other_unitless
291
- return error message, name
296
+ return Sass::ScriptError.new(message, name)
292
297
  end
293
298
 
294
- return error "Expected #{self} to have no units", name unless other_unitless
299
+ return Sass::ScriptError.new("Expected #{self} to have no units", name) unless other_unitless
295
300
 
296
301
  if new_numerator_units.length == 1 && new_denominator_units.empty?
297
302
  type = Unit::TYPES_BY_UNIT[new_numerator_units.first]
298
- return error "Expected #{self} to have a #{type} unit (#{Unit::UNITS_BY_TYPE[type].join(', ')})", name
303
+ return Sass::ScriptError.new(
304
+ "Expected #{self} to have a #{type} unit (#{Unit::UNITS_BY_TYPE[type].join(', ')})", name
305
+ )
299
306
  end
300
307
 
301
308
  unit_length = new_numerator_units.length + new_denominator_units.length
302
309
  units = unit_string(new_numerator_units, new_denominator_units)
303
- error "Expected #{self} to have unit#{unit_length > 1 ? 's' : ''} #{units}", name
310
+ Sass::ScriptError.new("Expected #{self} to have unit#{unit_length > 1 ? 's' : ''} #{units}", name)
304
311
  }
305
312
 
306
313
  result = value
@@ -42,10 +42,10 @@ module Sass
42
42
  # @return [Integer]
43
43
  def sass_index_to_string_index(sass_index, name = nil)
44
44
  index = sass_index.assert_number(name).assert_integer(name)
45
- raise error('String index may not be 0', name) if index.zero?
45
+ raise Sass::ScriptError.new('String index may not be 0', name) if index.zero?
46
46
 
47
47
  if index.abs > text.length
48
- raise error("Invalid index #{sass_index} for a string with #{text.length} characters", name)
48
+ raise Sass::ScriptError.new("Invalid index #{sass_index} for a string with #{text.length} characters", name)
49
49
  end
50
50
 
51
51
  index.negative? ? text.length + index : index - 1
data/lib/sass/value.rb CHANGED
@@ -57,52 +57,52 @@ module Sass
57
57
  # @return [Boolean]
58
58
  # @raise [ScriptError]
59
59
  def assert_boolean(name = nil)
60
- raise error("#{self} is not a boolean", name)
60
+ raise Sass::ScriptError.new("#{self} is not a boolean", name)
61
61
  end
62
62
 
63
63
  # @raise [ScriptError]
64
64
  def assert_calculation(name = nil)
65
- raise error("#{self} is not a calculation", name)
65
+ raise Sass::ScriptError.new("#{self} is not a calculation", name)
66
66
  end
67
67
 
68
68
  # @return [Color]
69
69
  # @raise [ScriptError]
70
70
  def assert_color(name = nil)
71
- raise error("#{self} is not a color", name)
71
+ raise Sass::ScriptError.new("#{self} is not a color", name)
72
72
  end
73
73
 
74
74
  # @return [Function]
75
75
  # @raise [ScriptError]
76
76
  def assert_function(name = nil)
77
- raise error("#{self} is not a function", name)
77
+ raise Sass::ScriptError.new("#{self} is not a function", name)
78
78
  end
79
79
 
80
80
  # @return [Map]
81
81
  # @raise [ScriptError]
82
82
  def assert_map(name = nil)
83
- raise error("#{self} is not a map", name)
83
+ raise Sass::ScriptError.new("#{self} is not a map", name)
84
84
  end
85
85
 
86
86
  # @return [Number]
87
87
  # @raise [ScriptError]
88
88
  def assert_number(name = nil)
89
- raise error("#{self} is not a number", name)
89
+ raise Sass::ScriptError.new("#{self} is not a number", name)
90
90
  end
91
91
 
92
92
  # @return [String]
93
93
  # @raise [ScriptError]
94
94
  def assert_string(name = nil)
95
- raise error("#{self} is not a string", name)
95
+ raise Sass::ScriptError.new("#{self} is not a string", name)
96
96
  end
97
97
 
98
98
  # @param sass_index [Number]
99
99
  # @return [Integer]
100
100
  def sass_index_to_array_index(sass_index, name = nil)
101
101
  index = sass_index.assert_number(name).assert_integer(name)
102
- raise error('List index may not be 0', name) if index.zero?
102
+ raise Sass::ScriptError.new('List index may not be 0', name) if index.zero?
103
103
 
104
104
  if index.abs > to_a_length
105
- raise error("Invalid index #{sass_index} for a list with #{to_a_length} elements", name)
105
+ raise Sass::ScriptError.new("Invalid index #{sass_index} for a list with #{to_a_length} elements", name)
106
106
  end
107
107
 
108
108
  index.negative? ? to_a_length + index : index - 1
@@ -113,10 +113,6 @@ module Sass
113
113
  def to_a_length
114
114
  1
115
115
  end
116
-
117
- def error(message, name = nil)
118
- Sass::ScriptError.new name.nil? ? message : "$#{name}: #{message}"
119
- end
120
116
  end
121
117
  end
122
118
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sass-embedded
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.54.9
4
+ version: 1.55.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - なつき
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-08 00:00:00.000000000 Z
11
+ date: 2022-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-protobuf
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 1.14.0
75
+ version: 1.15.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 1.14.0
82
+ version: 1.15.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rubocop-rake
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 2.12.1
103
+ version: 2.13.1
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 2.12.1
110
+ version: 2.13.1
111
111
  description: A Ruby library that will communicate with Embedded Dart Sass using the
112
112
  Embedded Sass protocol.
113
113
  email:
@@ -120,8 +120,9 @@ files:
120
120
  - LICENSE
121
121
  - README.md
122
122
  - ext/sass/Rakefile
123
+ - ext/sass/embedded_sass_pb.rb
124
+ - ext/sass/expand-archive.ps1
123
125
  - ext/sass/package.json
124
- - ext/sass/unzip.vbs
125
126
  - lib/sass-embedded.rb
126
127
  - lib/sass/compile_error.rb
127
128
  - lib/sass/compile_result.rb
@@ -159,8 +160,8 @@ homepage: https://github.com/ntkme/sass-embedded-host-ruby
159
160
  licenses:
160
161
  - MIT
161
162
  metadata:
162
- documentation_uri: https://rubydoc.info/gems/sass-embedded/1.54.9
163
- source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v1.54.9
163
+ documentation_uri: https://rubydoc.info/gems/sass-embedded/1.55.0
164
+ source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v1.55.0
164
165
  funding_uri: https://github.com/sponsors/ntkme
165
166
  post_install_message:
166
167
  rdoc_options: []
@@ -177,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
178
  - !ruby/object:Gem::Version
178
179
  version: '0'
179
180
  requirements: []
180
- rubygems_version: 3.3.7
181
+ rubygems_version: 3.3.22
181
182
  signing_key:
182
183
  specification_version: 4
183
184
  summary: Use dart-sass with Ruby!
data/ext/sass/unzip.vbs DELETED
@@ -1,13 +0,0 @@
1
- path = WScript.Arguments.item(0)
2
- destinationPath = WScript.Arguments.item(1)
3
-
4
- Set fileSystemObject = WScript.CreateObject("Scripting.FileSystemObject")
5
- If NOT fileSystemObject.FolderExists(destinationPath) Then
6
- fileSystemObject.CreateFolder(destinationPath)
7
- End If
8
-
9
- Set application = WScript.CreateObject("Shell.Application")
10
- Set pathNameSpace = application.NameSpace(fileSystemObject.GetAbsolutePathName(path))
11
- Set destinationPathNameSpace = application.NameSpace(fileSystemObject.GetAbsolutePathName(destinationPath))
12
-
13
- destinationPathNameSpace.CopyHere pathNameSpace.items, 4 + 16