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.
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
@@ -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