sass-embedded 1.77.5 → 1.100.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/LICENSE +18 -17
- data/README.md +1 -1
- data/exe/sass +2 -10
- data/ext/sass/Rakefile +162 -385
- data/ext/sass/file_utils.rb +75 -0
- data/ext/sass/package.json +1 -1
- data/ext/sass/platform.rb +44 -0
- data/ext/sass/sass-1.100.0.tgz +0 -0
- data/ext/sass/sass_config.rb +183 -0
- data/ext/sass/utils.rb +39 -0
- data/lib/sass/compiler/channel.rb +6 -4
- data/lib/sass/compiler/connection.rb +17 -21
- data/lib/sass/compiler/dispatcher.rb +27 -1
- data/lib/sass/compiler/host/function_registry.rb +6 -6
- data/lib/sass/compiler/host/importer_registry.rb +17 -11
- data/lib/sass/compiler/host/logger_registry.rb +17 -20
- data/lib/sass/compiler/host/protofier.rb +59 -73
- data/lib/sass/compiler/host/struct.rb +36 -0
- data/lib/sass/compiler/host.rb +2 -2
- data/lib/sass/compiler.rb +4 -3
- data/lib/sass/elf.rb +282 -172
- data/lib/sass/embedded/version.rb +1 -1
- data/lib/sass/embedded.rb +2 -41
- data/lib/sass/embedded_protocol.rb +1 -1
- data/{ext → lib}/sass/embedded_sass_pb.rb +3 -5
- data/lib/sass/exception.rb +7 -2
- data/lib/sass/fork_tracker.rb +36 -28
- data/lib/sass/gem_package_importer.rb +19 -0
- data/lib/sass/serializer.rb +5 -11
- data/lib/sass/value/argument_list.rb +0 -8
- data/lib/sass/value/color/channel.rb +79 -0
- data/lib/sass/value/color/conversions.rb +473 -0
- data/lib/sass/value/color/gamut_map_method/clip.rb +45 -0
- data/lib/sass/value/color/gamut_map_method/local_minde.rb +94 -0
- data/lib/sass/value/color/gamut_map_method.rb +45 -0
- data/lib/sass/value/color/interpolation_method.rb +51 -0
- data/lib/sass/value/color/space/a98_rgb.rb +57 -0
- data/lib/sass/value/color/space/display_p3.rb +72 -0
- data/lib/sass/value/color/space/display_p3_linear.rb +72 -0
- data/lib/sass/value/color/space/hsl.rb +65 -0
- data/lib/sass/value/color/space/hwb.rb +70 -0
- data/lib/sass/value/color/space/lab.rb +77 -0
- data/lib/sass/value/color/space/lch.rb +53 -0
- data/lib/sass/value/color/space/lms.rb +129 -0
- data/lib/sass/value/color/space/oklab.rb +66 -0
- data/lib/sass/value/color/space/oklch.rb +54 -0
- data/lib/sass/value/color/space/prophoto_rgb.rb +59 -0
- data/lib/sass/value/color/space/rec2020.rb +69 -0
- data/lib/sass/value/color/space/rgb.rb +52 -0
- data/lib/sass/value/color/space/srgb.rb +140 -0
- data/lib/sass/value/color/space/srgb_linear.rb +72 -0
- data/lib/sass/value/color/space/utils.rb +86 -0
- data/lib/sass/value/color/space/xyz_d50.rb +100 -0
- data/lib/sass/value/color/space/xyz_d65.rb +57 -0
- data/lib/sass/value/color/space.rb +201 -0
- data/lib/sass/value/color.rb +539 -162
- data/lib/sass/value/function.rb +9 -6
- data/lib/sass/value/fuzzy_math.rb +34 -30
- data/lib/sass/value/mixin.rb +5 -2
- data/lib/sass/value/null.rb +1 -1
- data/lib/sass/value/number/unit.rb +5 -4
- data/lib/sass/value/number.rb +15 -17
- data/lib/sass/value/string.rb +1 -1
- data/lib/sass/value.rb +1 -1
- metadata +42 -21
- data/ext/sass/expand-archive.ps1 +0 -1
- data/lib/sass/compiler/host/structifier.rb +0 -37
data/lib/sass/fork_tracker.rb
CHANGED
|
@@ -5,46 +5,54 @@ module Sass
|
|
|
5
5
|
#
|
|
6
6
|
# It tracks objects that need to be closed after `Process.fork`.
|
|
7
7
|
module ForkTracker
|
|
8
|
-
|
|
8
|
+
module_function
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
if Process.respond_to?(:_fork)
|
|
11
|
+
# TODO: remove next line once ruby 3.1 support is dropped
|
|
12
|
+
require 'set' unless defined?(::Set)
|
|
11
13
|
|
|
12
|
-
|
|
14
|
+
SET = Set.new.compare_by_identity
|
|
13
15
|
|
|
14
|
-
|
|
16
|
+
MUTEX = Mutex.new
|
|
17
|
+
|
|
18
|
+
private_constant :SET, :MUTEX
|
|
15
19
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
def add(object)
|
|
21
|
+
MUTEX.synchronize do
|
|
22
|
+
SET.add(object)
|
|
23
|
+
end
|
|
19
24
|
end
|
|
20
|
-
end
|
|
21
25
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
def delete(object)
|
|
27
|
+
MUTEX.synchronize do
|
|
28
|
+
SET.delete(object)
|
|
29
|
+
end
|
|
25
30
|
end
|
|
26
|
-
end
|
|
27
31
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
def each(&)
|
|
33
|
+
MUTEX.synchronize do
|
|
34
|
+
SET.to_a
|
|
35
|
+
end.each(&)
|
|
36
|
+
end
|
|
33
37
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
# The {CoreExt} module.
|
|
39
|
+
#
|
|
40
|
+
# It closes objects after `Process.fork`.
|
|
41
|
+
module CoreExt
|
|
42
|
+
def _fork
|
|
43
|
+
pid = super
|
|
44
|
+
ForkTracker.each(&:close) if pid.zero?
|
|
45
|
+
pid
|
|
46
|
+
end
|
|
42
47
|
end
|
|
43
|
-
end
|
|
44
48
|
|
|
45
|
-
|
|
49
|
+
private_constant :CoreExt
|
|
46
50
|
|
|
47
|
-
|
|
51
|
+
Process.singleton_class.prepend(CoreExt)
|
|
52
|
+
else
|
|
53
|
+
def add(object); end
|
|
54
|
+
def delete(object); end
|
|
55
|
+
end
|
|
48
56
|
end
|
|
49
57
|
|
|
50
58
|
private_constant :ForkTracker
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sass
|
|
4
|
+
# The built-in RubyGems package importer. This loads pkg: URLs from gems.
|
|
5
|
+
class GemPackageImporter
|
|
6
|
+
# @!visibility private
|
|
7
|
+
def find_file_url(url, _canonicalize_context)
|
|
8
|
+
return unless url.start_with?('pkg:')
|
|
9
|
+
|
|
10
|
+
library, _, path = url[4..].partition(/[#?]/).first.partition('/')
|
|
11
|
+
gem_dir = Gem::Dependency.new(library).to_spec.gem_dir
|
|
12
|
+
gem_dir = "/#{gem_dir}" unless gem_dir.start_with?('/')
|
|
13
|
+
|
|
14
|
+
"file://#{gem_dir.gsub(/[#%?\\]/, { '#' => '%23', '%' => '%25', '?' => '%3F', '\\' => '%5C' })}/#{path}"
|
|
15
|
+
rescue Gem::MissingSpecError
|
|
16
|
+
nil
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
data/lib/sass/serializer.rb
CHANGED
|
@@ -5,17 +5,11 @@ module Sass
|
|
|
5
5
|
module Serializer
|
|
6
6
|
module_function
|
|
7
7
|
|
|
8
|
-
CSS_ESCAPE =
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
**[*"\x01".."\x08", *"\x0A".."\x1F", "\x7F"].product(
|
|
14
|
-
[*'0'..'9', *'a'..'f', *'A'..'F', "\t", ' ', nil]
|
|
15
|
-
).to_h do |c, x|
|
|
16
|
-
["#{c}#{x}".freeze, "\\#{c.ord.to_s(16)}#{" #{x}" if x}".freeze]
|
|
17
|
-
end
|
|
18
|
-
}.freeze
|
|
8
|
+
CSS_ESCAPE = [*"\x01".."\x08", *"\x0A".."\x1F", "\x7F"]
|
|
9
|
+
.product([*'0'..'9', *'a'..'f', *'A'..'F', "\t", ' ', nil])
|
|
10
|
+
.each_with_object({ "\0" => "\uFFFD", '\\' => '\\\\', '"' => '\\"', "'" => "\\'" }) do |(c, x), h|
|
|
11
|
+
h["#{c}#{x}".freeze] = "\\#{c.ord.to_s(16)}#{" #{x}" if x}".freeze
|
|
12
|
+
end.freeze
|
|
19
13
|
|
|
20
14
|
private_constant :CSS_ESCAPE
|
|
21
15
|
|
|
@@ -15,7 +15,6 @@ module Sass
|
|
|
15
15
|
def initialize(contents = [], keywords = {}, separator = ',')
|
|
16
16
|
super(contents, separator:)
|
|
17
17
|
|
|
18
|
-
@id = 0
|
|
19
18
|
@keywords_accessed = false
|
|
20
19
|
@keywords = keywords.freeze
|
|
21
20
|
end
|
|
@@ -25,13 +24,6 @@ module Sass
|
|
|
25
24
|
@keywords_accessed = true
|
|
26
25
|
@keywords
|
|
27
26
|
end
|
|
28
|
-
|
|
29
|
-
private
|
|
30
|
-
|
|
31
|
-
def initialize_dup(orig)
|
|
32
|
-
@id = 0
|
|
33
|
-
super
|
|
34
|
-
end
|
|
35
27
|
end
|
|
36
28
|
end
|
|
37
29
|
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sass
|
|
4
|
+
module Value
|
|
5
|
+
class Color
|
|
6
|
+
# @see https://github.com/sass/dart-sass/blob/main/lib/src/value/color/channel.dart
|
|
7
|
+
class ColorChannel
|
|
8
|
+
# @return [::String]
|
|
9
|
+
attr_reader :name
|
|
10
|
+
|
|
11
|
+
# @return [::Boolean]
|
|
12
|
+
def polar_angle?
|
|
13
|
+
@polar_angle
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# @return [::String, nil]
|
|
17
|
+
attr_reader :associated_unit
|
|
18
|
+
|
|
19
|
+
# @param name [::String]
|
|
20
|
+
# @param polar_angle [::Boolean]
|
|
21
|
+
# @param associated_unit [::String]
|
|
22
|
+
def initialize(name, polar_angle:, associated_unit: nil)
|
|
23
|
+
@name = name
|
|
24
|
+
@polar_angle = polar_angle
|
|
25
|
+
@associated_unit = associated_unit
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @return [::Boolean]
|
|
29
|
+
def analogous?(other)
|
|
30
|
+
case [name, other.name]
|
|
31
|
+
in ['red' | 'x', 'red' | 'x'] |
|
|
32
|
+
['green' | 'y', 'green' | 'y'] |
|
|
33
|
+
['blue' | 'z', 'blue' | 'z'] |
|
|
34
|
+
['chroma' | 'saturation', 'chroma' | 'saturation'] |
|
|
35
|
+
['lightness', 'lightness'] |
|
|
36
|
+
['hue', 'hue']
|
|
37
|
+
true
|
|
38
|
+
else
|
|
39
|
+
false
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
private_constant :ColorChannel
|
|
45
|
+
|
|
46
|
+
# @see https://github.com/sass/dart-sass/blob/main/lib/src/value/color/channel.dart
|
|
47
|
+
class LinearChannel < ColorChannel
|
|
48
|
+
# @return [Numeric]
|
|
49
|
+
attr_reader :min, :max
|
|
50
|
+
|
|
51
|
+
# @return [::Boolean]
|
|
52
|
+
attr_reader :requires_percent, :lower_clamped, :upper_clamped
|
|
53
|
+
|
|
54
|
+
# @param name [::String]
|
|
55
|
+
# @param min [Numeric]
|
|
56
|
+
# @param max [Numeric]
|
|
57
|
+
# @param requires_percent [::Boolean]
|
|
58
|
+
# @param lower_clamped [::Boolean]
|
|
59
|
+
# @param upper_clamped [::Boolean]
|
|
60
|
+
# @param conventionally_percent [::Boolean]
|
|
61
|
+
def initialize(name, min, max, requires_percent: false, lower_clamped: false, upper_clamped: false,
|
|
62
|
+
conventionally_percent: nil)
|
|
63
|
+
super(name,
|
|
64
|
+
polar_angle: false,
|
|
65
|
+
associated_unit: if conventionally_percent.nil? ? (min.zero? && max == 100) : conventionally_percent
|
|
66
|
+
'%'
|
|
67
|
+
end)
|
|
68
|
+
@min = min
|
|
69
|
+
@max = max
|
|
70
|
+
@requires_percent = requires_percent
|
|
71
|
+
@lower_clamped = lower_clamped
|
|
72
|
+
@upper_clamped = upper_clamped
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
private_constant :LinearChannel
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|