sass-embedded 0.6.6 → 0.7.3
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.rb +2 -1
- data/lib/sass/embedded.rb +9 -4
- data/lib/sass/info.rb +8 -3
- data/lib/sass/observer.rb +9 -6
- data/lib/sass/render.rb +10 -7
- data/lib/sass/result.rb +10 -10
- data/lib/sass/transport.rb +38 -28
- 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: 65d80ba547e32d13dc4a4b9f0760e8203df64c5481dea662564e1872bff6bec9
|
4
|
+
data.tar.gz: 363baff44d6a57b5ad5cd6e8963c915b582a147b2c360182e8218ce4ae7a7338
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12f310e82141b47c7fe61b06a03df7abd00ec06cb9b268aa6c29bd28a523d7182014caaabdd314bebcaeeddad7c62517cb0fda180a81a4ca276862207f8f796b
|
7
|
+
data.tar.gz: 5d4a397ec28e27cedc67c3467a2ffa91b9d8fe0e3ae02b0939fb29fa05a61a0156a7a5a3a6c6eceb6a8049b23867136a94b3962e360db29dd8d3427032f2a52e
|
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.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
@@ -49,8 +49,6 @@ module Sass
|
|
49
49
|
source_map_root: '',
|
50
50
|
functions: {},
|
51
51
|
importer: [])
|
52
|
-
raise NotImplementedError, 'source_map_contents is not implemented' unless source_map_contents == false
|
53
|
-
|
54
52
|
start = Util.now
|
55
53
|
|
56
54
|
indent_type = parse_indent_type(indent_type)
|
@@ -89,6 +87,7 @@ module Sass
|
|
89
87
|
file: file,
|
90
88
|
out_file: out_file,
|
91
89
|
source_map: source_map,
|
90
|
+
source_map_contents: source_map_contents,
|
92
91
|
source_map_root: source_map_root)
|
93
92
|
|
94
93
|
css = post_process_css(css: message.success.css,
|
@@ -103,7 +102,7 @@ module Sass
|
|
103
102
|
|
104
103
|
finish = Util.now
|
105
104
|
|
106
|
-
stats =
|
105
|
+
stats = RenderResultStats.new(file.nil? ? 'data' : file, start, finish, finish - start)
|
107
106
|
|
108
107
|
RenderResult.new(css, map, stats)
|
109
108
|
end
|
@@ -122,6 +121,7 @@ module Sass
|
|
122
121
|
file:,
|
123
122
|
out_file:,
|
124
123
|
source_map:,
|
124
|
+
source_map_contents:,
|
125
125
|
source_map_root:)
|
126
126
|
return if map.nil? || map.empty?
|
127
127
|
|
@@ -146,10 +146,15 @@ module Sass
|
|
146
146
|
map_data['file'] = 'stdin.css'
|
147
147
|
end
|
148
148
|
|
149
|
+
map_data['sourcesContent'] = [] if source_map_contents
|
150
|
+
|
149
151
|
map_data['sources'].map! do |source|
|
150
152
|
if source.start_with? Util::FILE_PROTOCOL
|
151
|
-
|
153
|
+
path = Util.path(source)
|
154
|
+
map_data['sourcesContent'].push(File.read(path)) if source_map_contents
|
155
|
+
Util.relative(source_map_dir, path)
|
152
156
|
else
|
157
|
+
map_data['sourcesContent'].push(nil) if source_map_contents
|
153
158
|
source
|
154
159
|
end
|
155
160
|
end
|
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/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
@@ -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
|
+
read @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,42 +58,38 @@ module Sass
|
|
58
58
|
|
59
59
|
private
|
60
60
|
|
61
|
-
def
|
61
|
+
def receive_message(error, message)
|
62
|
+
@observerable_mutex.synchronize do
|
63
|
+
changed
|
64
|
+
notify_observers error, message
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def pipe(readable, writeable)
|
62
69
|
Thread.new do
|
63
70
|
loop do
|
64
|
-
|
65
|
-
loop do
|
66
|
-
byte = @stdout.readbyte
|
67
|
-
length += (byte & 0x7f) << bits
|
68
|
-
bits += 7
|
69
|
-
break if byte <= 0x7f
|
70
|
-
end
|
71
|
-
payload = @stdout.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
|
71
|
+
writeable.write readable.readline
|
77
72
|
rescue Interrupt
|
78
73
|
break
|
79
74
|
rescue IOError => e
|
80
|
-
|
75
|
+
receive_message(e, nil)
|
81
76
|
close
|
82
77
|
break
|
83
78
|
end
|
84
79
|
end
|
85
80
|
end
|
86
81
|
|
87
|
-
def
|
82
|
+
def read(readable)
|
88
83
|
Thread.new do
|
89
84
|
loop do
|
90
|
-
|
85
|
+
length = read_varint(readable)
|
86
|
+
payload = readable.read(length)
|
87
|
+
message = EmbeddedProtocol::OutboundMessage.decode payload
|
88
|
+
receive_message(nil, message[message.message.to_s])
|
91
89
|
rescue Interrupt
|
92
90
|
break
|
93
91
|
rescue IOError => e
|
94
|
-
|
95
|
-
notify_observers e, nil
|
96
|
-
end
|
92
|
+
receive_message(e, nil)
|
97
93
|
close
|
98
94
|
break
|
99
95
|
end
|
@@ -102,13 +98,27 @@ module Sass
|
|
102
98
|
|
103
99
|
def write(payload)
|
104
100
|
@stdin_mutex.synchronize do
|
105
|
-
|
106
|
-
while length.positive?
|
107
|
-
@stdin.write ((length > 0x7f ? 0x80 : 0) | (length & 0x7f)).chr
|
108
|
-
length >>= 7
|
109
|
-
end
|
101
|
+
write_varint(@stdin, payload.length)
|
110
102
|
@stdin.write payload
|
111
103
|
end
|
112
104
|
end
|
105
|
+
|
106
|
+
def read_varint(readable)
|
107
|
+
varint = bits = 0
|
108
|
+
loop do
|
109
|
+
byte = readable.readbyte
|
110
|
+
varint += (byte & 0x7f) << bits
|
111
|
+
bits += 7
|
112
|
+
break if byte <= 0x7f
|
113
|
+
end
|
114
|
+
varint
|
115
|
+
end
|
116
|
+
|
117
|
+
def write_varint(writeable, varint)
|
118
|
+
while varint.positive?
|
119
|
+
writeable.write ((varint > 0x7f ? 0x80 : 0) | (varint & 0x7f)).chr
|
120
|
+
varint >>= 7
|
121
|
+
end
|
122
|
+
end
|
113
123
|
end
|
114
124
|
end
|
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.
|
4
|
+
version: 0.7.3
|
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-30 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.3
|
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: []
|
data/.github/workflows/build.yml
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
name: build
|
2
|
-
|
3
|
-
on:
|
4
|
-
push:
|
5
|
-
branches: [ main ]
|
6
|
-
pull_request:
|
7
|
-
branches: [ main ]
|
8
|
-
|
9
|
-
jobs:
|
10
|
-
build:
|
11
|
-
|
12
|
-
runs-on: ${{ matrix.os }}
|
13
|
-
|
14
|
-
strategy:
|
15
|
-
matrix:
|
16
|
-
os: [macos-latest, ubuntu-latest, windows-latest]
|
17
|
-
ruby-version: ['2.6', '2.7', '3.0']
|
18
|
-
|
19
|
-
steps:
|
20
|
-
- name: Checkout
|
21
|
-
uses: actions/checkout@v2
|
22
|
-
|
23
|
-
- name: Set up Ruby
|
24
|
-
uses: ruby/setup-ruby@v1
|
25
|
-
with:
|
26
|
-
ruby-version: ${{ matrix.ruby-version }}
|
27
|
-
bundler-cache: true
|
28
|
-
|
29
|
-
- name: Download dart-sass-embedded
|
30
|
-
run: bundle exec rake extconf
|
31
|
-
env:
|
32
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
33
|
-
|
34
|
-
- name: Test
|
35
|
-
run: bundle exec rake
|
36
|
-
|
37
|
-
- name: Install Gem
|
38
|
-
run: rake install
|
39
|
-
env:
|
40
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
41
|
-
|
42
|
-
- name: Test Gem
|
43
|
-
run: |-
|
44
|
-
ruby -r sass -e "puts Sass.render(data: 'h1 { color: black; }')[:css]"
|