sass-embedded 0.7.0 → 0.7.5
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 +18 -18
- data/lib/sass/info.rb +1 -1
- data/lib/sass/observer.rb +1 -1
- data/lib/sass/render.rb +4 -4
- data/lib/sass/result.rb +10 -10
- data/lib/sass/transport.rb +42 -35
- data/lib/sass/util.rb +8 -19
- data/lib/sass/version.rb +1 -1
- metadata +7 -34
- data/.github/workflows/build.yml +0 -44
- data/.gitignore +0 -45
- data/.rubocop.yml +0 -11
- data/Gemfile +0 -4
- data/Rakefile +0 -23
- data/ext/.gitignore +0 -3
- data/sass-embedded.gemspec +0 -38
- data/test/concurrency_test.rb +0 -34
- data/test/functions_test.rb +0 -387
- data/test/importer_test.rb +0 -155
- data/test/include_paths_test.rb +0 -81
- data/test/indented_syntax_test.rb +0 -61
- data/test/input_test.rb +0 -56
- data/test/output_test.rb +0 -136
- data/test/render_error_test.rb +0 -44
- data/test/render_test.rb +0 -19
- data/test/source_maps_test.rb +0 -182
- data/test/test_helper.rb +0 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 107eda35f850f6a5d3744a89ba8dcd71abf8ea76659f0c51710ecde9f3233c53
|
4
|
+
data.tar.gz: f3e8d8d963f9a3bfffa00908b91e90d17fd4e9a04046a6c9a739e16b3eae5cb5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a9e2dcfbd314b616b66c53511fe021006c20e0a359bb9769db7bf87d14d9377443e245abf88f5da6e1b4414d34d4d05e529885b79169db7c86f8029ed3c7f1f5
|
7
|
+
data.tar.gz: d8ade839bab88a4ff4098f1b045b31dfd532570dbadcb76866fc3c13be603c445583ea2fe2b86aa9ba7b2472272f992d9dd28ce21eb64aaf8693d1ec557660b9
|
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,
|
@@ -102,7 +102,7 @@ module Sass
|
|
102
102
|
|
103
103
|
finish = Util.now
|
104
104
|
|
105
|
-
stats =
|
105
|
+
stats = RenderResultStats.new(file.nil? ? 'data' : file, start, finish, finish - start)
|
106
106
|
|
107
107
|
RenderResult.new(css, map, stats)
|
108
108
|
end
|
@@ -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
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,
|
@@ -97,7 +97,7 @@ module Sass
|
|
97
97
|
end
|
98
98
|
|
99
99
|
def canonicalize_response(canonicalize_request)
|
100
|
-
url = Util.
|
100
|
+
url = Util.file_uri_from_path(File.absolute_path(canonicalize_request.url, (@file.nil? ? 'stdin' : @file)))
|
101
101
|
|
102
102
|
begin
|
103
103
|
result = @importer[canonicalize_request.importer_id].call canonicalize_request.url, @file
|
@@ -123,7 +123,7 @@ module Sass
|
|
123
123
|
url: url
|
124
124
|
)
|
125
125
|
elsif result&.key? :file
|
126
|
-
canonicalized_url = Util.
|
126
|
+
canonicalized_url = Util.file_uri_from_path(result[:file])
|
127
127
|
|
128
128
|
# TODO: FileImportRequest is not supported yet.
|
129
129
|
# Workaround by reading contents and return it when server asks
|
@@ -185,7 +185,7 @@ module Sass
|
|
185
185
|
def url
|
186
186
|
return if @file.nil?
|
187
187
|
|
188
|
-
Util.
|
188
|
+
Util.file_uri_from_path @file
|
189
189
|
end
|
190
190
|
|
191
191
|
def string
|
data/lib/sass/result.rb
CHANGED
@@ -12,19 +12,19 @@ module Sass
|
|
12
12
|
@map = map
|
13
13
|
@stats = stats
|
14
14
|
end
|
15
|
+
end
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
17
|
+
# The {RenderResultStats} of {Embedded#render}.
|
18
|
+
class RenderResultStats
|
19
|
+
include Struct
|
19
20
|
|
20
|
-
|
21
|
+
attr_reader :entry, :start, :end, :duration
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
23
|
+
def initialize(entry, start, finish, duration)
|
24
|
+
@entry = entry
|
25
|
+
@start = start
|
26
|
+
@end = finish
|
27
|
+
@duration = duration
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
data/lib/sass/transport.rb
CHANGED
@@ -28,8 +28,12 @@ module Sass
|
|
28
28
|
@observerable_mutex = Mutex.new
|
29
29
|
@stdin_mutex = Mutex.new
|
30
30
|
@stdin, @stdout, @stderr, @wait_thread = Open3.popen3(DART_SASS_EMBEDDED)
|
31
|
-
|
32
|
-
|
31
|
+
poll do
|
32
|
+
$stderr.write @stderr.readline
|
33
|
+
end
|
34
|
+
poll do
|
35
|
+
receive_proto read
|
36
|
+
end
|
33
37
|
end
|
34
38
|
|
35
39
|
def add_observer(*args)
|
@@ -58,57 +62,60 @@ module Sass
|
|
58
62
|
|
59
63
|
private
|
60
64
|
|
61
|
-
def
|
65
|
+
def poll
|
62
66
|
Thread.new do
|
63
67
|
loop do
|
64
|
-
|
65
|
-
loop do
|
66
|
-
byte = readable.readbyte
|
67
|
-
length += (byte & 0x7f) << bits
|
68
|
-
bits += 7
|
69
|
-
break if byte <= 0x7f
|
70
|
-
end
|
71
|
-
payload = readable.read length
|
72
|
-
message = EmbeddedProtocol::OutboundMessage.decode payload
|
73
|
-
@observerable_mutex.synchronize do
|
74
|
-
changed
|
75
|
-
notify_observers nil, message[message.message.to_s]
|
76
|
-
end
|
68
|
+
yield
|
77
69
|
rescue Interrupt
|
78
70
|
break
|
79
71
|
rescue IOError => e
|
80
|
-
notify_observers
|
72
|
+
notify_observers(e, nil)
|
81
73
|
close
|
82
74
|
break
|
83
75
|
end
|
84
76
|
end
|
85
77
|
end
|
86
78
|
|
87
|
-
def
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
rescue Interrupt
|
92
|
-
break
|
93
|
-
rescue IOError => e
|
94
|
-
@observerable_mutex.synchronize do
|
95
|
-
notify_observers e, nil
|
96
|
-
end
|
97
|
-
close
|
98
|
-
break
|
99
|
-
end
|
79
|
+
def notify_observers(*args)
|
80
|
+
@observerable_mutex.synchronize do
|
81
|
+
changed
|
82
|
+
super(*args)
|
100
83
|
end
|
101
84
|
end
|
102
85
|
|
86
|
+
def receive_proto(proto)
|
87
|
+
message = EmbeddedProtocol::OutboundMessage.decode(proto)
|
88
|
+
notify_observers(nil, message[message.message.to_s])
|
89
|
+
end
|
90
|
+
|
91
|
+
def read
|
92
|
+
length = read_varint(@stdout)
|
93
|
+
@stdout.read(length)
|
94
|
+
end
|
95
|
+
|
103
96
|
def write(payload)
|
104
97
|
@stdin_mutex.synchronize do
|
105
|
-
|
106
|
-
while length.positive?
|
107
|
-
@stdin.write ((length > 0x7f ? 0x80 : 0) | (length & 0x7f)).chr
|
108
|
-
length >>= 7
|
109
|
-
end
|
98
|
+
write_varint(@stdin, payload.length)
|
110
99
|
@stdin.write payload
|
111
100
|
end
|
112
101
|
end
|
102
|
+
|
103
|
+
def read_varint(readable)
|
104
|
+
varint = bits = 0
|
105
|
+
loop do
|
106
|
+
byte = readable.readbyte
|
107
|
+
varint += (byte & 0x7f) << bits
|
108
|
+
bits += 7
|
109
|
+
break if byte <= 0x7f
|
110
|
+
end
|
111
|
+
varint
|
112
|
+
end
|
113
|
+
|
114
|
+
def write_varint(writeable, varint)
|
115
|
+
while varint.positive?
|
116
|
+
writeable.write ((varint > 0x7f ? 0x80 : 0) | (varint & 0x7f)).chr
|
117
|
+
varint >>= 7
|
118
|
+
end
|
119
|
+
end
|
113
120
|
end
|
114
121
|
end
|
data/lib/sass/util.rb
CHANGED
@@ -1,39 +1,28 @@
|
|
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
|
-
def
|
13
|
+
def file_uri_from_path(path)
|
13
14
|
absolute_path = File.absolute_path(path)
|
14
15
|
|
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
|
16
|
+
absolute_path = File::SEPARATOR + absolute_path unless absolute_path.start_with? File::SEPARATOR
|
20
17
|
|
21
|
-
"
|
18
|
+
URI_PARSER.escape("file://#{absolute_path}")
|
22
19
|
end
|
23
20
|
|
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
|
21
|
+
def path_from_file_uri(file_uri)
|
22
|
+
URI_PARSER.unescape(file_uri)[7..]
|
34
23
|
end
|
35
24
|
|
36
|
-
def
|
25
|
+
def relative_path(from, to)
|
37
26
|
Pathname.new(File.absolute_path(to)).relative_path_from(Pathname.new(File.absolute_path(from))).to_s
|
38
27
|
end
|
39
28
|
|
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.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- なつき
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-05-
|
11
|
+
date: 2021-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-protobuf
|
@@ -136,7 +136,8 @@ dependencies:
|
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
|
-
description:
|
139
|
+
description: A Ruby library that will communicate with Embedded Dart Sass using the
|
140
|
+
Embedded Sass protocol.
|
140
141
|
email:
|
141
142
|
- i@ntk.me
|
142
143
|
executables: []
|
@@ -144,14 +145,8 @@ extensions:
|
|
144
145
|
- ext/extconf.rb
|
145
146
|
extra_rdoc_files: []
|
146
147
|
files:
|
147
|
-
- ".github/workflows/build.yml"
|
148
|
-
- ".gitignore"
|
149
|
-
- ".rubocop.yml"
|
150
|
-
- Gemfile
|
151
148
|
- LICENSE
|
152
149
|
- README.md
|
153
|
-
- Rakefile
|
154
|
-
- ext/.gitignore
|
155
150
|
- ext/Makefile
|
156
151
|
- ext/extconf.rb
|
157
152
|
- lib/sass.rb
|
@@ -166,22 +161,11 @@ files:
|
|
166
161
|
- lib/sass/transport.rb
|
167
162
|
- lib/sass/util.rb
|
168
163
|
- lib/sass/version.rb
|
169
|
-
- sass-embedded.gemspec
|
170
|
-
- test/concurrency_test.rb
|
171
|
-
- test/functions_test.rb
|
172
|
-
- test/importer_test.rb
|
173
|
-
- test/include_paths_test.rb
|
174
|
-
- test/indented_syntax_test.rb
|
175
|
-
- test/input_test.rb
|
176
|
-
- test/output_test.rb
|
177
|
-
- test/render_error_test.rb
|
178
|
-
- test/render_test.rb
|
179
|
-
- test/source_maps_test.rb
|
180
|
-
- test/test_helper.rb
|
181
164
|
homepage: https://github.com/ntkme/sass-embedded-host-ruby
|
182
165
|
licenses:
|
183
166
|
- MIT
|
184
|
-
metadata:
|
167
|
+
metadata:
|
168
|
+
source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v0.7.5
|
185
169
|
post_install_message:
|
186
170
|
rdoc_options: []
|
187
171
|
require_paths:
|
@@ -201,15 +185,4 @@ rubygems_version: 3.2.15
|
|
201
185
|
signing_key:
|
202
186
|
specification_version: 4
|
203
187
|
summary: Use dart-sass with Ruby!
|
204
|
-
test_files:
|
205
|
-
- test/concurrency_test.rb
|
206
|
-
- test/functions_test.rb
|
207
|
-
- test/importer_test.rb
|
208
|
-
- test/include_paths_test.rb
|
209
|
-
- test/indented_syntax_test.rb
|
210
|
-
- test/input_test.rb
|
211
|
-
- test/output_test.rb
|
212
|
-
- test/render_error_test.rb
|
213
|
-
- test/render_test.rb
|
214
|
-
- test/source_maps_test.rb
|
215
|
-
- test/test_helper.rb
|
188
|
+
test_files: []
|