sass-embedded 0.7.2 → 0.7.7
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.rb +2 -1
- data/lib/sass/embedded.rb +17 -17
- data/lib/sass/info.rb +1 -3
- data/lib/sass/observer.rb +1 -1
- data/lib/sass/render.rb +4 -6
- data/lib/sass/transport.rb +31 -26
- data/lib/sass/util.rb +10 -19
- data/lib/sass/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 835b2c9a1ba57c2029d2742def3168da30f6779b79f6da189cd0bb17a050b4b4
|
4
|
+
data.tar.gz: 781cdcecc2740ef1d817328c019df048404b40e66019e3ea4714508db42050fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ce7a3556eafb00728a5670800f9b60974fc62c81a6b4f934afc6f3a37b1a04544cbe6553fa629b2c33a31fdda8574d33943b417a0928e4d9946424b18117892
|
7
|
+
data.tar.gz: 23b8d42df92a6053034c3be000568dcb260c04afba8318b9b4d4f960d194b1483325720dfb4aaacec7266b05ce0455a24c16dc96122101ff8b79c52368c79f7d
|
data/lib/sass.rb
CHANGED
@@ -60,6 +60,7 @@ module Sass
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
+
require_relative 'sass/version'
|
63
64
|
require_relative 'sass/platform'
|
64
65
|
require_relative 'sass/util'
|
65
66
|
require_relative 'sass/struct'
|
@@ -67,6 +68,6 @@ require_relative 'sass/result'
|
|
67
68
|
require_relative 'sass/error'
|
68
69
|
require_relative 'sass/transport'
|
69
70
|
require_relative 'sass/observer'
|
70
|
-
require_relative 'sass/
|
71
|
+
require_relative 'sass/info'
|
71
72
|
require_relative 'sass/render'
|
72
73
|
require_relative 'sass/embedded'
|
data/lib/sass/embedded.rb
CHANGED
@@ -23,7 +23,7 @@ module Sass
|
|
23
23
|
#
|
24
24
|
# @raise [ProtocolError]
|
25
25
|
def info
|
26
|
-
@info ||=
|
26
|
+
@info ||= VersionContext.new(@transport, next_id).receive_message
|
27
27
|
end
|
28
28
|
|
29
29
|
# The {Embedded#render} method.
|
@@ -55,16 +55,16 @@ module Sass
|
|
55
55
|
indent_width = parse_indent_width(indent_width)
|
56
56
|
linefeed = parse_linefeed(linefeed)
|
57
57
|
|
58
|
-
message =
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
58
|
+
message = RenderContext.new(@transport, next_id,
|
59
|
+
data: data,
|
60
|
+
file: file,
|
61
|
+
indented_syntax: indented_syntax,
|
62
|
+
include_paths: include_paths,
|
63
|
+
output_style: output_style,
|
64
|
+
source_map: source_map,
|
65
|
+
out_file: out_file,
|
66
|
+
functions: functions,
|
67
|
+
importer: importer).receive_message
|
68
68
|
|
69
69
|
if message.failure
|
70
70
|
raise RenderError.new(
|
@@ -75,7 +75,7 @@ module Sass
|
|
75
75
|
elsif message.failure.span.url == ''
|
76
76
|
'stdin'
|
77
77
|
else
|
78
|
-
Util.
|
78
|
+
Util.path_from_file_uri(message.failure.span.url)
|
79
79
|
end,
|
80
80
|
message.failure.span ? message.failure.span.start.line + 1 : nil,
|
81
81
|
message.failure.span ? message.failure.span.start.column + 1 : nil,
|
@@ -138,7 +138,7 @@ module Sass
|
|
138
138
|
source_map_dir = File.dirname(source_map_path)
|
139
139
|
|
140
140
|
if out_file
|
141
|
-
map_data['file'] = Util.
|
141
|
+
map_data['file'] = Util.relative_path(source_map_dir, out_file)
|
142
142
|
elsif file
|
143
143
|
ext = File.extname(file)
|
144
144
|
map_data['file'] = "#{file[0..(ext.empty? ? -1 : -ext.length - 1)]}.css"
|
@@ -149,10 +149,10 @@ module Sass
|
|
149
149
|
map_data['sourcesContent'] = [] if source_map_contents
|
150
150
|
|
151
151
|
map_data['sources'].map! do |source|
|
152
|
-
if source.start_with?
|
153
|
-
path = Util.
|
152
|
+
if source.start_with? 'file://'
|
153
|
+
path = Util.path_from_file_uri(source)
|
154
154
|
map_data['sourcesContent'].push(File.read(path)) if source_map_contents
|
155
|
-
Util.
|
155
|
+
Util.relative_path(source_map_dir, path)
|
156
156
|
else
|
157
157
|
map_data['sourcesContent'].push(nil) if source_map_contents
|
158
158
|
source
|
@@ -184,7 +184,7 @@ module Sass
|
|
184
184
|
url = if source_map_embed
|
185
185
|
"data:application/json;base64,#{Base64.strict_encode64(map)}"
|
186
186
|
elsif out_file
|
187
|
-
Util.
|
187
|
+
Util.relative_path(File.dirname(out_file), source_map)
|
188
188
|
else
|
189
189
|
source_map
|
190
190
|
end
|
data/lib/sass/info.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Sass
|
4
4
|
# The {Observer} for {Embedded#info}.
|
5
|
-
class
|
5
|
+
class VersionContext
|
6
6
|
include Observer
|
7
7
|
|
8
8
|
def initialize(transport, id)
|
@@ -17,8 +17,6 @@ module Sass
|
|
17
17
|
raise error unless error.nil?
|
18
18
|
|
19
19
|
case message
|
20
|
-
when EmbeddedProtocol::ProtocolError
|
21
|
-
raise ProtocolError, message.message
|
22
20
|
when EmbeddedProtocol::OutboundMessage::VersionResponse
|
23
21
|
return unless message.id == @id
|
24
22
|
|
data/lib/sass/observer.rb
CHANGED
data/lib/sass/render.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Sass
|
4
4
|
# The {Observer} for {Embedded#render}.
|
5
|
-
class
|
5
|
+
class RenderContext
|
6
6
|
include Observer
|
7
7
|
|
8
8
|
def initialize(transport, id,
|
@@ -41,8 +41,6 @@ module Sass
|
|
41
41
|
raise error unless error.nil?
|
42
42
|
|
43
43
|
case message
|
44
|
-
when EmbeddedProtocol::ProtocolError
|
45
|
-
raise ProtocolError, message.message
|
46
44
|
when EmbeddedProtocol::OutboundMessage::CompileResponse
|
47
45
|
return unless message.id == @id
|
48
46
|
|
@@ -97,7 +95,7 @@ module Sass
|
|
97
95
|
end
|
98
96
|
|
99
97
|
def canonicalize_response(canonicalize_request)
|
100
|
-
url = Util.
|
98
|
+
url = Util.file_uri_from_path(File.absolute_path(canonicalize_request.url, (@file.nil? ? 'stdin' : @file)))
|
101
99
|
|
102
100
|
begin
|
103
101
|
result = @importer[canonicalize_request.importer_id].call canonicalize_request.url, @file
|
@@ -123,7 +121,7 @@ module Sass
|
|
123
121
|
url: url
|
124
122
|
)
|
125
123
|
elsif result&.key? :file
|
126
|
-
canonicalized_url = Util.
|
124
|
+
canonicalized_url = Util.file_uri_from_path(result[:file])
|
127
125
|
|
128
126
|
# TODO: FileImportRequest is not supported yet.
|
129
127
|
# Workaround by reading contents and return it when server asks
|
@@ -185,7 +183,7 @@ module Sass
|
|
185
183
|
def url
|
186
184
|
return if @file.nil?
|
187
185
|
|
188
|
-
Util.
|
186
|
+
Util.file_uri_from_path @file
|
189
187
|
end
|
190
188
|
|
191
189
|
def string
|
data/lib/sass/transport.rb
CHANGED
@@ -24,12 +24,18 @@ module Sass
|
|
24
24
|
[field_descriptor.subtype, field_descriptor.name]
|
25
25
|
end.to_h
|
26
26
|
|
27
|
+
private_constant :ONEOF_MESSAGE
|
28
|
+
|
27
29
|
def initialize
|
28
30
|
@observerable_mutex = Mutex.new
|
29
31
|
@stdin_mutex = Mutex.new
|
30
32
|
@stdin, @stdout, @stderr, @wait_thread = Open3.popen3(DART_SASS_EMBEDDED)
|
31
|
-
|
32
|
-
|
33
|
+
poll do
|
34
|
+
$stderr.write @stderr.readline
|
35
|
+
end
|
36
|
+
poll do
|
37
|
+
receive_proto read
|
38
|
+
end
|
33
39
|
end
|
34
40
|
|
35
41
|
def add_observer(*args)
|
@@ -58,44 +64,43 @@ module Sass
|
|
58
64
|
|
59
65
|
private
|
60
66
|
|
61
|
-
def
|
62
|
-
@observerable_mutex.synchronize do
|
63
|
-
changed
|
64
|
-
notify_observers error, message
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def pipe(readable, writeable)
|
67
|
+
def poll
|
69
68
|
Thread.new do
|
70
69
|
loop do
|
71
|
-
|
70
|
+
yield
|
72
71
|
rescue Interrupt
|
73
72
|
break
|
74
73
|
rescue IOError => e
|
75
|
-
|
74
|
+
notify_observers(e, nil)
|
76
75
|
close
|
77
76
|
break
|
78
77
|
end
|
79
78
|
end
|
80
79
|
end
|
81
80
|
|
82
|
-
def
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
81
|
+
def notify_observers(*args)
|
82
|
+
@observerable_mutex.synchronize do
|
83
|
+
changed
|
84
|
+
super(*args)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def receive_proto(proto)
|
89
|
+
payload = EmbeddedProtocol::OutboundMessage.decode(proto)
|
90
|
+
message = payload[payload.message.to_s]
|
91
|
+
case message
|
92
|
+
when EmbeddedProtocol::ProtocolError
|
93
|
+
notify_observers(ProtocolError.new(message.message), nil)
|
94
|
+
else
|
95
|
+
notify_observers(nil, message)
|
96
96
|
end
|
97
97
|
end
|
98
98
|
|
99
|
+
def read
|
100
|
+
length = read_varint(@stdout)
|
101
|
+
@stdout.read(length)
|
102
|
+
end
|
103
|
+
|
99
104
|
def write(payload)
|
100
105
|
@stdin_mutex.synchronize do
|
101
106
|
write_varint(@stdin, payload.length)
|
data/lib/sass/util.rb
CHANGED
@@ -1,39 +1,30 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'pathname'
|
4
|
+
require 'uri'
|
4
5
|
|
5
6
|
module Sass
|
6
7
|
# The {Util} module.
|
7
8
|
module Util
|
8
9
|
module_function
|
9
10
|
|
10
|
-
|
11
|
+
URI_PARSER = URI::Parser.new({ RESERVED: ';/?:@&=+$,' })
|
11
12
|
|
12
|
-
|
13
|
+
private_constant :URI_PARSER
|
14
|
+
|
15
|
+
def file_uri_from_path(path)
|
13
16
|
absolute_path = File.absolute_path(path)
|
14
17
|
|
15
|
-
unless absolute_path.start_with? File::SEPARATOR
|
16
|
-
components = absolute_path.split File::SEPARATOR
|
17
|
-
components[0] = components[0][0].downcase
|
18
|
-
absolute_path = components.join File::SEPARATOR
|
19
|
-
end
|
18
|
+
absolute_path = File::SEPARATOR + absolute_path unless absolute_path.start_with? File::SEPARATOR
|
20
19
|
|
21
|
-
"
|
20
|
+
URI_PARSER.escape("file://#{absolute_path}")
|
22
21
|
end
|
23
22
|
|
24
|
-
def
|
25
|
-
|
26
|
-
|
27
|
-
unless absolute_path.start_with? File::SEPARATOR
|
28
|
-
components = absolute_path.split File::SEPARATOR
|
29
|
-
components[0] = "#{components[0].upcase}:"
|
30
|
-
absolute_path = components.join File::SEPARATOR
|
31
|
-
end
|
32
|
-
|
33
|
-
absolute_path
|
23
|
+
def path_from_file_uri(file_uri)
|
24
|
+
URI_PARSER.unescape(file_uri)[7..]
|
34
25
|
end
|
35
26
|
|
36
|
-
def
|
27
|
+
def relative_path(from, to)
|
37
28
|
Pathname.new(File.absolute_path(to)).relative_path_from(Pathname.new(File.absolute_path(from))).to_s
|
38
29
|
end
|
39
30
|
|
data/lib/sass/version.rb
CHANGED
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.7.
|
4
|
+
version: 0.7.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- なつき
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-protobuf
|
@@ -165,7 +165,7 @@ homepage: https://github.com/ntkme/sass-embedded-host-ruby
|
|
165
165
|
licenses:
|
166
166
|
- MIT
|
167
167
|
metadata:
|
168
|
-
source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v0.7.
|
168
|
+
source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v0.7.7
|
169
169
|
post_install_message:
|
170
170
|
rdoc_options: []
|
171
171
|
require_paths:
|