sass-embedded 1.104.1-riscv64-linux-gnu → 1.105.1-riscv64-linux-gnu

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: cb3ffeb6a01edf859e769ef60dea2a17351cf8506a88083e3806966039704085
4
- data.tar.gz: 429842c4dbdb22dca5ce565415bb7a6d251ab3256ccda6b3a09ea6cacce79d31
3
+ metadata.gz: 98c060cb2501326a2df87b2826027d14967d31c5a69bdc0bab7a934929946c47
4
+ data.tar.gz: 3b058371303e986927261472499c6c9f8bb742c5f88033ff28be2ccb216e6f79
5
5
  SHA512:
6
- metadata.gz: b62d33c17e977797e054556ac6f0a8ac53c7d357f8d6abf0918cff2a13ba75192385a85d1fffd26a5a51e787bee206b6a0abaf193fc5637995f27cc2e5bcbf3e
7
- data.tar.gz: cbf8bb73b5a455b2ba307848e5bf19de70a504c039d3985a65698702f89033788fbd1cbe1890d8e344c255fcdc7687fbffccd6c7535700440a3700f74ab08910
6
+ metadata.gz: 3eac103932ca9ea16236a2a9ea6dc15153e80fa01f5030beda644d2a7eadaf8f73c39f66d7f74b49cf428e6604c1c651203cdfc5f121a031fa3ddf5158336729
7
+ data.tar.gz: 4c1db80d3796194d76c7566cd0b376f8c8618eea086ecad3e4a76f8901f9d0a958c1b1006547c224fe589097017cae5b6ff4ca6910de30cf5ae09e9241e8a5b2
@@ -25,12 +25,6 @@ module Sass
25
25
  @session = session
26
26
  end
27
27
 
28
- IMPORTER_ATTRS = %i[non_canonical_scheme].freeze
29
-
30
- IMPORTER_METHODS = %i[canonicalize load find_file_url].freeze
31
-
32
- private_constant :IMPORTER_ATTRS, :IMPORTER_METHODS
33
-
34
28
  def register(importer)
35
29
  if importer.is_a?(Sass::NodePackageImporter)
36
30
  EmbeddedProtocol::InboundMessage::CompileRequest::Importer.new(
@@ -39,10 +33,14 @@ module Sass
39
33
  )
40
34
  )
41
35
  else
42
- importer = Struct.new(importer, attrs: IMPORTER_ATTRS, methods: IMPORTER_METHODS) if importer.is_a?(::Hash)
43
-
44
- is_importer = importer.respond_to?(:canonicalize) && importer.respond_to?(:load)
45
- is_file_importer = importer.respond_to?(:find_file_url)
36
+ if importer.is_a?(::Hash)
37
+ is_importer = importer[:canonicalize].respond_to?(:call) && importer[:load].respond_to?(:call)
38
+ is_file_importer = importer[:find_file_url].respond_to?(:call)
39
+ importer = ImporterStruct.new(importer) if is_importer || is_file_importer
40
+ else
41
+ is_importer = importer.respond_to?(:canonicalize) && importer.respond_to?(:load)
42
+ is_file_importer = importer.respond_to?(:find_file_url)
43
+ end
46
44
 
47
45
  raise ArgumentError, 'importer must be an Importer or a FileImporter' if is_importer == is_file_importer
48
46
 
@@ -86,14 +84,10 @@ module Sass
86
84
  )
87
85
  end
88
86
 
89
- IMPORTER_RESULT_ATTRS = %i[contents syntax source_map_url].freeze
90
-
91
- private_constant :IMPORTER_RESULT_ATTRS
92
-
93
87
  def import(import_request)
94
88
  importer = @importers_by_id[import_request.importer_id]
95
89
  importer_result = importer.load(import_request.url)
96
- importer_result = Struct.new(importer_result, attrs: IMPORTER_RESULT_ATTRS) if importer_result.is_a?(::Hash)
90
+ importer_result = ImporterResultStruct.new(importer_result) if importer_result.is_a?(::Hash)
97
91
 
98
92
  EmbeddedProtocol::InboundMessage::ImportResponse.new(
99
93
  id: import_request.id,
@@ -142,6 +136,52 @@ module Sass
142
136
  raise ArgumentError, 'syntax must be one of :scss, :indented, :css'
143
137
  end
144
138
  end
139
+
140
+ # The {ImporterStruct} class.
141
+ class ImporterStruct
142
+ def initialize(hash)
143
+ @hash = hash
144
+ end
145
+
146
+ def canonicalize(...)
147
+ @hash[:canonicalize].call(...)
148
+ end
149
+
150
+ def load(...)
151
+ @hash[:load].call(...)
152
+ end
153
+
154
+ def non_canonical_scheme
155
+ @hash[:non_canonical_scheme]
156
+ end
157
+
158
+ def find_file_url(...)
159
+ @hash[:find_file_url].call(...)
160
+ end
161
+ end
162
+
163
+ private_constant :ImporterStruct
164
+
165
+ # The {ImporterResultStruct} class.
166
+ class ImporterResultStruct
167
+ def initialize(hash)
168
+ @hash = hash
169
+ end
170
+
171
+ def contents
172
+ @hash[:contents]
173
+ end
174
+
175
+ def syntax
176
+ @hash[:syntax]
177
+ end
178
+
179
+ def source_map_url
180
+ @hash[:source_map_url]
181
+ end
182
+ end
183
+
184
+ private_constant :ImporterResultStruct
145
185
  end
146
186
 
147
187
  private_constant :ImporterRegistry
@@ -4,33 +4,38 @@ module Sass
4
4
  class Compiler
5
5
  class Session
6
6
  # The {LoggerRegistry} class.
7
- #
8
- # It stores logger and handles log events.
9
7
  class LoggerRegistry
10
- LOGGER_METHODS = %i[debug warn].freeze
11
-
12
- private_constant :LOGGER_METHODS
13
-
14
- def initialize(logger)
15
- logger = Struct.new(logger, methods: LOGGER_METHODS) if logger.is_a?(::Hash)
8
+ def initialize(logger, alert_color:)
9
+ if logger.is_a?(::Hash)
10
+ respond_to_debug = logger[:debug].respond_to?(:call)
11
+ respond_to_warn = logger[:warn].respond_to?(:call)
12
+ logger = LoggerStruct.new(logger) if respond_to_debug || respond_to_warn
13
+ else
14
+ respond_to_debug = logger.respond_to?(:debug)
15
+ respond_to_warn = logger.respond_to?(:warn)
16
+ end
16
17
  @logger = logger
17
- @logger_respond_to_debug = logger.respond_to?(:debug)
18
- @logger_respond_to_warn = logger.respond_to?(:warn)
18
+ @alert_color = alert_color
19
+ @respond_to_debug = respond_to_debug
20
+ @respond_to_warn = respond_to_warn
19
21
  end
20
22
 
21
23
  def log(event)
22
24
  case event.type
23
25
  when :DEBUG
24
- if @logger_respond_to_debug
26
+ if @respond_to_debug
25
27
  @logger.debug(event.message, DebugContext.new(event))
26
28
  else
27
- Kernel.warn(Path.pretty_formatted!(+event.formatted, event.span.url))
29
+ path = event.span.url == '' ? '-' : Path.pretty_uri(event.span.url)
30
+ line = event.span.start.line + 1
31
+ type = @alert_color ? "\e[1mDebug\e[0m" : 'DEBUG'
32
+ Warning.warn("#{path}:#{line} #{type}: #{event.message}\n")
28
33
  end
29
34
  when :DEPRECATION_WARNING, :WARNING
30
- if @logger_respond_to_warn
35
+ if @respond_to_warn
31
36
  @logger.warn(event.message, WarnContext.new(event))
32
37
  else
33
- Kernel.warn(StackTrace.pretty_formatted!(+event.formatted, event.stack_trace))
38
+ Warning.warn(StackTrace.pretty_formatted!(+event.formatted, event.stack_trace))
34
39
  end
35
40
  else
36
41
  raise ArgumentError, "Unknown LogEvent.type #{event.type}"
@@ -69,6 +74,23 @@ module Sass
69
74
  end
70
75
 
71
76
  private_constant :WarnContext
77
+
78
+ # The {LoggerStruct} class.
79
+ class LoggerStruct
80
+ def initialize(hash)
81
+ @hash = hash
82
+ end
83
+
84
+ def debug(...)
85
+ @hash[:debug].call(...)
86
+ end
87
+
88
+ def warn(...)
89
+ @hash[:warn].call(...)
90
+ end
91
+ end
92
+
93
+ private_constant :LoggerStruct
72
94
  end
73
95
 
74
96
  private_constant :LoggerRegistry
@@ -15,17 +15,6 @@ module Sass
15
15
  relative_path = Uri.decode_uri_component(Uri.relative(uri, Uri.pwd))
16
16
  relative_path.count('/') > absolute_path.count('/') ? absolute_path : relative_path
17
17
  end
18
-
19
- def pretty_formatted!(formatted, uri)
20
- index = formatted.index(uri)
21
- return formatted unless index
22
-
23
- replacement = pretty_uri(uri)
24
- return formatted if uri == replacement
25
-
26
- formatted[index, uri.length] = replacement
27
- formatted
28
- end
29
18
  end
30
19
 
31
20
  private_constant :Path
@@ -90,6 +90,12 @@ module Sass
90
90
  id: assert_compiler_value(obj).instance_variable_get(:@id)
91
91
  )
