sass-embedded 1.69.7-x86-mingw32 → 1.71.0-x86-mingw32
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/ext/sass/dart-sass/src/LICENSE +33 -0
- data/ext/sass/dart-sass/src/dart.exe +0 -0
- data/ext/sass/dart-sass/src/sass.snapshot +0 -0
- data/ext/sass/embedded_sass_pb.rb +2 -1
- data/lib/sass/canonicalize_context.rb +3 -3
- data/lib/sass/compiler/{dispatcher_manager.rb → channel.rb} +30 -6
- data/lib/sass/compiler/dispatcher.rb +1 -29
- data/lib/sass/compiler/host/function_registry.rb +23 -23
- data/lib/sass/compiler/host/importer_registry.rb +48 -27
- data/lib/sass/compiler/host/logger_registry.rb +4 -2
- data/lib/sass/compiler/host/protofier.rb +358 -56
- data/lib/sass/compiler/host.rb +50 -20
- data/lib/sass/compiler.rb +15 -12
- data/lib/sass/embedded/version.rb +1 -1
- data/lib/sass/embedded.rb +1 -2
- data/lib/sass/exception.rb +7 -3
- data/lib/sass/logger/source_location.rb +4 -4
- data/lib/sass/logger/source_span.rb +6 -6
- data/lib/sass/node_package_importer.rb +15 -0
- data/lib/sass/serializer.rb +19 -24
- data/lib/sass/value/argument_list.rb +3 -3
- data/lib/sass/value/list.rb +5 -5
- data/lib/sass/value/number.rb +2 -2
- metadata +9 -8
- data/lib/sass/compiler/host/value_protofier.rb +0 -390
data/lib/sass/embedded.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'compiler'
|
4
|
-
require_relative 'embedded/version'
|
5
4
|
|
6
5
|
# The Sass module.
|
7
6
|
#
|
@@ -56,7 +55,7 @@ module Sass
|
|
56
55
|
|
57
56
|
compiler = Class.new(Compiler) do
|
58
57
|
def initialize
|
59
|
-
@
|
58
|
+
@channel = Compiler.const_get(:Channel).new(Class.new(Compiler.const_get(:Dispatcher)) do
|
60
59
|
def initialize
|
61
60
|
super
|
62
61
|
|
data/lib/sass/exception.rb
CHANGED
@@ -28,7 +28,7 @@ module Sass
|
|
28
28
|
|
29
29
|
highlight = Exception.respond_to?(:to_tty?) && Exception.to_tty? if highlight.nil?
|
30
30
|
if highlight
|
31
|
-
|
31
|
+
@full_message.dup
|
32
32
|
else
|
33
33
|
@full_message.gsub(/\e\[[0-9;]*m/, '')
|
34
34
|
end
|
@@ -38,7 +38,7 @@ module Sass
|
|
38
38
|
def to_css
|
39
39
|
content = full_message(highlight: false, order: :top)
|
40
40
|
|
41
|
-
<<~CSS
|
41
|
+
<<~CSS.freeze
|
42
42
|
/* #{content.gsub('*/', "*\u2060/").gsub("\r\n", "\n").split("\n").join("\n * ")} */
|
43
43
|
|
44
44
|
body::before {
|
@@ -50,7 +50,11 @@ module Sass
|
|
50
50
|
border-bottom-style: solid;
|
51
51
|
font-family: monospace, monospace;
|
52
52
|
white-space: pre;
|
53
|
-
content: #{Serializer.serialize_quoted_string(content
|
53
|
+
content: #{Serializer.serialize_quoted_string(content).gsub(/[^[:ascii:]][\h\t ]?/) do |match|
|
54
|
+
replacement = "\\#{match.ord.to_s(16)}"
|
55
|
+
replacement << " #{match[1]}" if match.length > 1
|
56
|
+
replacement
|
57
|
+
end};
|
54
58
|
}
|
55
59
|
CSS
|
56
60
|
end
|
@@ -12,10 +12,10 @@ module Sass
|
|
12
12
|
attr_reader :offset, :line, :column
|
13
13
|
|
14
14
|
# @!visibility private
|
15
|
-
def initialize(
|
16
|
-
@offset = offset
|
17
|
-
@line = line
|
18
|
-
@column = column
|
15
|
+
def initialize(source_location)
|
16
|
+
@offset = source_location.offset
|
17
|
+
@line = source_location.line
|
18
|
+
@column = source_location.column
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
@@ -16,12 +16,12 @@ module Sass
|
|
16
16
|
attr_reader :url, :context
|
17
17
|
|
18
18
|
# @!visibility private
|
19
|
-
def initialize(
|
20
|
-
@start = start
|
21
|
-
@end =
|
22
|
-
@text = text
|
23
|
-
@url = url
|
24
|
-
@context = context
|
19
|
+
def initialize(source_span)
|
20
|
+
@start = source_span.start.nil? ? nil : Logger::SourceLocation.new(source_span.start)
|
21
|
+
@end = source_span.end.nil? ? nil : Logger::SourceLocation.new(source_span.end)
|
22
|
+
@text = source_span.text
|
23
|
+
@url = source_span.url == '' ? nil : source_span.url
|
24
|
+
@context = source_span.context == '' ? nil : source_span.context
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Sass
|
4
|
+
# The built-in Node.js package importer. This loads pkg: URLs from node_modules
|
5
|
+
# according to the standard Node.js resolution algorithm.
|
6
|
+
#
|
7
|
+
# @see https://sass-lang.com/documentation/js-api/classes/nodepackageimporter/
|
8
|
+
class NodePackageImporter
|
9
|
+
def initialize(entry_point_directory)
|
10
|
+
raise ArgumentError, 'entry_point_directory must be set' if entry_point_directory.nil?
|
11
|
+
|
12
|
+
@entry_point_directory = File.absolute_path(entry_point_directory)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/sass/serializer.rb
CHANGED
@@ -5,31 +5,26 @@ module Sass
|
|
5
5
|
module Serializer
|
6
6
|
module_function
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
# Otherwise, the character itself.
|
28
|
-
buffer << codepoint
|
29
|
-
end
|
8
|
+
CSS_ESCAPE = {
|
9
|
+
"\0" => "\uFFFD",
|
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
|
19
|
+
|
20
|
+
private_constant :CSS_ESCAPE
|
21
|
+
|
22
|
+
def serialize_quoted_string(string)
|
23
|
+
if !string.include?('"') || string.include?("'")
|
24
|
+
%("#{string.gsub(/[\0\\"]|[\x01-\x08\x0A-\x1F\x7F][\h\t ]?/, CSS_ESCAPE)}")
|
25
|
+
else
|
26
|
+
%('#{string.gsub(/[\0\\']|[\x01-\x08\x0A-\x1F\x7F][\h\t ]?/, CSS_ESCAPE)}')
|
30
27
|
end
|
31
|
-
buffer << 0x22
|
32
|
-
buffer.pack('U*')
|
33
28
|
end
|
34
29
|
|
35
30
|
def serialize_unquoted_string(string)
|
@@ -10,17 +10,17 @@ module Sass
|
|
10
10
|
# @see https://sass-lang.com/documentation/js-api/classes/sassargumentlist/
|
11
11
|
class ArgumentList < List
|
12
12
|
# @param contents [Array<Value>]
|
13
|
-
# @param keywords [Hash
|
13
|
+
# @param keywords [Hash<Symbol, Value>]
|
14
14
|
# @param separator [::String]
|
15
15
|
def initialize(contents = [], keywords = {}, separator = ',')
|
16
16
|
super(contents, separator:)
|
17
17
|
|
18
18
|
@id = 0
|
19
19
|
@keywords_accessed = false
|
20
|
-
@keywords = keywords.
|
20
|
+
@keywords = keywords.freeze
|
21
21
|
end
|
22
22
|
|
23
|
-
# @return [Hash
|
23
|
+
# @return [Hash<Symbol, Value>]
|
24
24
|
def keywords
|
25
25
|
@keywords_accessed = true
|
26
26
|
@keywords
|
data/lib/sass/value/list.rb
CHANGED
@@ -21,9 +21,6 @@ module Sass
|
|
21
21
|
@bracketed = bracketed.freeze
|
22
22
|
end
|
23
23
|
|
24
|
-
# @return [Array<Value>]
|
25
|
-
attr_reader :contents
|
26
|
-
|
27
24
|
# @return [::String, nil]
|
28
25
|
attr_reader :separator
|
29
26
|
|
@@ -35,7 +32,7 @@ module Sass
|
|
35
32
|
# @return [::Boolean]
|
36
33
|
def ==(other)
|
37
34
|
(other.is_a?(Sass::Value::List) &&
|
38
|
-
other.
|
35
|
+
other.to_a == to_a &&
|
39
36
|
other.separator == separator &&
|
40
37
|
other.bracketed? == bracketed?) ||
|
41
38
|
(to_a.empty? && other.is_a?(Sass::Value::Map) && other.to_a.empty?)
|
@@ -56,7 +53,10 @@ module Sass
|
|
56
53
|
@hash ||= contents.hash
|
57
54
|
end
|
58
55
|
|
59
|
-
|
56
|
+
# @return [Array<Value>]
|
57
|
+
def to_a
|
58
|
+
@contents
|
59
|
+
end
|
60
60
|
|
61
61
|
# @return [Map, nil]
|
62
62
|
def to_map
|
data/lib/sass/value/number.rb
CHANGED
@@ -63,8 +63,8 @@ module Sass
|
|
63
63
|
end
|
64
64
|
|
65
65
|
@value = value.freeze
|
66
|
-
@numerator_units = numerator_units.freeze
|
67
|
-
@denominator_units = denominator_units.freeze
|
66
|
+
@numerator_units = numerator_units.each(&:freeze).freeze
|
67
|
+
@denominator_units = denominator_units.each(&:freeze).freeze
|
68
68
|
end
|
69
69
|
|
70
70
|
# @return [Numeric]
|
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.
|
4
|
+
version: 1.71.0
|
5
5
|
platform: x86-mingw32
|
6
6
|
authors:
|
7
7
|
- なつき
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-protobuf
|
@@ -48,16 +48,15 @@ files:
|
|
48
48
|
- lib/sass/canonicalize_context.rb
|
49
49
|
- lib/sass/compile_result.rb
|
50
50
|
- lib/sass/compiler.rb
|
51
|
+
- lib/sass/compiler/channel.rb
|
51
52
|
- lib/sass/compiler/connection.rb
|
52
53
|
- lib/sass/compiler/dispatcher.rb
|
53
|
-
- lib/sass/compiler/dispatcher_manager.rb
|
54
54
|
- lib/sass/compiler/host.rb
|
55
55
|
- lib/sass/compiler/host/function_registry.rb
|
56
56
|
- lib/sass/compiler/host/importer_registry.rb
|
57
57
|
- lib/sass/compiler/host/logger_registry.rb
|
58
58
|
- lib/sass/compiler/host/protofier.rb
|
59
59
|
- lib/sass/compiler/host/structifier.rb
|
60
|
-
- lib/sass/compiler/host/value_protofier.rb
|
61
60
|
- lib/sass/compiler/varint.rb
|
62
61
|
- lib/sass/elf.rb
|
63
62
|
- lib/sass/embedded.rb
|
@@ -68,6 +67,7 @@ files:
|
|
68
67
|
- lib/sass/logger/silent.rb
|
69
68
|
- lib/sass/logger/source_location.rb
|
70
69
|
- lib/sass/logger/source_span.rb
|
70
|
+
- lib/sass/node_package_importer.rb
|
71
71
|
- lib/sass/serializer.rb
|
72
72
|
- lib/sass/value.rb
|
73
73
|
- lib/sass/value/argument_list.rb
|
@@ -87,8 +87,9 @@ homepage: https://github.com/sass-contrib/sass-embedded-host-ruby
|
|
87
87
|
licenses:
|
88
88
|
- MIT
|
89
89
|
metadata:
|
90
|
-
|
91
|
-
|
90
|
+
bug_tracker_uri: https://github.com/sass-contrib/sass-embedded-host-ruby/issues
|
91
|
+
documentation_uri: https://rubydoc.info/gems/sass-embedded/1.71.0
|
92
|
+
source_code_uri: https://github.com/sass-contrib/sass-embedded-host-ruby/tree/v1.71.0
|
92
93
|
funding_uri: https://github.com/sponsors/ntkme
|
93
94
|
rubygems_mfa_required: 'true'
|
94
95
|
post_install_message:
|
@@ -99,14 +100,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
99
100
|
requirements:
|
100
101
|
- - ">="
|
101
102
|
- !ruby/object:Gem::Version
|
102
|
-
version: 3.1.
|
103
|
+
version: 3.1.0
|
103
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
105
|
requirements:
|
105
106
|
- - ">="
|
106
107
|
- !ruby/object:Gem::Version
|
107
108
|
version: '0'
|
108
109
|
requirements: []
|
109
|
-
rubygems_version: 3.5.
|
110
|
+
rubygems_version: 3.5.6
|
110
111
|
signing_key:
|
111
112
|
specification_version: 4
|
112
113
|
summary: Use dart-sass with Ruby!
|
@@ -1,390 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Sass
|
4
|
-
class Compiler
|
5
|
-
class Host
|
6
|
-
# The {ValueProtofier} class.
|
7
|
-
#
|
8
|
-
# It converts Pure Ruby types and Protobuf Ruby types.
|
9
|
-
class ValueProtofier
|
10
|
-
def initialize(function_registry)
|
11
|
-
@function_registry = function_registry
|
12
|
-
end
|
13
|
-
|
14
|
-
def to_proto(obj)
|
15
|
-
case obj
|
16
|
-
when Sass::Value::String
|
17
|
-
EmbeddedProtocol::Value.new(
|
18
|
-
string: EmbeddedProtocol::Value::String.new(
|
19
|
-
text: obj.text.to_str,
|
20
|
-
quoted: obj.quoted?
|
21
|
-
)
|
22
|
-
)
|
23
|
-
when Sass::Value::Number
|
24
|
-
EmbeddedProtocol::Value.new(
|
25
|
-
number: Number.to_proto(obj)
|
26
|
-
)
|
27
|
-
when Sass::Value::Color
|
28
|
-
if obj.instance_eval { !defined?(@hue) }
|
29
|
-
EmbeddedProtocol::Value.new(
|
30
|
-
rgb_color: EmbeddedProtocol::Value::RgbColor.new(
|
31
|
-
red: obj.red,
|
32
|
-
green: obj.green,
|
33
|
-
blue: obj.blue,
|
34
|
-
alpha: obj.alpha.to_f
|
35
|
-
)
|
36
|
-
)
|
37
|
-
elsif obj.instance_eval { !defined?(@saturation) }
|
38
|
-
EmbeddedProtocol::Value.new(
|
39
|
-
hwb_color: EmbeddedProtocol::Value::HwbColor.new(
|
40
|
-
hue: obj.hue.to_f,
|
41
|
-
whiteness: obj.whiteness.to_f,
|
42
|
-
blackness: obj.blackness.to_f,
|
43
|
-
alpha: obj.alpha.to_f
|
44
|
-
)
|
45
|
-
)
|
46
|
-
else
|
47
|
-
EmbeddedProtocol::Value.new(
|
48
|
-
hsl_color: EmbeddedProtocol::Value::HslColor.new(
|
49
|
-
hue: obj.hue.to_f,
|
50
|
-
saturation: obj.saturation.to_f,
|
51
|
-
lightness: obj.lightness.to_f,
|
52
|
-
alpha: obj.alpha.to_f
|
53
|
-
)
|
54
|
-
)
|
55
|
-
end
|
56
|
-
when Sass::Value::ArgumentList
|
57
|
-
EmbeddedProtocol::Value.new(
|
58
|
-
argument_list: EmbeddedProtocol::Value::ArgumentList.new(
|
59
|
-
id: obj.instance_eval { @id },
|
60
|
-
contents: obj.contents.map { |element| to_proto(element) },
|
61
|
-
keywords: obj.keywords.transform_values { |value| to_proto(value) },
|
62
|
-
separator: ListSeparator.to_proto(obj.separator)
|
63
|
-
)
|
64
|
-
)
|
65
|
-
when Sass::Value::List
|
66
|
-
EmbeddedProtocol::Value.new(
|
67
|
-
list: EmbeddedProtocol::Value::List.new(
|
68
|
-
contents: obj.contents.map { |element| to_proto(element) },
|
69
|
-
separator: ListSeparator.to_proto(obj.separator),
|
70
|
-
has_brackets: obj.bracketed?
|
71
|
-
)
|
72
|
-
)
|
73
|
-
when Sass::Value::Map
|
74
|
-
EmbeddedProtocol::Value.new(
|
75
|
-
map: EmbeddedProtocol::Value::Map.new(
|
76
|
-
entries: obj.contents.map do |key, value|
|
77
|
-
EmbeddedProtocol::Value::Map::Entry.new(
|
78
|
-
key: to_proto(key),
|
79
|
-
value: to_proto(value)
|
80
|
-
)
|
81
|
-
end
|
82
|
-
)
|
83
|
-
)
|
84
|
-
when Sass::Value::Function
|
85
|
-
if obj.instance_eval { @id }
|
86
|
-
EmbeddedProtocol::Value.new(
|
87
|
-
compiler_function: EmbeddedProtocol::Value::CompilerFunction.new(
|
88
|
-
id: obj.instance_eval { @id }
|
89
|
-
)
|
90
|
-
)
|
91
|
-
else
|
92
|
-
EmbeddedProtocol::Value.new(
|
93
|
-
host_function: EmbeddedProtocol::Value::HostFunction.new(
|
94
|
-
id: @function_registry.register(obj.callback),
|
95
|
-
signature: obj.signature
|
96
|
-
)
|
97
|
-
)
|
98
|
-
end
|
99
|
-
when Sass::Value::Mixin
|
100
|
-
EmbeddedProtocol::Value.new(
|
101
|
-
compiler_mixin: EmbeddedProtocol::Value::CompilerMixin.new(
|
102
|
-
id: obj.instance_eval { @id }
|
103
|
-
)
|
104
|
-
)
|
105
|
-
when Sass::Value::Calculation
|
106
|
-
EmbeddedProtocol::Value.new(
|
107
|
-
calculation: Calculation.to_proto(obj)
|
108
|
-
)
|
109
|
-
when Sass::Value::Boolean
|
110
|
-
EmbeddedProtocol::Value.new(
|
111
|
-
singleton: obj.value ? :TRUE : :FALSE
|
112
|
-
)
|
113
|
-
when Sass::Value::Null
|
114
|
-
EmbeddedProtocol::Value.new(
|
115
|
-
singleton: :NULL
|
116
|
-
)
|
117
|
-
else
|
118
|
-
raise Sass::ScriptError, "Unknown Sass::Value #{obj}"
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
def from_proto(proto)
|
123
|
-
oneof = proto.value
|
124
|
-
obj = proto.public_send(oneof)
|
125
|
-
case oneof
|
126
|
-
when :string
|
127
|
-
Sass::Value::String.new(
|
128
|
-
obj.text,
|
129
|
-
quoted: obj.quoted
|
130
|
-
)
|
131
|
-
when :number
|
132
|
-
Number.from_proto(obj)
|
133
|
-
when :rgb_color
|
134
|
-
Sass::Value::Color.new(
|
135
|
-
red: obj.red,
|
136
|
-
green: obj.green,
|
137
|
-
blue: obj.blue,
|
138
|
-
alpha: obj.alpha
|
139
|
-
)
|
140
|
-
when :hsl_color
|
141
|
-
Sass::Value::Color.new(
|
142
|
-
hue: obj.hue,
|
143
|
-
saturation: obj.saturation,
|
144
|
-
lightness: obj.lightness,
|
145
|
-
alpha: obj.alpha
|
146
|
-
)
|
147
|
-
when :hwb_color
|
148
|
-
Sass::Value::Color.new(
|
149
|
-
hue: obj.hue,
|
150
|
-
whiteness: obj.whiteness,
|
151
|
-
blackness: obj.blackness,
|
152
|
-
alpha: obj.alpha
|
153
|
-
)
|
154
|
-
when :argument_list
|
155
|
-
Sass::Value::ArgumentList.new(
|
156
|
-
obj.contents.map do |element|
|
157
|
-
from_proto(element)
|
158
|
-
end,
|
159
|
-
obj.keywords.entries.to_h.transform_values! do |value|
|
160
|
-
from_proto(value)
|
161
|
-
end,
|
162
|
-
ListSeparator.from_proto(obj.separator)
|
163
|
-
).instance_eval do
|
164
|
-
@id = obj.id
|
165
|
-
self
|
166
|
-
end
|
167
|
-
when :list
|
168
|
-
Sass::Value::List.new(
|
169
|
-
obj.contents.map do |element|
|
170
|
-
from_proto(element)
|
171
|
-
end,
|
172
|
-
separator: ListSeparator.from_proto(obj.separator),
|
173
|
-
bracketed: obj.has_brackets
|
174
|
-
)
|
175
|
-
when :map
|
176
|
-
Sass::Value::Map.new(
|
177
|
-
obj.entries.to_h do |entry|
|
178
|
-
[from_proto(entry.key), from_proto(entry.value)]
|
179
|
-
end
|
180
|
-
)
|
181
|
-
when :compiler_function
|
182
|
-
Sass::Value::Function.new(nil).instance_eval do
|
183
|
-
@id = obj.id
|
184
|
-
self
|
185
|
-
end
|
186
|
-
when :host_function
|
187
|
-
raise Sass::ScriptError, 'The compiler may not send Value.host_function to host'
|
188
|
-
when :compiler_mixin
|
189
|
-
Sass::Value::Mixin.send(:new).instance_eval do
|
190
|
-
@id = obj.id
|
191
|
-
self
|
192
|
-
end
|
193
|
-
when :calculation
|
194
|
-
Calculation.from_proto(obj)
|
195
|
-
when :singleton
|
196
|
-
case obj
|
197
|
-
when :TRUE
|
198
|
-
Sass::Value::Boolean::TRUE
|
199
|
-
when :FALSE
|
200
|
-
Sass::Value::Boolean::FALSE
|
201
|
-
when :NULL
|
202
|
-
Sass::Value::Null::NULL
|
203
|
-
else
|
204
|
-
raise Sass::ScriptError, "Unknown Value.singleton #{obj}"
|
205
|
-
end
|
206
|
-
else
|
207
|
-
raise Sass::ScriptError, "Unknown Value.value #{obj}"
|
208
|
-
end
|
209
|
-
end
|
210
|
-
|
211
|
-
# The {Number} Protofier.
|
212
|
-
module Number
|
213
|
-
module_function
|
214
|
-
|
215
|
-
def to_proto(obj)
|
216
|
-
EmbeddedProtocol::Value::Number.new(
|
217
|
-
value: obj.value.to_f,
|
218
|
-
numerators: obj.numerator_units,
|
219
|
-
denominators: obj.denominator_units
|
220
|
-
)
|
221
|
-
end
|
222
|
-
|
223
|
-
def from_proto(obj)
|
224
|
-
Sass::Value::Number.new(
|
225
|
-
obj.value, {
|
226
|
-
numerator_units: obj.numerators.to_a,
|
227
|
-
denominator_units: obj.denominators.to_a
|
228
|
-
}
|
229
|
-
)
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
|
-
private_constant :Number
|
234
|
-
|
235
|
-
# The {Calculation} Protofier.
|
236
|
-
module Calculation
|
237
|
-
module_function
|
238
|
-
|
239
|
-
def to_proto(obj)
|
240
|
-
EmbeddedProtocol::Value::Calculation.new(
|
241
|
-
name: obj.name,
|
242
|
-
arguments: obj.arguments.map { |argument| CalculationValue.to_proto(argument) }
|
243
|
-
)
|
244
|
-
end
|
245
|
-
|
246
|
-
def from_proto(obj)
|
247
|
-
Sass::Value::Calculation.send(
|
248
|
-
:new,
|
249
|
-
obj.name,
|
250
|
-
obj.arguments.map { |argument| CalculationValue.from_proto(argument) }
|
251
|
-
)
|
252
|
-
end
|
253
|
-
end
|
254
|
-
|
255
|
-
private_constant :Calculation
|
256
|
-
|
257
|
-
# The {CalculationValue} Protofier.
|
258
|
-
module CalculationValue
|
259
|
-
module_function
|
260
|
-
|
261
|
-
def to_proto(value)
|
262
|
-
case value
|
263
|
-
when Sass::Value::Number
|
264
|
-
EmbeddedProtocol::Value::Calculation::CalculationValue.new(
|
265
|
-
number: Number.to_proto(value)
|
266
|
-
)
|
267
|
-
when Sass::Value::Calculation
|
268
|
-
EmbeddedProtocol::Value::Calculation::CalculationValue.new(
|
269
|
-
calculation: Calculation.to_proto(value)
|
270
|
-
)
|
271
|
-
when Sass::Value::String
|
272
|
-
EmbeddedProtocol::Value::Calculation::CalculationValue.new(
|
273
|
-
string: value.text
|
274
|
-
)
|
275
|
-
when Sass::CalculationValue::CalculationOperation
|
276
|
-
EmbeddedProtocol::Value::Calculation::CalculationValue.new(
|
277
|
-
operation: EmbeddedProtocol::Value::Calculation::CalculationOperation.new(
|
278
|
-
operator: CalculationOperator.to_proto(value.operator),
|
279
|
-
left: to_proto(value.left),
|
280
|
-
right: to_proto(value.right)
|
281
|
-
)
|
282
|
-
)
|
283
|
-
else
|
284
|
-
raise Sass::ScriptError, "Unknown CalculationValue #{value}"
|
285
|
-
end
|
286
|
-
end
|
287
|
-
|
288
|
-
def from_proto(value)
|
289
|
-
oneof = value.value
|
290
|
-
obj = value.public_send(oneof)
|
291
|
-
case oneof
|
292
|
-
when :number
|
293
|
-
Number.from_proto(obj)
|
294
|
-
when :calculation
|
295
|
-
Calculation.from_proto(obj)
|
296
|
-
when :string
|
297
|
-
Sass::Value::String.new(obj, quoted: false)
|
298
|
-
when :operation
|
299
|
-
Sass::CalculationValue::CalculationOperation.new(
|
300
|
-
CalculationOperator.from_proto(obj.operator),
|
301
|
-
from_proto(obj.left),
|
302
|
-
from_proto(obj.right)
|
303
|
-
)
|
304
|
-
else
|
305
|
-
raise Sass::ScriptError, "Unknown CalculationValue #{value}"
|
306
|
-
end
|
307
|
-
end
|
308
|
-
end
|
309
|
-
|
310
|
-
private_constant :CalculationValue
|
311
|
-
|
312
|
-
# The {CalculationOperator} Protofier.
|
313
|
-
module CalculationOperator
|
314
|
-
module_function
|
315
|
-
|
316
|
-
def to_proto(operator)
|
317
|
-
case operator
|
318
|
-
when '+'
|
319
|
-
:PLUS
|
320
|
-
when '-'
|
321
|
-
:MINUS
|
322
|
-
when '*'
|
323
|
-
:TIMES
|
324
|
-
when '/'
|
325
|
-
:DIVIDE
|
326
|
-
else
|
327
|
-
raise Sass::ScriptError, "Unknown CalculationOperator #{separator}"
|
328
|
-
end
|
329
|
-
end
|
330
|
-
|
331
|
-
def from_proto(operator)
|
332
|
-
case operator
|
333
|
-
when :PLUS
|
334
|
-
'+'
|
335
|
-
when :MINUS
|
336
|
-
'-'
|
337
|
-
when :TIMES
|
338
|
-
'*'
|
339
|
-
when :DIVIDE
|
340
|
-
'/'
|
341
|
-
else
|
342
|
-
raise Sass::ScriptError, "Unknown CalculationOperator #{separator}"
|
343
|
-
end
|
344
|
-
end
|
345
|
-
end
|
346
|
-
|
347
|
-
private_constant :CalculationOperator
|
348
|
-
|
349
|
-
# The {ListSeparator} Protofier.
|
350
|
-
module ListSeparator
|
351
|
-
module_function
|
352
|
-
|
353
|
-
def to_proto(separator)
|
354
|
-
case separator
|
355
|
-
when ','
|
356
|
-
:COMMA
|
357
|
-
when ' '
|
358
|
-
:SPACE
|
359
|
-
when '/'
|
360
|
-
:SLASH
|
361
|
-
when nil
|
362
|
-
:UNDECIDED
|
363
|
-
else
|
364
|
-
raise Sass::ScriptError, "Unknown ListSeparator #{separator}"
|
365
|
-
end
|
366
|
-
end
|
367
|
-
|
368
|
-
def from_proto(separator)
|
369
|
-
case separator
|
370
|
-
when :COMMA
|
371
|
-
','
|
372
|
-
when :SPACE
|
373
|
-
' '
|
374
|
-
when :SLASH
|
375
|
-
'/'
|
376
|
-
when :UNDECIDED
|
377
|
-
nil
|
378
|
-
else
|
379
|
-
raise Sass::ScriptError, "Unknown ListSeparator #{separator}"
|
380
|
-
end
|
381
|
-
end
|
382
|
-
end
|
383
|
-
|
384
|
-
private_constant :ListSeparator
|
385
|
-
end
|
386
|
-
|
387
|
-
private_constant :ValueProtofier
|
388
|
-
end
|
389
|
-
end
|
390
|
-
end
|