sass-embedded 0.8.1 → 0.9.2
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/extconf.rb +172 -169
- data/lib/sass/embedded/channel.rb +62 -0
- data/lib/sass/embedded/compile_context.rb +254 -0
- data/lib/sass/embedded/compiler/path.rb +13 -0
- data/lib/sass/embedded/compiler/requirements.rb +9 -0
- data/lib/sass/embedded/compiler.rb +156 -0
- data/lib/sass/embedded/error.rb +29 -0
- data/lib/sass/embedded/observer.rb +47 -0
- data/lib/sass/embedded/platform.rb +55 -0
- data/lib/sass/embedded/result.rb +28 -0
- data/lib/sass/embedded/util.rb +33 -0
- data/lib/sass/{version.rb → embedded/version.rb} +3 -1
- data/lib/sass/embedded/version_context.rb +36 -0
- data/lib/sass/embedded.rb +21 -16
- data/lib/sass/embedded_protocol.rb +9 -0
- data/lib/sass.rb +15 -24
- metadata +23 -21
- data/lib/sass/compile.rb +0 -249
- data/lib/sass/compiler.rb +0 -13
- data/lib/sass/error.rb +0 -27
- data/lib/sass/info.rb +0 -33
- data/lib/sass/observer.rb +0 -40
- data/lib/sass/platform.rb +0 -53
- data/lib/sass/result.rb +0 -30
- data/lib/sass/struct.rb +0 -20
- data/lib/sass/transport.rb +0 -127
- data/lib/sass/util.rb +0 -31
data/lib/sass/result.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Sass
|
4
|
-
# The {RenderResult} of {Embedded#render}.
|
5
|
-
class RenderResult
|
6
|
-
include Struct
|
7
|
-
|
8
|
-
attr_reader :css, :map, :stats
|
9
|
-
|
10
|
-
def initialize(css, map, stats)
|
11
|
-
@css = css
|
12
|
-
@map = map
|
13
|
-
@stats = stats
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
# The {RenderResultStats} of {Embedded#render}.
|
18
|
-
class RenderResultStats
|
19
|
-
include Struct
|
20
|
-
|
21
|
-
attr_reader :entry, :start, :end, :duration
|
22
|
-
|
23
|
-
def initialize(entry, start, finish, duration)
|
24
|
-
@entry = entry
|
25
|
-
@start = start
|
26
|
-
@end = finish
|
27
|
-
@duration = duration
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
data/lib/sass/struct.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Sass
|
4
|
-
# The {Struct} module.
|
5
|
-
module Struct
|
6
|
-
def [](key)
|
7
|
-
instance_variable_get("@#{key}".to_sym)
|
8
|
-
end
|
9
|
-
|
10
|
-
def to_h
|
11
|
-
instance_variables.map do |variable|
|
12
|
-
[variable[1..].to_sym, instance_variable_get(variable)]
|
13
|
-
end.to_h
|
14
|
-
end
|
15
|
-
|
16
|
-
def to_s
|
17
|
-
to_h.to_s
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
data/lib/sass/transport.rb
DELETED
@@ -1,127 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'open3'
|
4
|
-
require 'observer'
|
5
|
-
require_relative '../../ext/sass/embedded_sass_pb'
|
6
|
-
|
7
|
-
module Sass
|
8
|
-
# The {::Observable} {Transport} for low level communication with
|
9
|
-
# `dart-sass-embedded` using protocol buffers via stdio. Received messages
|
10
|
-
# can be observed by an {Observer}.
|
11
|
-
class Transport
|
12
|
-
include Observable
|
13
|
-
|
14
|
-
ONEOF_MESSAGE = EmbeddedProtocol::InboundMessage
|
15
|
-
.descriptor
|
16
|
-
.lookup_oneof('message')
|
17
|
-
.collect do |field_descriptor|
|
18
|
-
[field_descriptor.subtype, field_descriptor.name]
|
19
|
-
end.to_h
|
20
|
-
|
21
|
-
private_constant :ONEOF_MESSAGE
|
22
|
-
|
23
|
-
def initialize
|
24
|
-
@observerable_mutex = Mutex.new
|
25
|
-
@stdin_mutex = Mutex.new
|
26
|
-
@stdin, @stdout, @stderr, @wait_thread = Open3.popen3(Compiler::DART_SASS_EMBEDDED)
|
27
|
-
|
28
|
-
[@stdin, @stdout].each(&:binmode)
|
29
|
-
|
30
|
-
poll do
|
31
|
-
warn(@stderr.readline, uplevel: 1)
|
32
|
-
end
|
33
|
-
poll do
|
34
|
-
receive_proto read
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def add_observer(*args)
|
39
|
-
@observerable_mutex.synchronize do
|
40
|
-
super(*args)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def send_message(message)
|
45
|
-
write EmbeddedProtocol::InboundMessage.new(
|
46
|
-
ONEOF_MESSAGE[message.class.descriptor] => message
|
47
|
-
).to_proto
|
48
|
-
end
|
49
|
-
|
50
|
-
def close
|
51
|
-
delete_observers
|
52
|
-
@stdin.close unless @stdin.closed?
|
53
|
-
@stdout.close unless @stdout.closed?
|
54
|
-
@stderr.close unless @stderr.closed?
|
55
|
-
nil
|
56
|
-
end
|
57
|
-
|
58
|
-
def closed?
|
59
|
-
@stdin.closed?
|
60
|
-
end
|
61
|
-
|
62
|
-
private
|
63
|
-
|
64
|
-
def poll
|
65
|
-
Thread.new do
|
66
|
-
loop do
|
67
|
-
yield
|
68
|
-
rescue StandardError => e
|
69
|
-
notify_observers(e, nil)
|
70
|
-
close
|
71
|
-
break
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def notify_observers(*args)
|
77
|
-
@observerable_mutex.synchronize do
|
78
|
-
changed
|
79
|
-
super(*args)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
def receive_proto(proto)
|
84
|
-
payload = EmbeddedProtocol::OutboundMessage.decode(proto)
|
85
|
-
message = payload[payload.message.to_s]
|
86
|
-
case message
|
87
|
-
when EmbeddedProtocol::ProtocolError
|
88
|
-
raise ProtocolError, message.message
|
89
|
-
else
|
90
|
-
notify_observers(nil, message)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
def read
|
95
|
-
length = read_varint(@stdout)
|
96
|
-
@stdout.read(length)
|
97
|
-
end
|
98
|
-
|
99
|
-
def write(payload)
|
100
|
-
@stdin_mutex.synchronize do
|
101
|
-
write_varint(@stdin, payload.length)
|
102
|
-
@stdin.write payload
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
def read_varint(readable)
|
107
|
-
value = bits = 0
|
108
|
-
loop do
|
109
|
-
byte = readable.readbyte
|
110
|
-
value |= (byte & 0x7f) << bits
|
111
|
-
bits += 7
|
112
|
-
break if byte < 0x80
|
113
|
-
end
|
114
|
-
value
|
115
|
-
end
|
116
|
-
|
117
|
-
def write_varint(writeable, value)
|
118
|
-
bytes = []
|
119
|
-
until value < 0x80
|
120
|
-
bytes << (0x80 | (value & 0x7f))
|
121
|
-
value >>= 7
|
122
|
-
end
|
123
|
-
bytes << value
|
124
|
-
writeable.write bytes.pack('C*')
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
data/lib/sass/util.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'pathname'
|
4
|
-
require 'uri'
|
5
|
-
|
6
|
-
module Sass
|
7
|
-
# The {Util} module.
|
8
|
-
module Util
|
9
|
-
module_function
|
10
|
-
|
11
|
-
URI_PARSER = URI::Parser.new({ RESERVED: ';/?:@&=+$,' })
|
12
|
-
|
13
|
-
private_constant :URI_PARSER
|
14
|
-
|
15
|
-
def file_uri_from_path(path)
|
16
|
-
"file://#{Platform::OS == 'windows' ? File::SEPARATOR : ''}#{URI_PARSER.escape(path)}"
|
17
|
-
end
|
18
|
-
|
19
|
-
def path_from_file_uri(file_uri)
|
20
|
-
URI_PARSER.unescape(file_uri[(Platform::OS == 'windows' ? 8 : 7)..])
|
21
|
-
end
|
22
|
-
|
23
|
-
def relative_path(from, to)
|
24
|
-
Pathname.new(File.absolute_path(to)).relative_path_from(Pathname.new(File.absolute_path(from))).to_s
|
25
|
-
end
|
26
|
-
|
27
|
-
def now
|
28
|
-
(Time.now.to_f * 1000).to_i
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|