92
92
  )
93
+ when Sass::Value::Module
94
+ EmbeddedProtocol::Value.new(
95
+ compiler_module: EmbeddedProtocol::Value::CompilerModule.new(
96
+ id: assert_compiler_value(obj).instance_variable_get(:@id)
97
+ )
98
+ )
93
99
  when Sass::Value::Calculation
94
100
  EmbeddedProtocol::Value.new(
95
101
  calculation: Calculation.to_proto(obj)
@@ -103,7 +109,7 @@ module Sass
103
109
  singleton: :NULL
104
110
  )
105
111
  else
106
- raise Sass::ScriptError, "Unknown Sass::Value #{obj}"
112
+ raise Sass::ScriptError, "Unknown Sass::Value #{obj.inspect}"
107
113
  end
108
114
  end
109
115
 
@@ -160,6 +166,8 @@ module Sass
160
166
  raise Sass::ScriptError, 'The compiler may not send Value.host_function to host'
161
167
  when :compiler_mixin
162
168
  compiler_value(Sass::Value::Mixin.allocate, obj.id)
169
+ when :compiler_module
170
+ compiler_value(Sass::Value::Module.allocate, obj.id)
163
171
  when :calculation
164
172
  Calculation.from_proto(obj)
165
173
  when :singleton
@@ -182,7 +190,7 @@ module Sass
182
190
 
183
191
  def assert_compiler_value(value)
184
192
  unless value.instance_variable_get(:@compile_context) == @function_registry.compile_context
185
- raise Sass::ScriptError, "Value #{value} does not belong to this compilation"
193
+ raise Sass::ScriptError, "Value #{value.inspect} does not belong to this compilation"
186
194
  end
187
195
 
188
196
  value
@@ -267,7 +275,7 @@ module Sass
267
275
  )
268
276
  )
269
277
  else
270
- raise Sass::ScriptError, "Unknown CalculationValue #{value}"
278
+ raise Sass::ScriptError, "Unknown CalculationValue #{value.inspect}"
271
279
  end
272
280
  end
273
281
 
@@ -310,7 +318,7 @@ module Sass
310
318
  when '/'
311
319
  :DIVIDE
312
320
  else
313
- raise Sass::ScriptError, "Unknown CalculationOperator #{separator}"
321
+ raise Sass::ScriptError, "Unknown CalculationOperator #{separator.inspect}"
314
322
  end
315
323
  end
316
324
 
@@ -347,7 +355,7 @@ module Sass
347
355
  when nil
348
356
  :UNDECIDED
349
357
  else
350
- raise Sass::ScriptError, "Unknown ListSeparator #{separator}"
358
+ raise Sass::ScriptError, "Unknown ListSeparator #{separator.inspect}"
351
359
  end
352
360
  end
353
361
 
@@ -6,7 +6,6 @@ require_relative 'session/logger_registry'
6
6
  require_relative 'session/path'
7
7
  require_relative 'session/protofier'
8
8
  require_relative 'session/stack_trace'
9
- require_relative 'session/struct'
10
9
 
11
10
  module Sass
12
11
  class Compiler
@@ -45,7 +44,7 @@ module Sass
45
44
 
46
45
  @function_registry = FunctionRegistry.new(functions, session: self)
47
46
  @importer_registry = ImporterRegistry.new(importers, load_paths, session: self)
48
- @logger_registry = LoggerRegistry.new(logger)
47
+ @logger_registry = LoggerRegistry.new(logger, alert_color:)
49
48
 
