sass-embedded 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/sass/compile_error.rb +1 -10
- data/lib/sass/compile_result.rb +1 -5
- data/lib/sass/embedded/channel.rb +2 -2
- data/lib/sass/embedded/compile_context/function_registry.rb +83 -0
- data/lib/sass/embedded/compile_context/importer_registry.rb +97 -0
- data/lib/sass/embedded/compile_context.rb +20 -173
- data/lib/sass/embedded/compiler/requirements.rb +1 -1
- data/lib/sass/embedded/compiler.rb +7 -19
- data/lib/sass/embedded/{render.rb → legacy.rb} +41 -0
- data/lib/sass/embedded/observer.rb +2 -0
- data/lib/sass/embedded/protofier.rb +329 -0
- data/lib/sass/embedded/version.rb +1 -1
- data/lib/sass/embedded/version_context.rb +2 -3
- data/lib/sass/embedded.rb +39 -52
- data/lib/sass/embedded_protocol.rb +0 -6
- data/lib/sass/logger/source_location.rb +3 -9
- data/lib/sass/logger/source_span.rb +1 -13
- data/lib/sass/logger.rb +3 -3
- data/lib/sass/script_error.rb +5 -0
- data/lib/sass/value/argument_list.rb +24 -0
- data/lib/sass/value/boolean.rb +42 -0
- data/lib/sass/value/color.rb +213 -0
- data/lib/sass/value/function.rb +35 -0
- data/lib/sass/value/fuzzy_math.rb +81 -0
- data/lib/sass/value/list.rb +60 -0
- data/lib/sass/value/map.rb +57 -0
- data/lib/sass/value/null.rb +39 -0
- data/lib/sass/value/number/unit.rb +186 -0
- data/lib/sass/value/number.rb +272 -0
- data/lib/sass/value/string.rb +43 -0
- data/lib/sass/value.rb +92 -0
- data/lib/sass.rb +47 -48
- metadata +26 -52
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sass
|
|
4
|
+
class Value
|
|
5
|
+
# Sass's number type.
|
|
6
|
+
class Number < Sass::Value
|
|
7
|
+
def initialize(value, numerator_units = [], denominator_units = []) # rubocop:disable Lint/MissingSuper
|
|
8
|
+
numerator_units = [numerator_units] if numerator_units.is_a?(::String)
|
|
9
|
+
denominator_units = [denominator_units] if denominator_units.is_a?(::String)
|
|
10
|
+
|
|
11
|
+
unless denominator_units.empty? && numerator_units.empty?
|
|
12
|
+
value = value.dup
|
|
13
|
+
numerator_units = numerator_units.dup
|
|
14
|
+
new_denominator_units = []
|
|
15
|
+
|
|
16
|
+
denominator_units.each do |denominator_unit|
|
|
17
|
+
index = numerator_units.find_index do |numerator_unit|
|
|
18
|
+
factor = Unit.conversion_factor(denominator_unit, numerator_unit)
|
|
19
|
+
if factor.nil?
|
|
20
|
+
false
|
|
21
|
+
else
|
|
22
|
+
value *= factor
|
|
23
|
+
true
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
if index.nil?
|
|
27
|
+
new_denominator_units.push(denominator_unit)
|
|
28
|
+
else
|
|
29
|
+
numerator_units.delete_at(index)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
denominator_units = new_denominator_units
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
@value = value.freeze
|
|
37
|
+
@numerator_units = numerator_units.freeze
|
|
38
|
+
@denominator_units = denominator_units.freeze
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
attr_reader :value, :numerator_units, :denominator_units
|
|
42
|
+
|
|
43
|
+
def unitless?
|
|
44
|
+
numerator_units.empty? && denominator_units.empty?
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def assert_unitless(name = nil)
|
|
48
|
+
raise error "Expected #{self} to have no units", name unless unitless?
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def units?
|
|
52
|
+
!unitless?
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def unit?(unit)
|
|
56
|
+
single_unit? && numerator_units.first == unit
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def assert_unit(unit, name = nil)
|
|
60
|
+
raise error "Expected #{self} to have no unit \"#{unit}\"", name unless unit?(unit)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def integer?
|
|
64
|
+
FuzzyMath.integer?(value)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def assert_integer(name = nil)
|
|
68
|
+
raise error "#{self} is not an integer", name unless integer?
|
|
69
|
+
|
|
70
|
+
to_i
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def to_i
|
|
74
|
+
FuzzyMath.to_i(value)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def assert_between(min, max, name = nil)
|
|
78
|
+
FuzzyMath.assert_between(value, min, max, name)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def compatible_with_unit?(unit)
|
|
82
|
+
single_unit? && !Unit.conversion_factor(numerator_units.first, unit).nil?
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def convert(new_numerator_units, new_denominator_units, name = nil)
|
|
86
|
+
Number.new(convert_value(new_numerator_units, new_denominator_units, name), new_numerator_units,
|
|
87
|
+
new_denominator_units)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def convert_value(new_numerator_units, new_denominator_units, name = nil)
|
|
91
|
+
coerce_or_convert_value(new_numerator_units, new_denominator_units,
|
|
92
|
+
coerce_unitless: false,
|
|
93
|
+
name: name)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def convert_to_match(other, name = nil, other_name = nil)
|
|
97
|
+
Number.new(convert_value_to_match(other, name, other_name), other.numerator_units, other.denominator_units)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def convert_value_to_match(other, name = nil, other_name = nil)
|
|
101
|
+
coerce_or_convert_value(other.numerator_units, other.denominator_units,
|
|
102
|
+
coerce_unitless: false,
|
|
103
|
+
name: name,
|
|
104
|
+
other: other,
|
|
105
|
+
other_name: other_name)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def coerce(new_numerator_units, new_denominator_units, name = nil)
|
|
109
|
+
Number.new(coerce_value(new_numerator_units, new_denominator_units, name), new_numerator_units,
|
|
110
|
+
new_denominator_units)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def coerce_value(new_numerator_units, new_denominator_units, name = nil)
|
|
114
|
+
coerce_or_convert_value(new_numerator_units, new_denominator_units,
|
|
115
|
+
coerce_unitless: true,
|
|
116
|
+
name: name)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def coerce_value_to_unit(unit, name = nil)
|
|
120
|
+
coerce_value([unit], [], name)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def coerce_to_match(other, name = nil, other_name = nil)
|
|
124
|
+
Number.new(coerce_value_to_match(other, name, other_name), other.numerator_units, other.denominator_units)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def coerce_value_to_match(other, name = nil, other_name = nil)
|
|
128
|
+
coerce_or_convert_value(other.numerator_units, other.denominator_units,
|
|
129
|
+
coerce_unitless: true,
|
|
130
|
+
name: name,
|
|
131
|
+
other: other,
|
|
132
|
+
other_name: other_name)
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def assert_number(_name = nil)
|
|
136
|
+
self
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def ==(other)
|
|
140
|
+
return false unless other.is_a? Sass::Value::Number
|
|
141
|
+
|
|
142
|
+
return false if numerator_units.length != other.numerator_units.length ||
|
|
143
|
+
denominator_units.length != other.denominator_units.length
|
|
144
|
+
|
|
145
|
+
return FuzzyMath.equals(value, other.value) if unitless?
|
|
146
|
+
|
|
147
|
+
if Unit.canonicalize_units(numerator_units) != Unit.canonicalize_units(other.numerator_units) &&
|
|
148
|
+
Unit.canonicalize_units(denominator_units) != Unit.canonicalize_units(other.denominator_units)
|
|
149
|
+
return false
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
FuzzyMath.equals(
|
|
153
|
+
(value *
|
|
154
|
+
Unit.canonical_multiplier(numerator_units) /
|
|
155
|
+
Unit.canonical_multiplier(denominator_units)),
|
|
156
|
+
(other.value *
|
|
157
|
+
Unit.canonical_multiplier(other.numerator_units) /
|
|
158
|
+
Unit.canonical_multiplier(other.denominator_units))
|
|
159
|
+
)
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
def hash
|
|
163
|
+
@hash ||= if unitless?
|
|
164
|
+
FuzzyMath.hash(value)
|
|
165
|
+
elsif single_unit?
|
|
166
|
+
FuzzyMath.hash(
|
|
167
|
+
value * Unit.canonical_multiplier_for_unit(numerator_units.first)
|
|
168
|
+
)
|
|
169
|
+
else
|
|
170
|
+
FuzzyMath.hash(
|
|
171
|
+
value * Unit.canonical_multiplier(numerator_units) / Unit.canonical_multiplier(denominator_units)
|
|
172
|
+
)
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
protected
|
|
177
|
+
|
|
178
|
+
def single_unit?
|
|
179
|
+
numerator_units.length == 1 && denominator_units.empty?
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def coerce_or_convert_value(new_numerator_units, new_denominator_units,
|
|
183
|
+
coerce_unitless:,
|
|
184
|
+
name: nil,
|
|
185
|
+
other: nil,
|
|
186
|
+
other_name: nil)
|
|
187
|
+
if other && (other.numerator_units != new_denominator_units && other.denominator_units != new_denominator_units)
|
|
188
|
+
raise error "Expect #{other} to have units #{unit_string(new_numerator_units, new_denominator_units)}"
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
return value if numerator_units == new_numerator_units && denominator_units == new_denominator_units
|
|
192
|
+
|
|
193
|
+
return value if numerator_units == new_numerator_units && denominator_units == new_denominator_units
|
|
194
|
+
|
|
195
|
+
other_unitless = new_numerator_units.empty? && new_denominator_units.empty?
|
|
196
|
+
|
|
197
|
+
return value if coerce_unitless && (unitless? || other_unitless)
|
|
198
|
+
|
|
199
|
+
compatibility_error = lambda {
|
|
200
|
+
unless other.nil?
|
|
201
|
+
message = +"#{self} and"
|
|
202
|
+
message << " $#{other_name}:" unless other_name.nil?
|
|
203
|
+
message << " #{other} have incompatible units"
|
|
204
|
+
message << " (one has units and the other doesn't)" if unitless? || other_unitless
|
|
205
|
+
return error message, name
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
return error "Expected #{self} to have no units", name unless other_unitless
|
|
209
|
+
|
|
210
|
+
if new_numerator_units.length == 1 && new_denominator_units.empty?
|
|
211
|
+
type = Unit::TYPES_BY_UNIT[new_numerator_units.first]
|
|
212
|
+
return error "Expected #{self} to have a #{type} unit (#{Unit::UNITS_BY_TYPE[type].join(', ')})", name
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
unit_length = new_numerator_units.length + new_denominator_units.length
|
|
216
|
+
units = unit_string(new_numerator_units, new_denominator_units)
|
|
217
|
+
error "Expected #{self} to have unit#{unit_length > 1 ? 's' : ''} #{units}", name
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
result = value
|
|
221
|
+
|
|
222
|
+
old_numerator_units = numerator_units.dup
|
|
223
|
+
new_numerator_units.each do |new_numerator_unit|
|
|
224
|
+
index = old_numerator_units.find_index do |old_numerator_unit|
|
|
225
|
+
factor = Unit.conversion_factor(new_numerator_unit, old_numerator_unit)
|
|
226
|
+
if factor.nil?
|
|
227
|
+
false
|
|
228
|
+
else
|
|
229
|
+
result *= factor
|
|
230
|
+
true
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
raise compatibility_error.call if index.nil?
|
|
234
|
+
|
|
235
|
+
old_numerator_units.delete_at(index)
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
old_denominator_units = denominator_units.dup
|
|
239
|
+
new_denominator_units.each do |new_denominator_unit|
|
|
240
|
+
index = old_denominator_units.find_index do |old_denominator_unit|
|
|
241
|
+
factor = Unit.conversion_factor(new_denominator_unit, old_denominator_unit)
|
|
242
|
+
if factor.nil?
|
|
243
|
+
false
|
|
244
|
+
else
|
|
245
|
+
result /= factor
|
|
246
|
+
true
|
|
247
|
+
end
|
|
248
|
+
end
|
|
249
|
+
raise compatibility_error.call if index.nil?
|
|
250
|
+
|
|
251
|
+
old_denominator_units.delete_at(index)
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
raise compatibility_error.call unless old_numerator_units.empty? && old_denominator_units.empty?
|
|
255
|
+
|
|
256
|
+
result
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
def unit_string(numerator_units, denominator_units)
|
|
260
|
+
if numerator_units.empty?
|
|
261
|
+
return 'no units' if denominator_units.empty?
|
|
262
|
+
|
|
263
|
+
return denominator_units.length == 1 ? "#{denominator_units.first}^-1" : "(#{denominator_units.join('*')})^-1"
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
return numerator_units.join('*') if denominator_units.empty?
|
|
267
|
+
|
|
268
|
+
"#{numerator_units.join('*')}/#{denominator_units.join('*')}"
|
|
269
|
+
end
|
|
270
|
+
end
|
|
271
|
+
end
|
|
272
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sass
|
|
4
|
+
class Value
|
|
5
|
+
# Sass's string type.
|
|
6
|
+
class String < Sass::Value
|
|
7
|
+
def initialize(text = '', quoted: true) # rubocop:disable Lint/MissingSuper
|
|
8
|
+
@text = text.freeze
|
|
9
|
+
@quoted = quoted
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
attr_reader :text
|
|
13
|
+
|
|
14
|
+
def quoted?
|
|
15
|
+
@quoted
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def sass_index_to_string_index(sass_index, name = nil)
|
|
19
|
+
index = sass_index.assert_number(name).assert_integer(name)
|
|
20
|
+
raise error('String index may not be 0', name) if index.zero?
|
|
21
|
+
|
|
22
|
+
if index.abs > text.length
|
|
23
|
+
raise error("Invalid index #{sass_index} for a string with #{text.length} characters",
|
|
24
|
+
name)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
index.negative? ? text.length + index : index - 1
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def ==(other)
|
|
31
|
+
other.is_a?(Sass::Value::String) && other.text == text
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def hash
|
|
35
|
+
@hash ||= text.hash
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def assert_string(_name = nil)
|
|
39
|
+
self
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
data/lib/sass/value.rb
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sass
|
|
4
|
+
# The abstract base class of Sass's value types.
|
|
5
|
+
class Value
|
|
6
|
+
def to_a
|
|
7
|
+
[self]
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def to_bool
|
|
11
|
+
true
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def to_map
|
|
15
|
+
nil
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def to_nil
|
|
19
|
+
self
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def separator
|
|
23
|
+
nil
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def bracketed?
|
|
27
|
+
false
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def sass_index_to_list_index(sass_index, name = nil)
|
|
31
|
+
index = sass_index.assert_number(name).assert_integer(name)
|
|
32
|
+
raise error('List index may not be 0', name) if index.zero?
|
|
33
|
+
|
|
34
|
+
if index.abs > to_a_length
|
|
35
|
+
raise error("Invalid index #{sass_index} for a list with #{to_a_length} elements",
|
|
36
|
+
name)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
index.negative? ? to_a_length + index : index - 1
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def at(index)
|
|
43
|
+
index < 1 && index >= -1 ? self : nil
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def [](index)
|
|
47
|
+
at(index)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def assert_boolean(name = nil)
|
|
51
|
+
raise error("#{self} is not a boolean", name)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def assert_calculation(name = nil)
|
|
55
|
+
raise error("#{self} is not a calculation", name)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def assert_color(name = nil)
|
|
59
|
+
raise error("#{self} is not a color", name)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def assert_function(name = nil)
|
|
63
|
+
raise error("#{self} is not a function", name)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def assert_map(name = nil)
|
|
67
|
+
raise error("#{self} is not a map", name)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def assert_number(name = nil)
|
|
71
|
+
raise error("#{self} is not a number", name)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def assert_string(name = nil)
|
|
75
|
+
raise error("#{self} is not a string", name)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def eql?(other)
|
|
79
|
+
self == other
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
private
|
|
83
|
+
|
|
84
|
+
def to_a_length
|
|
85
|
+
1
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def error(message, name = nil)
|
|
89
|
+
Sass::ScriptError.new name.nil? ? message : "$#{name}: #{message}"
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
data/lib/sass.rb
CHANGED
|
@@ -1,83 +1,82 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require_relative 'sass/compile_error'
|
|
4
|
+
require_relative 'sass/compile_result'
|
|
3
5
|
require_relative 'sass/embedded'
|
|
6
|
+
require_relative 'sass/embedded/channel'
|
|
7
|
+
require_relative 'sass/embedded/observer'
|
|
8
|
+
require_relative 'sass/embedded/compile_context'
|
|
9
|
+
require_relative 'sass/embedded/compile_context/function_registry'
|
|
10
|
+
require_relative 'sass/embedded/compile_context/importer_registry'
|
|
11
|
+
require_relative 'sass/embedded/compiler'
|
|
12
|
+
require_relative 'sass/embedded/compiler/path'
|
|
13
|
+
require_relative 'sass/embedded_protocol'
|
|
14
|
+
require_relative 'sass/embedded/legacy'
|
|
15
|
+
require_relative 'sass/embedded/protocol_error'
|
|
16
|
+
require_relative 'sass/embedded/protofier'
|
|
17
|
+
require_relative 'sass/embedded/version'
|
|
18
|
+
require_relative 'sass/embedded/version_context'
|
|
19
|
+
require_relative 'sass/logger'
|
|
20
|
+
require_relative 'sass/logger/source_location'
|
|
21
|
+
require_relative 'sass/logger/source_span'
|
|
22
|
+
require_relative 'sass/script_error'
|
|
23
|
+
require_relative 'sass/value'
|
|
24
|
+
require_relative 'sass/value/list'
|
|
25
|
+
require_relative 'sass/value/argument_list'
|
|
26
|
+
require_relative 'sass/value/boolean'
|
|
27
|
+
require_relative 'sass/value/color'
|
|
28
|
+
require_relative 'sass/value/function'
|
|
29
|
+
require_relative 'sass/value/fuzzy_math'
|
|
30
|
+
require_relative 'sass/value/map'
|
|
31
|
+
require_relative 'sass/value/null'
|
|
32
|
+
require_relative 'sass/value/number'
|
|
33
|
+
require_relative 'sass/value/number/unit'
|
|
34
|
+
require_relative 'sass/value/string'
|
|
4
35
|
|
|
5
|
-
# The Sass module.
|
|
6
|
-
#
|
|
36
|
+
# The Sass module.
|
|
37
|
+
#
|
|
38
|
+
# This communicates with Embedded Dart Sass using the Embedded Sass protocol.
|
|
7
39
|
module Sass
|
|
8
40
|
class << self
|
|
9
|
-
# The global {.compile} method.
|
|
10
|
-
# and calls {Embedded#compile}.
|
|
41
|
+
# The global {.compile} method.
|
|
11
42
|
#
|
|
12
|
-
#
|
|
43
|
+
# This instantiates a global {Embedded} instance and calls {Embedded#compile}.
|
|
44
|
+
#
|
|
45
|
+
# See {Embedded#compile} for keyword arguments.
|
|
13
46
|
#
|
|
14
47
|
# @example
|
|
15
48
|
# Sass.compile('style.scss')
|
|
16
49
|
# @return [CompileResult]
|
|
17
50
|
# @raise [CompileError]
|
|
18
|
-
# @raise [ProtocolError]
|
|
51
|
+
# @raise [Embedded::ProtocolError]
|
|
19
52
|
def compile(path, **kwargs)
|
|
20
53
|
instance.compile(path, **kwargs)
|
|
21
54
|
end
|
|
22
55
|
|
|
23
|
-
# The global {.compile_string} method.
|
|
24
|
-
#
|
|
56
|
+
# The global {.compile_string} method.
|
|
57
|
+
#
|
|
58
|
+
# This instantiates a global {Embedded} instance and calls {Embedded#compile_string}.
|
|
25
59
|
#
|
|
26
|
-
# See {Embedded#compile_string} for
|
|
60
|
+
# See {Embedded#compile_string} for keyword arguments.
|
|
27
61
|
#
|
|
28
62
|
# @example
|
|
29
63
|
# Sass.compile_string('h1 { font-size: 40px; }')
|
|
30
64
|
# @return [CompileResult]
|
|
31
65
|
# @raise [CompileError]
|
|
32
|
-
# @raise [ProtocolError]
|
|
66
|
+
# @raise [Embedded::ProtocolError]
|
|
33
67
|
def compile_string(source, **kwargs)
|
|
34
68
|
instance.compile_string(source, **kwargs)
|
|
35
69
|
end
|
|
36
70
|
|
|
37
|
-
#
|
|
38
|
-
# The global {.include_paths} for Sass files. This is meant for plugins and
|
|
39
|
-
# libraries to register the paths to their Sass stylesheets to that they may
|
|
40
|
-
# be included via `@import` or `@use`. This include path is used by every
|
|
41
|
-
# instance of {Sass::Embedded}. They are lower-precedence than any include
|
|
42
|
-
# paths passed in via the `include_paths` option.
|
|
43
|
-
#
|
|
44
|
-
# If the `SASS_PATH` environment variable is set,
|
|
45
|
-
# the initial value of `include_paths` will be initialized based on that.
|
|
46
|
-
# The variable should be a colon-separated list of path names
|
|
47
|
-
# (semicolon-separated on Windows).
|
|
71
|
+
# The global {.info} method.
|
|
48
72
|
#
|
|
49
|
-
#
|
|
50
|
-
# Sass.include_paths << File.dirname(__FILE__) + '/sass'
|
|
51
|
-
# @return [Array]
|
|
52
|
-
def include_paths
|
|
53
|
-
Embedded.include_paths
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# The global {.info} method. This instantiates a global {Embedded} instance
|
|
57
|
-
# and calls {Embedded#info}.
|
|
73
|
+
# This instantiates a global {Embedded} instance and calls {Embedded#info}.
|
|
58
74
|
#
|
|
59
|
-
# @raise [ProtocolError]
|
|
75
|
+
# @raise [Embedded::ProtocolError]
|
|
60
76
|
def info
|
|
61
77
|
instance.info
|
|
62
78
|
end
|
|
63
79
|
|
|
64
|
-
# @deprecated
|
|
65
|
-
# The global {.render} method. This instantiates a global {Embedded} instance
|
|
66
|
-
# and calls {Embedded#render}.
|
|
67
|
-
#
|
|
68
|
-
# See {Embedded#render} for supported options.
|
|
69
|
-
#
|
|
70
|
-
# @example
|
|
71
|
-
# Sass.render(data: 'h1 { font-size: 40px; }')
|
|
72
|
-
# @example
|
|
73
|
-
# Sass.render(file: 'style.css')
|
|
74
|
-
# @return [Result]
|
|
75
|
-
# @raise [ProtocolError]
|
|
76
|
-
# @raise [RenderError]
|
|
77
|
-
def render(**kwargs)
|
|
78
|
-
instance.render(**kwargs)
|
|
79
|
-
end
|
|
80
|
-
|
|
81
80
|
private
|
|
82
81
|
|
|
83
82
|
def instance
|
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: 0.
|
|
4
|
+
version: 0.16.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- なつき
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-02-
|
|
11
|
+
date: 2022-02-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: google-protobuf
|
|
@@ -24,62 +24,34 @@ dependencies:
|
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: 3.19.0
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: minitest
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - "~>"
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: 5.15.0
|
|
34
|
-
type: :development
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - "~>"
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: 5.15.0
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: minitest-around
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - "~>"
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: 0.5.0
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - "~>"
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: 0.5.0
|
|
55
27
|
- !ruby/object:Gem::Dependency
|
|
56
28
|
name: rake
|
|
57
29
|
requirement: !ruby/object:Gem::Requirement
|
|
58
30
|
requirements:
|
|
59
31
|
- - "~>"
|
|
60
32
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: 13.0.
|
|
33
|
+
version: 13.0.0
|
|
62
34
|
type: :development
|
|
63
35
|
prerelease: false
|
|
64
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
37
|
requirements:
|
|
66
38
|
- - "~>"
|
|
67
39
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: 13.0.
|
|
40
|
+
version: 13.0.0
|
|
69
41
|
- !ruby/object:Gem::Dependency
|
|
70
42
|
name: rspec
|
|
71
43
|
requirement: !ruby/object:Gem::Requirement
|
|
72
44
|
requirements:
|
|
73
45
|
- - "~>"
|
|
74
46
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 3.
|
|
47
|
+
version: 3.11.0
|
|
76
48
|
type: :development
|
|
77
49
|
prerelease: false
|
|
78
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
51
|
requirements:
|
|
80
52
|
- - "~>"
|
|
81
53
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 3.
|
|
54
|
+
version: 3.11.0
|
|
83
55
|
- !ruby/object:Gem::Dependency
|
|
84
56
|
name: rubocop
|
|
85
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -94,20 +66,6 @@ dependencies:
|
|
|
94
66
|
- - "~>"
|
|
95
67
|
- !ruby/object:Gem::Version
|
|
96
68
|
version: 1.25.0
|
|
97
|
-
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: rubocop-minitest
|
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
|
100
|
-
requirements:
|
|
101
|
-
- - "~>"
|
|
102
|
-
- !ruby/object:Gem::Version
|
|
103
|
-
version: 0.17.0
|
|
104
|
-
type: :development
|
|
105
|
-
prerelease: false
|
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
-
requirements:
|
|
108
|
-
- - "~>"
|
|
109
|
-
- !ruby/object:Gem::Version
|
|
110
|
-
version: 0.17.0
|
|
111
69
|
- !ruby/object:Gem::Dependency
|
|
112
70
|
name: rubocop-performance
|
|
113
71
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -171,24 +129,40 @@ files:
|
|
|
171
129
|
- lib/sass/embedded.rb
|
|
172
130
|
- lib/sass/embedded/channel.rb
|
|
173
131
|
- lib/sass/embedded/compile_context.rb
|
|
132
|
+
- lib/sass/embedded/compile_context/function_registry.rb
|
|
133
|
+
- lib/sass/embedded/compile_context/importer_registry.rb
|
|
174
134
|
- lib/sass/embedded/compiler.rb
|
|
175
135
|
- lib/sass/embedded/compiler/path.rb
|
|
176
136
|
- lib/sass/embedded/compiler/requirements.rb
|
|
137
|
+
- lib/sass/embedded/legacy.rb
|
|
177
138
|
- lib/sass/embedded/observer.rb
|
|
178
139
|
- lib/sass/embedded/protocol_error.rb
|
|
179
|
-
- lib/sass/embedded/
|
|
140
|
+
- lib/sass/embedded/protofier.rb
|
|
180
141
|
- lib/sass/embedded/version.rb
|
|
181
142
|
- lib/sass/embedded/version_context.rb
|
|
182
143
|
- lib/sass/embedded_protocol.rb
|
|
183
144
|
- lib/sass/logger.rb
|
|
184
145
|
- lib/sass/logger/source_location.rb
|
|
185
146
|
- lib/sass/logger/source_span.rb
|
|
147
|
+
- lib/sass/script_error.rb
|
|
148
|
+
- lib/sass/value.rb
|
|
149
|
+
- lib/sass/value/argument_list.rb
|
|
150
|
+
- lib/sass/value/boolean.rb
|
|
151
|
+
- lib/sass/value/color.rb
|
|
152
|
+
- lib/sass/value/function.rb
|
|
153
|
+
- lib/sass/value/fuzzy_math.rb
|
|
154
|
+
- lib/sass/value/list.rb
|
|
155
|
+
- lib/sass/value/map.rb
|
|
156
|
+
- lib/sass/value/null.rb
|
|
157
|
+
- lib/sass/value/number.rb
|
|
158
|
+
- lib/sass/value/number/unit.rb
|
|
159
|
+
- lib/sass/value/string.rb
|
|
186
160
|
homepage: https://github.com/ntkme/sass-embedded-host-ruby
|
|
187
161
|
licenses:
|
|
188
162
|
- MIT
|
|
189
163
|
metadata:
|
|
190
|
-
documentation_uri: https://www.rubydoc.info/gems/sass-embedded/0.
|
|
191
|
-
source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v0.
|
|
164
|
+
documentation_uri: https://www.rubydoc.info/gems/sass-embedded/0.16.0
|
|
165
|
+
source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v0.16.0
|
|
192
166
|
funding_uri: https://github.com/sponsors/ntkme
|
|
193
167
|
post_install_message:
|
|
194
168
|
rdoc_options: []
|
|
@@ -205,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
205
179
|
- !ruby/object:Gem::Version
|
|
206
180
|
version: '0'
|
|
207
181
|
requirements: []
|
|
208
|
-
rubygems_version: 3.3.
|
|
182
|
+
rubygems_version: 3.3.7
|
|
209
183
|
signing_key:
|
|
210
184
|
specification_version: 4
|
|
211
185
|
summary: Use dart-sass with Ruby!
|