sass-embedded 1.54.9 → 1.55.0

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: 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