50
49
  compile_request = EmbeddedProtocol::InboundMessage::CompileRequest.new(
51
50
  string: unless source.nil?
@@ -1182,11 +1182,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1182
1182
 
1183
1183
  --------------------------------------------------------------------------------
1184
1184
 
1185
- petitparser license:
1185
+ petitparser and xml license:
1186
1186
 
1187
1187
  The MIT License
1188
1188
 
1189
- Copyright (c) 2006-2024 Lukas Renggli.
1189
+ Copyright (c) 2006-2026 Lukas Renggli.
1190
1190
  All rights reserved.
1191
1191
 
1192
1192
  Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -1666,34 +1666,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1666
1666
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1667
1667
 
1668
1668
 
1669
- --------------------------------------------------------------------------------
1670
-
1671
- xml license:
1672
-
1673
- The MIT License
1674
-
1675
- Copyright (c) 2006-2026 Lukas Renggli.
1676
- All rights reserved.
1677
-
1678
- Permission is hereby granted, free of charge, to any person obtaining a copy
1679
- of this software and associated documentation files (the "Software"), to deal
1680
- in the Software without restriction, including without limitation the rights
1681
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1682
- copies of the Software, and to permit persons to whom the Software is
1683
- furnished to do so, subject to the following conditions:
1684
-
1685
- The above copyright notice and this permission notice shall be included in
1686
- all copies or substantial portions of the Software.
1687
-
1688
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1689
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1690
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1691
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1692
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1693
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1694
- THE SOFTWARE.
1695
-
1696
-
1697
1669
  --------------------------------------------------------------------------------
1698
1670
 
1699
1671
  yaml license:
Binary file
Binary file
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sass
4
4
  module Embedded
5
- VERSION = '1.104.1'
5
+ VERSION = '1.105.1'
6
6
  end
7
7
  end
@@ -5,7 +5,7 @@
5
5
  require 'google/protobuf'
6
6
 
7
7
 
8
- descriptor_data = "\n\x13\x65mbedded_sass.proto\x12\x16sass.embedded_protocol\"\xe8\x10\n\x0eInboundMessage\x12P\n\x0f\x63ompile_request\x18\x02 \x01(\x0b\x32\x35.sass.embedded_protocol.InboundMessage.CompileRequestH\x00\x12\\\n\x15\x63\x61nonicalize_response\x18\x03 \x01(\x0b\x32;.sass.embedded_protocol.InboundMessage.CanonicalizeResponseH\x00\x12P\n\x0fimport_response\x18\x04 \x01(\x0b\x32\x35.sass.embedded_protocol.InboundMessage.ImportResponseH\x00\x12Y\n\x14\x66ile_import_response\x18\x05 \x01(\x0b\x32\x39.sass.embedded_protocol.InboundMessage.FileImportResponseH\x00\x12]\n\x16\x66unction_call_response\x18\x06 \x01(\x0b\x32;.sass.embedded_protocol.InboundMessage.FunctionCallResponseH\x00\x12P\n\x0fversion_request\x18\x07 \x01(\x0b\x32\x35.sass.embedded_protocol.InboundMessage.VersionRequestH\x00\x1a\x1c\n\x0eVersionRequest\x12\n\n\x02id\x18\x01 \x01(\r\x1a\x98\x07\n\x0e\x43ompileRequest\x12S\n\x06string\x18\x02 \x01(\x0b\x32\x41.sass.embedded_protocol.InboundMessage.CompileRequest.StringInputH\x00\x12\x0e\n\x04path\x18\x03 \x01(\tH\x00\x12\x32\n\x05style\x18\x04 \x01(\x0e\x32#.sass.embedded_protocol.OutputStyle\x12\x12\n\nsource_map\x18\x05 \x01(\x08\x12Q\n\timporters\x18\x06 \x03(\x0b\x32>.sass.embedded_protocol.InboundMessage.CompileRequest.Importer\x12\x18\n\x10global_functions\x18\x07 \x03(\t\x12\x13\n\x0b\x61lert_color\x18\x08 \x01(\x08\x12\x13\n\x0b\x61lert_ascii\x18\t \x01(\x08\x12\x0f\n\x07verbose\x18\n \x01(\x08\x12\x12\n\nquiet_deps\x18\x0b \x01(\x08\x12\"\n\x1asource_map_include_sources\x18\x0c \x01(\x08\x12\x0f\n\x07\x63harset\x18\r \x01(\x08\x12\x0e\n\x06silent\x18\x0e \x01(\x08\x12\x19\n\x11\x66\x61tal_deprecation\x18\x0f \x03(\t\x12\x1b\n\x13silence_deprecation\x18\x10 \x03(\t\x12\x1a\n\x12\x66uture_deprecation\x18\x11 \x03(\t\x1a\xac\x01\n\x0bStringInput\x12\x0e\n\x06source\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12.\n\x06syntax\x18\x03 \x01(\x0e\x32\x1e.sass.embedded_protocol.Syntax\x12P\n\x08importer\x18\x04 \x01(\x0b\x32>.sass.embedded_protocol.InboundMessage.CompileRequest.Importer\x1a\xc5\x01\n\x08Importer\x12\x0e\n\x04path\x18\x01 \x01(\tH\x00\x12\x15\n\x0bimporter_id\x18\x02 \x01(\rH\x00\x12\x1a\n\x10\x66ile_importer_id\x18\x03 \x01(\rH\x00\x12L\n\x15node_package_importer\x18\x05 \x01(\x0b\x32+.sass.embedded_protocol.NodePackageImporterH\x00\x12\x1c\n\x14non_canonical_scheme\x18\x04 \x03(\tB\n\n\x08importerB\x07\n\x05inputJ\x04\x08\x01\x10\x02\x1ak\n\x14\x43\x61nonicalizeResponse\x12\n\n\x02id\x18\x01 \x01(\r\x12\r\n\x03url\x18\x02 \x01(\tH\x00\x12\x0f\n\x05\x65rror\x18\x03 \x01(\tH\x00\x12\x1d\n\x15\x63ontaining_url_unused\x18\x04 \x01(\x08\x42\x08\n\x06result\x1a\x93\x02\n\x0eImportResponse\x12\n\n\x02id\x18\x01 \x01(\r\x12V\n\x07success\x18\x02 \x01(\x0b\x32\x43.sass.embedded_protocol.InboundMessage.ImportResponse.ImportSuccessH\x00\x12\x0f\n\x05\x65rror\x18\x03 \x01(\tH\x00\x1a\x81\x01\n\rImportSuccess\x12\x10\n\x08\x63ontents\x18\x01 \x01(\t\x12.\n\x06syntax\x18\x02 \x01(\x0e\x32\x1e.sass.embedded_protocol.Syntax\x12\x1b\n\x0esource_map_url\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x11\n\x0f_source_map_urlB\x08\n\x06result\x1an\n\x12\x46ileImportResponse\x12\n\n\x02id\x18\x01 \x01(\r\x12\x12\n\x08\x66ile_url\x18\x02 \x01(\tH\x00\x12\x0f\n\x05\x65rror\x18\x03 \x01(\tH\x00\x12\x1d\n\x15\x63ontaining_url_unused\x18\x04 \x01(\x08\x42\x08\n\x06result\x1a\x90\x01\n\x14\x46unctionCallResponse\x12\n\n\x02id\x18\x01 \x01(\r\x12\x30\n\x07success\x18\x02 \x01(\x0b\x32\x1d.sass.embedded_protocol.ValueH\x00\x12\x0f\n\x05\x65rror\x18\x03 \x01(\tH\x00\x12\x1f\n\x17\x61\x63\x63\x65ssed_argument_lists\x18\x04 \x03(\rB\x08\n\x06resultB\t\n\x07message\"\xcb\x0f\n\x0fOutboundMessage\x12\x36\n\x05\x65rror\x18\x01 \x01(\x0b\x32%.sass.embedded_protocol.ProtocolErrorH\x00\x12S\n\x10\x63ompile_response\x18\x02 \x01(\x0b\x32\x37.sass.embedded_protocol.OutboundMessage.CompileResponseH\x00\x12\x45\n\tlog_event\x18\x03 \x01(\x0b\x32\x30.sass.embedded_protocol.OutboundMessage.LogEventH\x00\x12[\n\x14\x63\x61nonicalize_request\x18\x04 \x01(\x0b\x32;.sass.embedded_protocol.OutboundMessage.CanonicalizeRequestH\x00\x12O\n\x0eimport_request\x18\x05 \x01(\x0b\x32\x35.sass.embedded_protocol.OutboundMessage.ImportRequestH\x00\x12X\n\x13\x66ile_import_request\x18\x06 \x01(\x0b\x32\x39.sass.embedded_protocol.OutboundMessage.FileImportRequestH\x00\x12\\\n\x15\x66unction_call_request\x18\x07 \x01(\x0b\x32;.sass.embedded_protocol.OutboundMessage.FunctionCallRequestH\x00\x12S\n\x10version_response\x18\x08 \x01(\x0b\x32\x37.sass.embedded_protocol.OutboundMessage.VersionResponseH\x00\x1a\x8e\x01\n\x0fVersionResponse\x12\n\n\x02id\x18\x05 \x01(\r\x12\x18\n\x10protocol_version\x18\x01 \x01(\t\x12\x18\n\x10\x63ompiler_version\x18\x02 \x01(\t\x12\x1e\n\x16implementation_version\x18\x03 \x01(\t\x12\x1b\n\x13implementation_name\x18\x04 \x01(\t\x1a\xa2\x03\n\x0f\x43ompileResponse\x12Y\n\x07success\x18\x02 \x01(\x0b\x32\x46.sass.embedded_protocol.OutboundMessage.CompileResponse.CompileSuccessH\x00\x12Y\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32\x46.sass.embedded_protocol.OutboundMessage.CompileResponse.CompileFailureH\x00\x12\x13\n\x0bloaded_urls\x18\x04 \x03(\t\x1a\x37\n\x0e\x43ompileSuccess\x12\x0b\n\x03\x63ss\x18\x01 \x01(\t\x12\x12\n\nsource_map\x18\x02 \x01(\tJ\x04\x08\x03\x10\x04\x1a{\n\x0e\x43ompileFailure\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x30\n\x04span\x18\x02 \x01(\x0b\x32\".sass.embedded_protocol.SourceSpan\x12\x13\n\x0bstack_trace\x18\x03 \x01(\t\x12\x11\n\tformatted\x18\x04 \x01(\tB\x08\n\x06resultJ\x04\x08\x01\x10\x02\x1a\xf1\x01\n\x08LogEvent\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32$.sass.embedded_protocol.LogEventType\x12\x0f\n\x07message\x18\x03 \x01(\t\x12\x35\n\x04span\x18\x04 \x01(\x0b\x32\".sass.embedded_protocol.SourceSpanH\x00\x88\x01\x01\x12\x13\n\x0bstack_trace\x18\x05 \x01(\t\x12\x11\n\tformatted\x18\x06 \x01(\t\x12\x1d\n\x10\x64\x65precation_type\x18\x07 \x01(\tH\x01\x88\x01\x01\x42\x07\n\x05_spanB\x13\n\x11_deprecation_typeJ\x04\x08\x01\x10\x02\x1a\x8e\x01\n\x13\x43\x61nonicalizeRequest\x12\n\n\x02id\x18\x01 \x01(\r\x12\x13\n\x0bimporter_id\x18\x03 \x01(\r\x12\x0b\n\x03url\x18\x04 \x01(\t\x12\x13\n\x0b\x66rom_import\x18\x05 \x01(\x08\x12\x1b\n\x0e\x63ontaining_url\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x11\n\x0f_containing_urlJ\x04\x08\x02\x10\x03\x1a\x43\n\rImportRequest\x12\n\n\x02id\x18\x01 \x01(\r\x12\x13\n\x0bimporter_id\x18\x03 \x01(\r\x12\x0b\n\x03url\x18\x04 \x01(\tJ\x04\x08\x02\x10\x03\x1a\x8c\x01\n\x11\x46ileImportRequest\x12\n\n\x02id\x18\x01 \x01(\r\x12\x13\n\x0bimporter_id\x18\x03 \x01(\r\x12\x0b\n\x03url\x18\x04 \x01(\t\x12\x13\n\x0b\x66rom_import\x18\x05 \x01(\x08\x12\x1b\n\x0e\x63ontaining_url\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x11\n\x0f_containing_urlJ\x04\x08\x02\x10\x03\x1a\x8e\x01\n\x13\x46unctionCallRequest\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0e\n\x04name\x18\x03 \x01(\tH\x00\x12\x15\n\x0b\x66unction_id\x18\x04 \x01(\rH\x00\x12\x30\n\targuments\x18\x05 \x03(\x0b\x32\x1d.sass.embedded_protocol.ValueB\x0c\n\nidentifierJ\x04\x08\x02\x10\x03\x42\t\n\x07message\"e\n\rProtocolError\x12\x37\n\x04type\x18\x01 \x01(\x0e\x32).sass.embedded_protocol.ProtocolErrorType\x12\n\n\x02id\x18\x02 \x01(\r\x12\x0f\n\x07message\x18\x03 \x01(\t\"\x87\x02\n\nSourceSpan\x12\x0c\n\x04text\x18\x01 \x01(\t\x12@\n\x05start\x18\x02 \x01(\x0b\x32\x31.sass.embedded_protocol.SourceSpan.SourceLocation\x12\x43\n\x03\x65nd\x18\x03 \x01(\x0b\x32\x31.sass.embedded_protocol.SourceSpan.SourceLocationH\x00\x88\x01\x01\x12\x0b\n\x03url\x18\x04 \x01(\t\x12\x0f\n\x07\x63ontext\x18\x05 \x01(\t\x1a>\n\x0eSourceLocation\x12\x0e\n\x06offset\x18\x01 \x01(\r\x12\x0c\n\x04line\x18\x02 \x01(\r\x12\x0e\n\x06\x63olumn\x18\x03 \x01(\rB\x06\n\x04_end\"\xf8\x11\n\x05Value\x12\x36\n\x06string\x18\x01 \x01(\x0b\x32$.sass.embedded_protocol.Value.StringH\x00\x12\x36\n\x06number\x18\x02 \x01(\x0b\x32$.sass.embedded_protocol.Value.NumberH\x00\x12\x32\n\x04list\x18\x05 \x01(\x0b\x32\".sass.embedded_protocol.Value.ListH\x00\x12\x30\n\x03map\x18\x06 \x01(\x0b\x32!.sass.embedded_protocol.Value.MapH\x00\x12;\n\tsingleton\x18\x07 \x01(\x0e\x32&.sass.embedded_protocol.SingletonValueH\x00\x12K\n\x11\x63ompiler_function\x18\x08 \x01(\x0b\x32..sass.embedded_protocol.Value.CompilerFunctionH\x00\x12\x43\n\rhost_function\x18\t \x01(\x0b\x32*.sass.embedded_protocol.Value.HostFunctionH\x00\x12\x43\n\rargument_list\x18\n \x01(\x0b\x32*.sass.embedded_protocol.Value.ArgumentListH\x00\x12@\n\x0b\x63\x61lculation\x18\x0c \x01(\x0b\x32).sass.embedded_protocol.Value.CalculationH\x00\x12\x45\n\x0e\x63ompiler_mixin\x18\r \x01(\x0b\x32+.sass.embedded_protocol.Value.CompilerMixinH\x00\x12\x34\n\x05\x63olor\x18\x0e \x01(\x0b\x32#.sass.embedded_protocol.Value.ColorH\x00\x1a&\n\x06String\x12\x0c\n\x04text\x18\x01 \x01(\t\x12\x0e\n\x06quoted\x18\x02 \x01(\x08\x1a\x41\n\x06Number\x12\r\n\x05value\x18\x01 \x01(\x01\x12\x12\n\nnumerators\x18\x02 \x03(\t\x12\x14\n\x0c\x64\x65nominators\x18\x03 \x03(\t\x1a\xa0\x01\n\x05\x43olor\x12\r\n\x05space\x18\x01 \x01(\t\x12\x15\n\x08\x63hannel1\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x63hannel2\x18\x03 \x01(\x01H\x01\x88\x01\x01\x12\x15\n\x08\x63hannel3\x18\x04 \x01(\x01H\x02\x88\x01\x01\x12\x12\n\x05\x61lpha\x18\x05 \x01(\x01H\x03\x88\x01\x01\x42\x0b\n\t_channel1B\x0b\n\t_channel2B\x0b\n\t_channel3B\x08\n\x06_alpha\x1a\x87\x01\n\x04List\x12\x38\n\tseparator\x18\x01 \x01(\x0e\x32%.sass.embedded_protocol.ListSeparator\x12\x14\n\x0chas_brackets\x18\x02 \x01(\x08\x12/\n\x08\x63ontents\x18\x03 \x03(\x0b\x32\x1d.sass.embedded_protocol.Value\x1a\xa2\x01\n\x03Map\x12\x38\n\x07\x65ntries\x18\x01 \x03(\x0b\x32\'.sass.embedded_protocol.Value.Map.Entry\x1a\x61\n\x05\x45ntry\x12*\n\x03key\x18\x01 \x01(\x0b\x32\x1d.sass.embedded_protocol.Value\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.sass.embedded_protocol.Value\x1a\x1e\n\x10\x43ompilerFunction\x12\n\n\x02id\x18\x01 \x01(\r\x1a-\n\x0cHostFunction\x12\n\n\x02id\x18\x01 \x01(\r\x12\x11\n\tsignature\x18\x02 \x01(\t\x1a\x1b\n\rCompilerMixin\x12\n\n\x02id\x18\x01 \x01(\r\x1a\xa1\x02\n\x0c\x41rgumentList\x12\n\n\x02id\x18\x01 \x01(\r\x12\x38\n\tseparator\x18\x02 \x01(\x0e\x32%.sass.embedded_protocol.ListSeparator\x12/\n\x08\x63ontents\x18\x03 \x03(\x0b\x32\x1d.sass.embedded_protocol.Value\x12J\n\x08keywords\x18\x04 \x03(\x0b\x32\x38.sass.embedded_protocol.Value.ArgumentList.KeywordsEntry\x1aN\n\rKeywordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.sass.embedded_protocol.Value:\x02\x38\x01\x1a\xef\x04\n\x0b\x43\x61lculation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12M\n\targuments\x18\x02 \x03(\x0b\x32:.sass.embedded_protocol.Value.Calculation.CalculationValue\x1a\x95\x02\n\x10\x43\x61lculationValue\x12\x36\n\x06number\x18\x01 \x01(\x0b\x32$.sass.embedded_protocol.Value.NumberH\x00\x12\x10\n\x06string\x18\x02 \x01(\tH\x00\x12\x17\n\rinterpolation\x18\x03 \x01(\tH\x00\x12S\n\toperation\x18\x04 \x01(\x0b\x32>.sass.embedded_protocol.Value.Calculation.CalculationOperationH\x00\x12@\n\x0b\x63\x61lculation\x18\x05 \x01(\x0b\x32).sass.embedded_protocol.Value.CalculationH\x00\x42\x07\n\x05value\x1a\xea\x01\n\x14\x43\x61lculationOperation\x12=\n\x08operator\x18\x01 \x01(\x0e\x32+.sass.embedded_protocol.CalculationOperator\x12H\n\x04left\x18\x02 \x01(\x0b\x32:.sass.embedded_protocol.Value.Calculation.CalculationValue\x12I\n\x05right\x18\x03 \x01(\x0b\x32:.sass.embedded_protocol.Value.Calculation.CalculationValueB\x07\n\x05value\"4\n\x13NodePackageImporter\x12\x1d\n\x15\x65ntry_point_directory\x18\x01 \x01(\t*+\n\x0bOutputStyle\x12\x0c\n\x08\x45XPANDED\x10\x00\x12\x0e\n\nCOMPRESSED\x10\x01*)\n\x06Syntax\x12\x08\n\x04SCSS\x10\x00\x12\x0c\n\x08INDENTED\x10\x01\x12\x07\n\x03\x43SS\x10\x02*?\n\x0cLogEventType\x12\x0b\n\x07WARNING\x10\x00\x12\x17\n\x13\x44\x45PRECATION_WARNING\x10\x01\x12\t\n\x05\x44\x45\x42UG\x10\x02*8\n\x11ProtocolErrorType\x12\t\n\x05PARSE\x10\x00\x12\n\n\x06PARAMS\x10\x01\x12\x0c\n\x08INTERNAL\x10\x02*?\n\rListSeparator\x12\t\n\x05\x43OMMA\x10\x00\x12\t\n\x05SPACE\x10\x01\x12\t\n\x05SLASH\x10\x02\x12\r\n\tUNDECIDED\x10\x03*/\n\x0eSingletonValue\x12\x08\n\x04TRUE\x10\x00\x12\t\n\x05\x46\x41LSE\x10\x01\x12\x08\n\x04NULL\x10\x02*A\n\x13\x43\x61lculationOperator\x12\x08\n\x04PLUS\x10\x00\x12\t\n\x05MINUS\x10\x01\x12\t\n\x05TIMES\x10\x02\x12\n\n\x06\x44IVIDE\x10\x03\x42#\n\x1f\x63om.sass_lang.embedded_protocolP\x01\x62\x06proto3"
8
+ descriptor_data = "\n\x13\x65mbedded_sass.proto\x12\x16sass.embedded_protocol\"\xe8\x10\n\x0eInboundMessage\x12P\n\x0f\x63ompile_request\x18\x02 \x01(\x0b\x32\x35.sass.embedded_protocol.InboundMessage.CompileRequestH\x00\x12\\\n\x15\x63\x61nonicalize_response\x18\x03 \x01(\x0b\x32;.sass.embedded_protocol.InboundMessage.CanonicalizeResponseH\x00\x12P\n\x0fimport_response\x18\x04 \x01(\x0b\x32\x35.sass.embedded_protocol.InboundMessage.ImportResponseH\x00\x12Y\n\x14\x66ile_import_response\x18\x05 \x01(\x0b\x32\x39.sass.embedded_protocol.InboundMessage.FileImportResponseH\x00\x12]\n\x16\x66unction_call_response\x18\x06 \x01(\x0b\x32;.sass.embedded_protocol.InboundMessage.FunctionCallResponseH\x00\x12P\n\x0fversion_request\x18\x07 \x01(\x0b\x32\x35.sass.embedded_protocol.InboundMessage.VersionRequestH\x00\x1a\x1c\n\x0eVersionRequest\x12\n\n\x02id\x18\x01 \x01(\r\x1a\x98\x07\n\x0e\x43ompileRequest\x12S\n\x06string\x18\x02 \x01(\x0b\x32\x41.sass.embedded_protocol.InboundMessage.CompileRequest.StringInputH\x00\x12\x0e\n\x04path\x18\x03 \x01(\tH\x00\x12\x32\n\x05style\x18\x04 \x01(\x0e\x32#.sass.embedded_protocol.OutputStyle\x12\x12\n\nsource_map\x18\x05 \x01(\x08\x12Q\n\timporters\x18\x06 \x03(\x0b\x32>.sass.embedded_protocol.InboundMessage.CompileRequest.Importer\x12\x18\n\x10global_functions\x18\x07 \x03(\t\x12\x13\n\x0b\x61lert_color\x18\x08 \x01(\x08\x12\x13\n\x0b\x61lert_ascii\x18\t \x01(\x08\x12\x0f\n\x07verbose\x18\n \x01(\x08\x12\x12\n\nquiet_deps\x18\x0b \x01(\x08\x12\"\n\x1asource_map_include_sources\x18\x0c \x01(\x08\x12\x0f\n\x07\x63harset\x18\r \x01(\x08\x12\x0e\n\x06silent\x18\x0e \x01(\x08\x12\x19\n\x11\x66\x61tal_deprecation\x18\x0f \x03(\t\x12\x1b\n\x13silence_deprecation\x18\x10 \x03(\t\x12\x1a\n\x12\x66uture_deprecation\x18\x11 \x03(\t\x1a\xac\x01\n\x0bStringInput\x12\x0e\n\x06source\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12.\n\x06syntax\x18\x03 \x01(\x0e\x32\x1e.sass.embedded_protocol.Syntax\x12P\n\x08importer\x18\x04 \x01(\x0b\x32>.sass.embedded_protocol.InboundMessage.CompileRequest.Importer\x1a\xc5\x01\n\x08Importer\x12\x0e\n\x04path\x18\x01 \x01(\tH\x00\x12\x15\n\x0bimporter_id\x18\x02 \x01(\rH\x00\x12\x1a\n\x10\x66ile_importer_id\x18\x03 \x01(\rH\x00\x12L\n\x15node_package_importer\x18\x05 \x01(\x0b\x32+.sass.embedded_protocol.NodePackageImporterH\x00\x12\x1c\n\x14non_canonical_scheme\x18\x04 \x03(\tB\n\n\x08importerB\x07\n\x05inputJ\x04\x08\x01\x10\x02\x1ak\n\x14\x43\x61nonicalizeResponse\x12\n\n\x02id\x18\x01 \x01(\r\x12\r\n\x03url\x18\x02 \x01(\tH\x00\x12\x0f\n\x05\x65rror\x18\x03 \x01(\tH\x00\x12\x1d\n\x15\x63ontaining_url_unused\x18\x04 \x01(\x08\x42\x08\n\x06result\x1a\x93\x02\n\x0eImportResponse\x12\n\n\x02id\x18\x01 \x01(\r\x12V\n\x07success\x18\x02 \x01(\x0b\x32\x43.sass.embedded_protocol.InboundMessage.ImportResponse.ImportSuccessH\x00\x12\x0f\n\x05\x65rror\x18\x03 \x01(\tH\x00\x1a\x81\x01\n\rImportSuccess\x12\x10\n\x08\x63ontents\x18\x01 \x01(\t\x12.\n\x06syntax\x18\x02 \x01(\x0e\x32\x1e.sass.embedded_protocol.Syntax\x12\x1b\n\x0esource_map_url\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x11\n\x0f_source_map_urlB\x08\n\x06result\x1an\n\x12\x46ileImportResponse\x12\n\n\x02id\x18\x01 \x01(\r\x12\x12\n\x08\x66ile_url\x18\x02 \x01(\tH\x00\x12\x0f\n\x05\x65rror\x18\x03 \x01(\tH\x00\x12\x1d\n\x15\x63ontaining_url_unused\x18\x04 \x01(\x08\x42\x08\n\x06result\x1a\x90\x01\n\x14\x46unctionCallResponse\x12\n\n\x02id\x18\x01 \x01(\r\x12\x30\n\x07success\x18\x02 \x01(\x0b\x32\x1d.sass.embedded_protocol.ValueH\x00\x12\x0f\n\x05\x65rror\x18\x03 \x01(\tH\x00\x12\x1f\n\x17\x61\x63\x63\x65ssed_argument_lists\x18\x04 \x03(\rB\x08\n\x06resultB\t\n\x07message\"\xcb\x0f\n\x0fOutboundMessage\x12\x36\n\x05\x65rror\x18\x01 \x01(\x0b\x32%.sass.embedded_protocol.ProtocolErrorH\x00\x12S\n\x10\x63ompile_response\x18\x02 \x01(\x0b\x32\x37.sass.embedded_protocol.OutboundMessage.CompileResponseH\x00\x12\x45\n\tlog_event\x18\x03 \x01(\x0b\x32\x30.sass.embedded_protocol.OutboundMessage.LogEventH\x00\x12[\n\x14\x63\x61nonicalize_request\x18\x04 \x01(\x0b\x32;.sass.embedded_protocol.OutboundMessage.CanonicalizeRequestH\x00\x12O\n\x0eimport_request\x18\x05 \x01(\x0b\x32\x35.sass.embedded_protocol.OutboundMessage.ImportRequestH\x00\x12X\n\x13\x66ile_import_request\x18\x06 \x01(\x0b\x32\x39.sass.embedded_protocol.OutboundMessage.FileImportRequestH\x00\x12\\\n\x15\x66unction_call_request\x18\x07 \x01(\x0b\x32;.sass.embedded_protocol.OutboundMessage.FunctionCallRequestH\x00\x12S\n\x10version_response\x18\x08 \x01(\x0b\x32\x37.sass.embedded_protocol.OutboundMessage.VersionResponseH\x00\x1a\x8e\x01\n\x0fVersionResponse\x12\n\n\x02id\x18\x05 \x01(\r\x12\x18\n\x10protocol_version\x18\x01 \x01(\t\x12\x18\n\x10\x63ompiler_version\x18\x02 \x01(\t\x12\x1e\n\x16implementation_version\x18\x03 \x01(\t\x12\x1b\n\x13implementation_name\x18\x04 \x01(\t\x1a\xa2\x03\n\x0f\x43ompileResponse\x12Y\n\x07success\x18\x02 \x01(\x0b\x32\x46.sass.embedded_protocol.OutboundMessage.CompileResponse.CompileSuccessH\x00\x12Y\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32\x46.sass.embedded_protocol.OutboundMessage.CompileResponse.CompileFailureH\x00\x12\x13\n\x0bloaded_urls\x18\x04 \x03(\t\x1a\x37\n\x0e\x43ompileSuccess\x12\x0b\n\x03\x63ss\x18\x01 \x01(\t\x12\x12\n\nsource_map\x18\x02 \x01(\tJ\x04\x08\x03\x10\x04\x1a{\n\x0e\x43ompileFailure\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x30\n\x04span\x18\x02 \x01(\x0b\x32\".sass.embedded_protocol.SourceSpan\x12\x13\n\x0bstack_trace\x18\x03 \x01(\t\x12\x11\n\tformatted\x18\x04 \x01(\tB\x08\n\x06resultJ\x04\x08\x01\x10\x02\x1a\xf1\x01\n\x08LogEvent\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32$.sass.embedded_protocol.LogEventType\x12\x0f\n\x07message\x18\x03 \x01(\t\x12\x35\n\x04span\x18\x04 \x01(\x0b\x32\".sass.embedded_protocol.SourceSpanH\x00\x88\x01\x01\x12\x13\n\x0bstack_trace\x18\x05 \x01(\t\x12\x11\n\tformatted\x18\x06 \x01(\t\x12\x1d\n\x10\x64\x65precation_type\x18\x07 \x01(\tH\x01\x88\x01\x01\x42\x07\n\x05_spanB\x13\n\x11_deprecation_typeJ\x04\x08\x01\x10\x02\x1a\x8e\x01\n\x13\x43\x61nonicalizeRequest\x12\n\n\x02id\x18\x01 \x01(\r\x12\x13\n\x0bimporter_id\x18\x03 \x01(\r\x12\x0b\n\x03url\x18\x04 \x01(\t\x12\x13\n\x0b\x66rom_import\x18\x05 \x01(\x08\x12\x1b\n\x0e\x63ontaining_url\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x11\n\x0f_containing_urlJ\x04\x08\x02\x10\x03\x1a\x43\n\rImportRequest\x12\n\n\x02id\x18\x01 \x01(\r\x12\x13\n\x0bimporter_id\x18\x03 \x01(\r\x12\x0b\n\x03url\x18\x04 \x01(\tJ\x04\x08\x02\x10\x03\x1a\x8c\x01\n\x11\x46ileImportRequest\x12\n\n\x02id\x18\x01 \x01(\r\x12\x13\n\x0bimporter_id\x18\x03 \x01(\r\x12\x0b\n\x03url\x18\x04 \x01(\t\x12\x13\n\x0b\x66rom_import\x18\x05 \x01(\x08\x12\x1b\n\x0e\x63ontaining_url\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x11\n\x0f_containing_urlJ\x04\x08\x02\x10\x03\x1a\x8e\x01\n\x13\x46unctionCallRequest\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0e\n\x04name\x18\x03 \x01(\tH\x00\x12\x15\n\x0b\x66unction_id\x18\x04 \x01(\rH\x00\x12\x30\n\targuments\x18\x05 \x03(\x0b\x32\x1d.sass.embedded_protocol.ValueB\x0c\n\nidentifierJ\x04\x08\x02\x10\x03\x42\t\n\x07message\"e\n\rProtocolError\x12\x37\n\x04type\x18\x01 \x01(\x0e\x32).sass.embedded_protocol.ProtocolErrorType\x12\n\n\x02id\x18\x02 \x01(\r\x12\x0f\n\x07message\x18\x03 \x01(\t\"\x87\x02\n\nSourceSpan\x12\x0c\n\x04text\x18\x01 \x01(\t\x12@\n\x05start\x18\x02 \x01(\x0b\x32\x31.sass.embedded_protocol.SourceSpan.SourceLocation\x12\x43\n\x03\x65nd\x18\x03 \x01(\x0b\x32\x31.sass.embedded_protocol.SourceSpan.SourceLocationH\x00\x88\x01\x01\x12\x0b\n\x03url\x18\x04 \x01(\t\x12\x0f\n\x07\x63ontext\x18\x05 \x01(\t\x1a>\n\x0eSourceLocation\x12\x0e\n\x06offset\x18\x01 \x01(\r\x12\x0c\n\x04line\x18\x02 \x01(\r\x12\x0e\n\x06\x63olumn\x18\x03 \x01(\rB\x06\n\x04_end\"\xdf\x12\n\x05Value\x12\x36\n\x06string\x18\x01 \x01(\x0b\x32$.sass.embedded_protocol.Value.StringH\x00\x12\x36\n\x06number\x18\x02 \x01(\x0b\x32$.sass.embedded_protocol.Value.NumberH\x00\x12\x32\n\x04list\x18\x05 \x01(\x0b\x32\".sass.embedded_protocol.Value.ListH\x00\x12\x30\n\x03map\x18\x06 \x01(\x0b\x32!.sass.embedded_protocol.Value.MapH\x00\x12;\n\tsingleton\x18\x07 \x01(\x0e\x32&.sass.embedded_protocol.SingletonValueH\x00\x12K\n\x11\x63ompiler_function\x18\x08 \x01(\x0b\x32..sass.embedded_protocol.Value.CompilerFunctionH\x00\x12\x43\n\rhost_function\x18\t \x01(\x0b\x32*.sass.embedded_protocol.Value.HostFunctionH\x00\x12\x43\n\rargument_list\x18\n \x01(\x0b\x32*.sass.embedded_protocol.Value.ArgumentListH\x00\x12@\n\x0b\x63\x61lculation\x18\x0c \x01(\x0b\x32).sass.embedded_protocol.Value.CalculationH\x00\x12\x45\n\x0e\x63ompiler_mixin\x18\r \x01(\x0b\x32+.sass.embedded_protocol.Value.CompilerMixinH\x00\x12\x34\n\x05\x63olor\x18\x0e \x01(\x0b\x32#.sass.embedded_protocol.Value.ColorH\x00\x12G\n\x0f\x63ompiler_module\x18\x0f \x01(\x0b\x32,.sass.embedded_protocol.Value.CompilerModuleH\x00\x1a&\n\x06String\x12\x0c\n\x04text\x18\x01 \x01(\t\x12\x0e\n\x06quoted\x18\x02 \x01(\x08\x1a\x41\n\x06Number\x12\r\n\x05value\x18\x01 \x01(\x01\x12\x12\n\nnumerators\x18\x02 \x03(\t\x12\x14\n\x0c\x64\x65nominators\x18\x03 \x03(\t\x1a\xa0\x01\n\x05\x43olor\x12\r\n\x05space\x18\x01 \x01(\t\x12\x15\n\x08\x63hannel1\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x63hannel2\x18\x03 \x01(\x01H\x01\x88\x01\x01\x12\x15\n\x08\x63hannel3\x18\x04 \x01(\x01H\x02\x88\x01\x01\x12\x12\n\x05\x61lpha\x18\x05 \x01(\x01H\x03\x88\x01\x01\x42\x0b\n\t_channel1B\x0b\n\t_channel2B\x0b\n\t_channel3B\x08\n\x06_alpha\x1a\x87\x01\n\x04List\x12\x38\n\tseparator\x18\x01 \x01(\x0e\x32%.sass.embedded_protocol.ListSeparator\x12\x14\n\x0chas_brackets\x18\x02 \x01(\x08\x12/\n\x08\x63ontents\x18\x03 \x03(\x0b\x32\x1d.sass.embedded_protocol.Value\x1a\xa2\x01\n\x03Map\x12\x38\n\x07\x65ntries\x18\x01 \x03(\x0b\x32\'.sass.embedded_protocol.Value.Map.Entry\x1a\x61\n\x05\x45ntry\x12*\n\x03key\x18\x01 \x01(\x0b\x32\x1d.sass.embedded_protocol.Value\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.sass.embedded_protocol.Value\x1a\x1e\n\x10\x43ompilerFunction\x12\n\n\x02id\x18\x01 \x01(\r\x1a-\n\x0cHostFunction\x12\n\n\x02id\x18\x01 \x01(\r\x12\x11\n\tsignature\x18\x02 \x01(\t\x1a\x1b\n\rCompilerMixin\x12\n\n\x02id\x18\x01 \x01(\r\x1a\x1c\n\x0e\x43ompilerModule\x12\n\n\x02id\x18\x01 \x01(\r\x1a\xa1\x02\n\x0c\x41rgumentList\x12\n\n\x02id\x18\x01 \x01(\r\x12\x38\n\tseparator\x18\x02 \x01(\x0e\x32%.sass.embedded_protocol.ListSeparator\x12/\n\x08\x63ontents\x18\x03 \x03(\x0b\x32\x1d.sass.embedded_protocol.Value\x12J\n\x08keywords\x18\x04 \x03(\x0b\x32\x38.sass.embedded_protocol.Value.ArgumentList.KeywordsEntry\x1aN\n\rKeywordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.sass.embedded_protocol.Value:\x02\x38\x01\x1a\xef\x04\n\x0b\x43\x61lculation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12M\n\targuments\x18\x02 \x03(\x0b\x32:.sass.embedded_protocol.Value.Calculation.CalculationValue\x1a\x95\x02\n\x10\x43\x61lculationValue\x12\x36\n\x06number\x18\x01 \x01(\x0b\x32$.sass.embedded_protocol.Value.NumberH\x00\x12\x10\n\x06string\x18\x02 \x01(\tH\x00\x12\x17\n\rinterpolation\x18\x03 \x01(\tH\x00\x12S\n\toperation\x18\x04 \x01(\x0b\x32>.sass.embedded_protocol.Value.Calculation.CalculationOperationH\x00\x12@\n\x0b\x63\x61lculation\x18\x05 \x01(\x0b\x32).sass.embedded_protocol.Value.CalculationH\x00\x42\x07\n\x05value\x1a\xea\x01\n\x14\x43\x61lculationOperation\x12=\n\x08operator\x18\x01 \x01(\x0e\x32+.sass.embedded_protocol.CalculationOperator\x12H\n\x04left\x18\x02 \x01(\x0b\x32:.sass.embedded_protocol.Value.Calculation.CalculationValue\x12I\n\x05right\x18\x03 \x01(\x0b\x32:.sass.embedded_protocol.Value.Calculation.CalculationValueB\x07\n\x05value\"4\n\x13NodePackageImporter\x12\x1d\n\x15\x65ntry_point_directory\x18\x01 \x01(\t*+\n\x0bOutputStyle\x12\x0c\n\x08\x45XPANDED\x10\x00\x12\x0e\n\nCOMPRESSED\x10\x01*)\n\x06Syntax\x12\x08\n\x04SCSS\x10\x00\x12\x0c\n\x08INDENTED\x10\x01\x12\x07\n\x03\x43SS\x10\x02*?\n\x0cLogEventType\x12\x0b\n\x07WARNING\x10\x00\x12\x17\n\x13\x44\x45PRECATION_WARNING\x10\x01\x12\t\n\x05\x44\x45\x42UG\x10\x02*8\n\x11ProtocolErrorType\x12\t\n\x05PARSE\x10\x00\x12\n\n\x06PARAMS\x10\x01\x12\x0c\n\x08INTERNAL\x10\x02*?\n\rListSeparator\x12\t\n\x05\x43OMMA\x10\x00\x12\t\n\x05SPACE\x10\x01\x12\t\n\x05SLASH\x10\x02\x12\r\n\tUNDECIDED\x10\x03*/\n\x0eSingletonValue\x12\x08\n\x04TRUE\x10\x00\x12\t\n\x05\x46\x41LSE\x10\x01\x12\x08\n\x04NULL\x10\x02*A\n\x13\x43\x61lculationOperator\x12\x08\n\x04PLUS\x10\x00\x12\t\n\x05MINUS\x10\x01\x12\t\n\x05TIMES\x10\x02\x12\n\n\x06\x44IVIDE\x10\x03\x42#\n\x1f\x63om.sass_lang.embedded_protocolP\x01\x62\x06proto3"
9
9
 
10
10
  pool = ::Google::Protobuf::DescriptorPool.generated_pool
11
11
  pool.add_serialized_file(descriptor_data)
@@ -45,6 +45,7 @@ module Sass
45
45
  Value::CompilerFunction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.CompilerFunction").msgclass
46
46
  Value::HostFunction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.HostFunction").msgclass
47
47
  Value::CompilerMixin = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.CompilerMixin").msgclass
48
+ Value::CompilerModule = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.CompilerModule").msgclass
48
49
  Value::ArgumentList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.ArgumentList").msgclass
49
50
  Value::Calculation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.Calculation").msgclass
50
51
  Value::Calculation::CalculationValue = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("sass.embedded_protocol.Value.Calculation.CalculationValue").msgclass
@@ -31,6 +31,13 @@ module Sass
31
31
  @hash ||= value.hash
32
32
  end
33
33
 
34
+ # @return [::String]
35
+ def to_s
36
+ value.to_s
37
+ end
38
+
39
+ alias inspect to_s
40
+
34
41
  alias to_bool value
35
42
 
36
43
  # @return [Boolean]
@@ -124,7 +124,7 @@ module Sass
124
124
  return channel2 if channel == channels[2].name
125
125
  return alpha if channel == 'alpha'
126
126
 
127
- raise Sass::ScriptError.new("Color #{self} doesn't have a channel named \"#{channel}\".", channel)
127
+ raise Sass::ScriptError.new("Color #{inspect} doesn't have a channel named \"#{channel}\".", channel)
128
128
  end
129
129
 
130
130
  # @param channel [::String]
@@ -136,7 +136,7 @@ module Sass
136
136
  return channel2_missing? if channel == channels[2].name
137
137
  return alpha_missing? if channel == 'alpha'
138
138
 
139
- raise Sass::ScriptError.new("Color #{self} doesn't have a channel named \"#{channel}\".", channel)
139
+ raise Sass::ScriptError.new("Color #{inspect} doesn't have a channel named \"#{channel}\".", channel)
140
140
  end
141
141
 
142
142
  # @param channel [::String]
@@ -151,7 +151,7 @@ module Sass
151
151
  return channel2_powerless? if channel == channels[2].name
152
152
  return false if channel == 'alpha'
153
153
 
154
- raise Sass::ScriptError.new("Color #{self} doesn't have a channel named \"#{channel}\".", channel)
154
+ raise Sass::ScriptError.new("Color #{inspect} doesn't have a channel named \"#{channel}\".", channel)
155
155
  end
156
156
 
157
157
  # @param other [Color]
@@ -43,6 +43,20 @@ module Sass
43
43
  @hash ||= defined?(@id) ? [compile_context, id].hash : [signature, callback].hash
44
44
  end
45
45
 
46
+ # @raise [ScriptError]
47
+ def to_s
48
+ return super unless defined?(@id)
49
+
50
+ raise Sass::ScriptError, "#{inspect} isn't a valid CSS value."
51
+ end
52
+
53
+ # @return [::String]
54
+ def inspect
55
+ return super unless defined?(@id)
56
+
57
+ 'get-function(<anonymous>)'
58
+ end
59
+
46
60
  # @return [Function]
47
61
  def assert_function(_name = nil)
48
62
  self
@@ -58,6 +58,16 @@ module Sass
58
58
  @contents
59
59
  end
60
60
 
61
+ # @return [Hash<Value, Value>]
62
+ # @raise [ScriptError, ArgumentError, TypeError]
63
+ def to_h(...)
64
+ return super if block_given?
65
+
66
+ super do |element|
67
+ element.is_a?(Sass::Value::List) ? element.to_a : element
68
+ end
69
+ end
70
+
61
71
  # @return [Map, nil]
62
72
  def to_map
63
73
  to_a.empty? ? Sass::Value::Map.new({}) : nil
@@ -51,6 +51,12 @@ module Sass
51
51
  contents.map { |key, value| Sass::Value::List.new([key, value], separator: ' ') }
52
52
  end
53
53
 
54
+ # @return [Hash<Value, Value>]
55
+ # @raise [ScriptError, ArgumentError, TypeError]
56
+ def to_h(...)
57
+ contents.to_h(...)
58
+ end
59
+
54
60
  # @return [Map]
55
61
  def to_map
56
62
  self
@@ -28,6 +28,16 @@ module Sass
28
28
  @hash ||= [compile_context, id].hash
29
29
  end
30
30
 
31
+ # @raise [ScriptError]
32
+ def to_s
33
+ raise Sass::ScriptError, "#{inspect} isn't a valid CSS value."
34
+ end
35
+
36
+ # @return [::String]
37
+ def inspect
38
+ 'get-mixin(<anonymous>)'
39
+ end
40
+
31
41
  # @return [Mixin]
32
42
  def assert_mixin(_name = nil)
33
43
  self
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sass
4
+ module Value
5
+ # Sass's module type.
6
+ #
7
+ # @see https://sass-lang.com/documentation/js-api/classes/sassmodule/
8
+ class Module
9
+ include Value
10
+
11
+ class << self
12
+ private :new
13
+ end
14
+
15
+ # @return [Object]
16
+ protected attr_reader :compile_context
17
+
18
+ # @return [Integer]
19
+ protected attr_reader :id
20
+
21
+ # @return [::Boolean]
22
+ def ==(other)
23
+ other.is_a?(Sass::Value::Module) && other.compile_context == compile_context && other.id == id
24
+ end
25
+
26
+ # @return [Integer]
27
+ def hash
28
+ @hash ||= [compile_context, id].hash
29
+ end
30
+
31
+ # @raise [ScriptError]
32
+ def to_s
33
+ raise Sass::ScriptError, "#{inspect} isn't a valid CSS value."
34
+ end
35
+
36
+ # @return [::String]
37
+ def inspect
38
+ 'get-module(<anonymous>)'
39
+ end
40
+
41
+ # @return [Module]
42
+ def assert_module(_name = nil)
43
+ self
44
+ end
45
+ end
46
+ end
47
+ end
@@ -30,6 +30,16 @@ module Sass
30
30
  @hash ||= value.hash
31
31
  end
32
32
 
33
+ # @return [::String]
34
+ def to_s
35
+ ''
36
+ end
37
+
38
+ # @return [::String]
39
+ def inspect
40
+ 'null'
41
+ end
42
+
33
43
  # @return [::Boolean]
34
44
  def to_bool # rubocop:disable Naming/PredicateMethod
35
45
  false
@@ -110,7 +110,7 @@ module Sass
110
110
  # @return [Number]
111
111
  # @raise [ScriptError]
112
112
  def assert_unitless(name = nil)
113
- raise Sass::ScriptError.new("Expected #{self} to have no units", name) unless unitless?
113
+ raise Sass::ScriptError.new("Expected #{inspect} to have no units", name) unless unitless?
114
114
 
115
115
  self
116
116
  end
@@ -130,7 +130,7 @@ module Sass
130
130
  # @return [Number]
131
131
  # @raise [ScriptError]
132
132
  def assert_unit(unit, name = nil)
133
- raise Sass::ScriptError.new("Expected #{self} to have unit #{unit.inspect}", name) unless unit?(unit)
133
+ raise Sass::ScriptError.new("Expected #{inspect} to have unit #{unit.inspect}", name) unless unit?(unit)
134
134
 
135
135
  self
136
136
  end
@@ -143,7 +143,7 @@ module Sass
143
143
  # @return [Integer]
144
144
  # @raise [ScriptError]
145
145
  def assert_integer(name = nil)
146
- raise Sass::ScriptError.new("#{self} is not an integer", name) unless integer?
146
+ raise Sass::ScriptError.new("#{inspect} is not an integer", name) unless integer?
147
147
 
148
148
  to_i
149
149
  end
@@ -288,25 +288,25 @@ module Sass
288
288
 
289
289
  compatibility_error = lambda {
290
290
  unless other.nil?
291
- message = "#{self} and"
291
+ message = "#{inspect} and"
292
292
  message << " $#{other_name}:" unless other_name.nil?
293
293
  message << " #{other} have incompatible units"
294
294
  message << " (one has units and the other doesn't)" if unitless? || other_unitless
295
295
  return Sass::ScriptError.new(message, name)
296
296
  end
297
297
 
298
- return Sass::ScriptError.new("Expected #{self} to have no units", name) unless other_unitless
298
+ return Sass::ScriptError.new("Expected #{inspect} to have no units", name) unless other_unitless
299
299
 
300
300
  if new_numerator_units.length == 1 && new_denominator_units.empty?
301
301
  type = Unit::TYPES_BY_UNIT[new_numerator_units.first]
302
302
  return Sass::ScriptError.new(
303
- "Expected #{self} to have a #{type} unit (#{Unit::UNITS_BY_TYPE[type].join(', ')})", name
303
+ "Expected #{inspect} to have a #{type} unit (#{Unit::UNITS_BY_TYPE[type].join(', ')})", name
304
304
  )
305
305
  end
306
306
 
307
307
  unit_length = new_numerator_units.length + new_denominator_units.length
308
308
  units = unit_string(new_numerator_units, new_denominator_units)
309
- Sass::ScriptError.new("Expected #{self} to have unit#{'s' if unit_length > 1} #{units}", name)
309
+ Sass::ScriptError.new("Expected #{inspect} to have unit#{'s' if unit_length > 1} #{units}", name)
310
310
  }
311
311
 
312
312
  result = value
@@ -24,6 +24,16 @@ module Sass
24
24
  @quoted
25
25
  end
26
26
 
27
+ # @return [String]
28
+ # @raise [TypeError]
29
+ def +(other)
30
+ unless other.respond_to?(:to_str)
31
+ raise TypeError, "no implicit conversion of #{other&.class.inspect} into String"
32
+ end
33
+
34
+ Sass::Value::String.new(to_str + other.to_str, quoted: quoted?)
35
+ end
36
+
27
37
  # @return [::Boolean]
28
38
  def ==(other)
29
39
  other.is_a?(Sass::Value::String) && other.text == text
@@ -34,6 +44,18 @@ module Sass
34
44
  @hash ||= text.hash
35
45
  end
36
46
 
47
+ # @return [::String]
48
+ def to_s
49
+ @quoted ? Serializer.serialize_quoted_string(@text) : Serializer.serialize_unquoted_string(@text)
50
+ end
51
+
52
+ alias inspect to_s
53
+
54
+ # @return [::String]
55
+ def to_str
56
+ text.to_str
57
+ end
58
+
37
59
  # @return [String]
38
60
  def assert_string(_name = nil)
39
61
  self
@@ -51,11 +73,6 @@ module Sass
51
73
 
52
74
  index.negative? ? text.length + index : index - 1
53
75
  end
54
-
55
- # @return [::String]
56
- def to_s
57
- @quoted ? Serializer.serialize_quoted_string(@text) : Serializer.serialize_unquoted_string(@text)
58
- end
59
76
  end
60
77
  end
61
78
  end
data/lib/sass/value.rb CHANGED
@@ -37,6 +37,37 @@ module Sass
37
37
  [self]
38
38
  end
39
39
 
40
+ # @return [Hash<Value, Value>]
41
+ # @raise [ScriptError, ArgumentError, TypeError]
42
+ def to_h(...)
43
+ to_a.to_h(...)
44
+ end
45
+
46
+ # @return [::String]
47
+ # @raise [ScriptError]
48
+ def to_s
49
+ s = nil
50
+ Sass.compile_string('$_:o(#{i()});', functions: { # rubocop:disable Lint/InterpolationCheck
51
+ 'i()' => ->(_) { self },
52
+ 'o($s)' => ->(args) { s = args[0].assert_string }
53
+ })
54
+ s.text
55
+ rescue Sass::CompileError => e
56
+ raise Sass::ScriptError.new(e.message), cause: nil
57
+ end
58
+
59
+ # @return [::String]
60
+ def inspect
61
+ s = nil
62
+ Sass.compile_string('@use "sass:meta";$_:o(meta.inspect(i()));', functions: {
63
+ 'i()' => ->(_) { self },
64
+ 'o($s)' => ->(args) { s = args[0].assert_string }
65
+ })
66
+ s.text
67
+ rescue StandardError
68
+ super
69
+ end
70
+
40
71
  # @return [::Boolean]
41
72
  def to_bool # rubocop:disable Naming/PredicateMethod
42
73
  true
@@ -55,49 +86,55 @@ module Sass
55
86
  # @return [Boolean]
56
87
  # @raise [ScriptError]
57
88
  def assert_boolean(name = nil)
58
- raise Sass::ScriptError.new("#{self} is not a boolean", name)
89
+ raise Sass::ScriptError.new("#{inspect} is not a boolean", name)
59
90
  end
60
91
 
61
92
  # @return [Calculation]
62
93
  # @raise [ScriptError]
63
94
  def assert_calculation(name = nil)
64
- raise Sass::ScriptError.new("#{self} is not a calculation", name)
95
+ raise Sass::ScriptError.new("#{inspect} is not a calculation", name)
65
96
  end
66
97
 
67
98
  # @return [Color]
68
99
  # @raise [ScriptError]
69
100
  def assert_color(name = nil)
70
- raise Sass::ScriptError.new("#{self} is not a color", name)
101
+ raise Sass::ScriptError.new("#{inspect} is not a color", name)
71
102
  end
72
103
 
73
104
  # @return [Function]
74
105
  # @raise [ScriptError]
75
106
  def assert_function(name = nil)
76
- raise Sass::ScriptError.new("#{self} is not a function", name)
107
+ raise Sass::ScriptError.new("#{inspect} is not a function", name)
77
108
  end
78
109
 
79
110
  # @return [Map]
80
111
  # @raise [ScriptError]
81
112
  def assert_map(name = nil)
82
- raise Sass::ScriptError.new("#{self} is not a map", name)
113
+ raise Sass::ScriptError.new("#{inspect} is not a map", name)
83
114
  end
84
115
 
85
116
  # @return [Mixin]
86
117
  # @raise [ScriptError]
87
118
  def assert_mixin(name = nil)
88
- raise Sass::ScriptError.new("#{self} is not a mixin", name)
119
+ raise Sass::ScriptError.new("#{inspect} is not a mixin", name)
120
+ end
121
+
122
+ # @return [Module]
123
+ # @raise [ScriptError]
124
+ def assert_module(name = nil)
125
+ raise Sass::ScriptError.new("#{inspect} is not a module", name)
89
126
  end
90
127
 
91
128
  # @return [Number]
92
129
  # @raise [ScriptError]
93
130
  def assert_number(name = nil)
94
- raise Sass::ScriptError.new("#{self} is not a number", name)
131
+ raise Sass::ScriptError.new("#{inspect} is not a number", name)
95
132
  end
96
133
 
97
134
  # @return [String]
98
135
  # @raise [ScriptError]
99
136
  def assert_string(name = nil)
100
- raise Sass::ScriptError.new("#{self} is not a string", name)
137
+ raise Sass::ScriptError.new("#{inspect} is not a string", name)
101
138
  end
102
139
 
103
140
  # @param sass_index [Number]
@@ -131,6 +168,7 @@ require_relative 'value/function'
131
168
  require_relative 'value/fuzzy_math'
132
169
  require_relative 'value/map'
133
170
  require_relative 'value/mixin'
171
+ require_relative 'value/module'
134
172
  require_relative 'value/null'
135
173
  require_relative 'value/number'
136
174
  require_relative 'value/string'
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: 1.104.1
4
+ version: 1.105.1
5
5
  platform: riscv64-linux-gnu
6
6
  authors:
7
7
  - なつき
@@ -52,7 +52,6 @@ files:
52
52
  - lib/sass/compiler/session/path.rb
53
53
  - lib/sass/compiler/session/protofier.rb
54
54
  - lib/sass/compiler/session/stack_trace.rb
55
- - lib/sass/compiler/session/struct.rb
56
55
  - lib/sass/compiler/varint.rb
57
56
  - lib/sass/dart-sass/sass
58
57
  - lib/sass/dart-sass/src/LICENSE
@@ -107,6 +106,7 @@ files:
107
106
  - lib/sass/value/list.rb
108
107
  - lib/sass/value/map.rb
109
108
  - lib/sass/value/mixin.rb
109
+ - lib/sass/value/module.rb
110
110
  - lib/sass/value/null.rb
111
111
  - lib/sass/value/number.rb
112
112
  - lib/sass/value/number/unit.rb
@@ -116,8 +116,8 @@ licenses:
116
116
  - MIT
117
117
  metadata:
118
118
  bug_tracker_uri: https://github.com/sass-contrib/sass-embedded-host-ruby/issues
119
- documentation_uri: https://rubydoc.info/gems/sass-embedded/1.104.1
120
- source_code_uri: https://github.com/sass-contrib/sass-embedded-host-ruby/tree/v1.104.1
119
+ documentation_uri: https://rubydoc.info/gems/sass-embedded/1.105.1
120
+ source_code_uri: https://github.com/sass-contrib/sass-embedded-host-ruby/tree/v1.105.1
121
121
  funding_uri: https://github.com/sponsors/ntkme
122
122
  rubygems_mfa_required: 'true'
123
123
  rdoc_options: []
@@ -134,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
134
  - !ruby/object:Gem::Version
135
135
  version: '0'
136
136
  requirements: []
137
- rubygems_version: 4.0.20
137
+ rubygems_version: 4.0.21
138
138
  specification_version: 4
139
139
  summary: Use dart-sass with Ruby!
140
140
  test_files: []
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Sass
4
- class Compiler
5
- class Session
6
- # The {Struct} class.
7
- #
8
- # It creates {::Struct}-like objects from {::Hash}.
9
- class Struct
10
- def initialize(hash, attrs: nil, methods: nil)
11
- @hash = hash
12
- @attrs = attrs
13
- @methods = methods
14
- end
15
-
16
- def method_missing(symbol, ...)
17
- return super unless @hash.key?(symbol)
18
-
19
- if @attrs&.include?(symbol)
20
- @hash.send(:[], symbol, ...)
21
- elsif @methods&.include?(symbol)
22
- @hash[symbol].call(...)
23
- else
24
- super
25
- end
26
- end
27
-
28
- def respond_to_missing?(symbol, _include_all)
29
- @hash.key?(symbol) && (@attrs&.include?(symbol) || @methods&.include?(symbol))
30
- end
31
- end
32
-
33
- private_constant :Struct
34
- end
35
- end
36
- end