sass-embedded 0.6.3 → 0.7.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/README.md +2 -1
- data/lib/sass/embedded.rb +10 -3
- data/lib/sass/error.rb +0 -2
- data/lib/sass/info.rb +8 -3
- data/lib/sass/observer.rb +9 -6
- data/lib/sass/render.rb +10 -7
- data/lib/sass/transport.rb +7 -7
- data/lib/sass/version.rb +1 -1
- data/test/source_maps_test.rb +4 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af257f49189b3ea9e19c67fd67dba0cbf35d010c7a222e36fd820afee7eb3e10
|
4
|
+
data.tar.gz: a63caa77fc2a9793f5138896df09722aae680b85a11db50512da3281fba8fae7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b5e7ea087a76653e6e45ee2338eeb31224a85388b9ece793d90652176f50d77affb4816acccfa6c1dbe5ffb5221bebc3bd1d0a00dcade850e6413125c4d1fc6
|
7
|
+
data.tar.gz: 7de00d938497c9d447c396d69eb4d6907683097c3b897c77ead784a17f3fcc691f8a67ca99bc5fbf9e7ce268db5f443e31d65903e81c8acb966238760db1a35a
|
data/README.md
CHANGED
@@ -22,7 +22,7 @@ Sass.render(file: "style.scss")
|
|
22
22
|
|
23
23
|
## Options
|
24
24
|
|
25
|
-
`Sass.render()`
|
25
|
+
`Sass.render(**kwargs)` supports the following options:
|
26
26
|
|
27
27
|
- [`data`](https://sass-lang.com/documentation/js-api#data)
|
28
28
|
- [`file`](https://sass-lang.com/documentation/js-api#file)
|
@@ -35,6 +35,7 @@ Sass.render(file: "style.scss")
|
|
35
35
|
- [`source_map`](https://sass-lang.com/documentation/js-api#sourcemap)
|
36
36
|
- [`out_file`](https://sass-lang.com/documentation/js-api#outfile)
|
37
37
|
- [`omit_source_map_url`](https://sass-lang.com/documentation/js-api#omitsourcemapurl)
|
38
|
+
- [`source_map_contents`](https://sass-lang.com/documentation/js-api#sourcemapcontents)
|
38
39
|
- [`source_map_embed`](https://sass-lang.com/documentation/js-api#sourcemapembed)
|
39
40
|
- [`source_map_root`](https://sass-lang.com/documentation/js-api#sourcemaproot)
|
40
41
|
- [`functions`](https://sass-lang.com/documentation/js-api#functions)
|
data/lib/sass/embedded.rb
CHANGED
@@ -44,7 +44,7 @@ module Sass
|
|
44
44
|
source_map: false,
|
45
45
|
out_file: nil,
|
46
46
|
omit_source_map_url: false,
|
47
|
-
|
47
|
+
source_map_contents: false,
|
48
48
|
source_map_embed: false,
|
49
49
|
source_map_root: '',
|
50
50
|
functions: {},
|
@@ -87,6 +87,7 @@ module Sass
|
|
87
87
|
file: file,
|
88
88
|
out_file: out_file,
|
89
89
|
source_map: source_map,
|
90
|
+
source_map_contents: source_map_contents,
|
90
91
|
source_map_root: source_map_root)
|
91
92
|
|
92
93
|
css = post_process_css(css: message.success.css,
|
@@ -120,6 +121,7 @@ module Sass
|
|
120
121
|
file:,
|
121
122
|
out_file:,
|
122
123
|
source_map:,
|
124
|
+
source_map_contents:,
|
123
125
|
source_map_root:)
|
124
126
|
return if map.nil? || map.empty?
|
125
127
|
|
@@ -144,10 +146,15 @@ module Sass
|
|
144
146
|
map_data['file'] = 'stdin.css'
|
145
147
|
end
|
146
148
|
|
149
|
+
map_data['sourcesContent'] = [] if source_map_contents
|
150
|
+
|
147
151
|
map_data['sources'].map! do |source|
|
148
152
|
if source.start_with? Util::FILE_PROTOCOL
|
149
|
-
|
153
|
+
path = Util.path(source)
|
154
|
+
map_data['sourcesContent'].push(File.read(path)) if source_map_contents
|
155
|
+
Util.relative(source_map_dir, path)
|
150
156
|
else
|
157
|
+
map_data['sourcesContent'].push(nil) if source_map_contents
|
151
158
|
source
|
152
159
|
end
|
153
160
|
end
|
@@ -181,7 +188,7 @@ module Sass
|
|
181
188
|
else
|
182
189
|
source_map
|
183
190
|
end
|
184
|
-
css += "#{linefeed}/*# sourceMappingURL=#{url} */"
|
191
|
+
css += "#{linefeed}#{linefeed}/*# sourceMappingURL=#{url} */"
|
185
192
|
end
|
186
193
|
|
187
194
|
-css
|
data/lib/sass/error.rb
CHANGED
data/lib/sass/info.rb
CHANGED
@@ -2,10 +2,15 @@
|
|
2
2
|
|
3
3
|
module Sass
|
4
4
|
# The {Observer} for {Embedded#info}.
|
5
|
-
class Version
|
5
|
+
class Version
|
6
|
+
include Observer
|
7
|
+
|
6
8
|
def initialize(transport, id)
|
7
|
-
|
8
|
-
|
9
|
+
@id = id
|
10
|
+
|
11
|
+
super(transport)
|
12
|
+
|
13
|
+
send_message EmbeddedProtocol::InboundMessage::VersionRequest.new(id: @id)
|
9
14
|
end
|
10
15
|
|
11
16
|
def update(error, message)
|
data/lib/sass/observer.rb
CHANGED
@@ -1,13 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Sass
|
4
|
-
# The {Observer} for receiving messages from {Transport}.
|
5
|
-
|
6
|
-
def initialize(transport
|
7
|
-
raise NotImplementedError if instance_of? Observer
|
8
|
-
|
4
|
+
# The {Observer} module for receiving messages from {Transport}.
|
5
|
+
module Observer
|
6
|
+
def initialize(transport)
|
9
7
|
@transport = transport
|
10
|
-
@id = id
|
11
8
|
@mutex = Mutex.new
|
12
9
|
@condition_variable = ConditionVariable.new
|
13
10
|
@error = nil
|
@@ -33,5 +30,11 @@ module Sass
|
|
33
30
|
@condition_variable.broadcast
|
34
31
|
end
|
35
32
|
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def send_message(message)
|
37
|
+
@transport.send_message(message)
|
38
|
+
end
|
36
39
|
end
|
37
40
|
end
|
data/lib/sass/render.rb
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
module Sass
|
4
4
|
# The {Observer} for {Embedded#render}.
|
5
|
-
class Render
|
5
|
+
class Render
|
6
|
+
include Observer
|
7
|
+
|
6
8
|
def initialize(transport, id,
|
7
9
|
data:,
|
8
10
|
file:,
|
@@ -15,8 +17,7 @@ module Sass
|
|
15
17
|
importer:)
|
16
18
|
raise ArgumentError, 'either data or file must be set' if file.nil? && data.nil?
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
+
@id = id
|
20
21
|
@data = data
|
21
22
|
@file = file
|
22
23
|
@indented_syntax = indented_syntax
|
@@ -31,7 +32,9 @@ module Sass
|
|
31
32
|
@importer = importer
|
32
33
|
@import_responses = {}
|
33
34
|
|
34
|
-
|
35
|
+
super(transport)
|
36
|
+
|
37
|
+
send_message compile_request
|
35
38
|
end
|
36
39
|
|
37
40
|
def update(error, message)
|
@@ -54,13 +57,13 @@ module Sass
|
|
54
57
|
return unless message.compilation_id == @id
|
55
58
|
|
56
59
|
Thread.new do
|
57
|
-
|
60
|
+
send_message canonicalize_response message
|
58
61
|
end
|
59
62
|
when EmbeddedProtocol::OutboundMessage::ImportRequest
|
60
63
|
return unless message.compilation_id == @id
|
61
64
|
|
62
65
|
Thread.new do
|
63
|
-
|
66
|
+
send_message import_response message
|
64
67
|
end
|
65
68
|
when EmbeddedProtocol::OutboundMessage::FileImportRequest
|
66
69
|
raise NotImplementedError, 'FileImportRequest is not implemented'
|
@@ -68,7 +71,7 @@ module Sass
|
|
68
71
|
return unless message.compilation_id == @id
|
69
72
|
|
70
73
|
Thread.new do
|
71
|
-
|
74
|
+
send_message function_call_response message
|
72
75
|
end
|
73
76
|
end
|
74
77
|
rescue StandardError => e
|
data/lib/sass/transport.rb
CHANGED
@@ -5,7 +5,7 @@ require 'observer'
|
|
5
5
|
require_relative '../../ext/embedded_sass_pb'
|
6
6
|
|
7
7
|
module Sass
|
8
|
-
# The {Observable} {Transport} for low level communication with
|
8
|
+
# The {::Observable} {Transport} for low level communication with
|
9
9
|
# `dart-sass-embedded` using protocol buffers via stdio. Received messages
|
10
10
|
# can be observed by an {Observer}.
|
11
11
|
class Transport
|
@@ -29,7 +29,7 @@ module Sass
|
|
29
29
|
@stdin_mutex = Mutex.new
|
30
30
|
@stdin, @stdout, @stderr, @wait_thread = Open3.popen3(DART_SASS_EMBEDDED)
|
31
31
|
pipe @stderr, $stderr
|
32
|
-
|
32
|
+
receive_message @stdout
|
33
33
|
end
|
34
34
|
|
35
35
|
def add_observer(*args)
|
@@ -38,7 +38,7 @@ module Sass
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
-
def
|
41
|
+
def send_message(message)
|
42
42
|
write EmbeddedProtocol::InboundMessage.new(
|
43
43
|
ONEOF_MESSAGE[message.class.descriptor] => message
|
44
44
|
).to_proto
|
@@ -58,17 +58,17 @@ module Sass
|
|
58
58
|
|
59
59
|
private
|
60
60
|
|
61
|
-
def
|
61
|
+
def receive_message(readable)
|
62
62
|
Thread.new do
|
63
63
|
loop do
|
64
64
|
bits = length = 0
|
65
65
|
loop do
|
66
|
-
byte =
|
66
|
+
byte = readable.readbyte
|
67
67
|
length += (byte & 0x7f) << bits
|
68
68
|
bits += 7
|
69
69
|
break if byte <= 0x7f
|
70
70
|
end
|
71
|
-
payload =
|
71
|
+
payload = readable.read length
|
72
72
|
message = EmbeddedProtocol::OutboundMessage.decode payload
|
73
73
|
@observerable_mutex.synchronize do
|
74
74
|
changed
|
@@ -87,7 +87,7 @@ module Sass
|
|
87
87
|
def pipe(readable, writeable)
|
88
88
|
Thread.new do
|
89
89
|
loop do
|
90
|
-
writeable.write readable.
|
90
|
+
writeable.write readable.readline
|
91
91
|
rescue Interrupt
|
92
92
|
break
|
93
93
|
rescue IOError => e
|
data/lib/sass/version.rb
CHANGED
data/test/source_maps_test.rb
CHANGED
@@ -47,6 +47,7 @@ module Sass
|
|
47
47
|
h1 {
|
48
48
|
font-size: 40px;
|
49
49
|
}
|
50
|
+
|
50
51
|
/*# sourceMappingURL=out.map */
|
51
52
|
CSS
|
52
53
|
|
@@ -92,6 +93,7 @@ module Sass
|
|
92
93
|
h1 {
|
93
94
|
font-size: 40px;
|
94
95
|
}
|
96
|
+
|
95
97
|
/*# sourceMappingURL=out.css.map */
|
96
98
|
CSS
|
97
99
|
|
@@ -139,6 +141,7 @@ module Sass
|
|
139
141
|
h1 {
|
140
142
|
font-size: 40px;
|
141
143
|
}
|
144
|
+
|
142
145
|
/*# sourceMappingURL=data:application/json;base64,
|
143
146
|
CSS
|
144
147
|
|
@@ -163,6 +166,7 @@ module Sass
|
|
163
166
|
h1 {
|
164
167
|
font-size: 40px;
|
165
168
|
}
|
169
|
+
|
166
170
|
/*# sourceMappingURL=out.map */
|
167
171
|
CSS
|
168
172
|
|