sass-embedded 0.7.4 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8a920bc1fd2f9767c87dcc604c8ad44266b285310a7b0e9e46cf65c7a610ba4d
4
- data.tar.gz: 8041922c104b94fb0bc4634735444315692a0d9a37a50db3cf213a9914455bb0
3
+ metadata.gz: 107eda35f850f6a5d3744a89ba8dcd71abf8ea76659f0c51710ecde9f3233c53
4
+ data.tar.gz: f3e8d8d963f9a3bfffa00908b91e90d17fd4e9a04046a6c9a739e16b3eae5cb5
5
5
  SHA512:
6
- metadata.gz: 180d0212926afd166fafc991cf30e8af33adc843171ec69d53a4b42ad7d587857e77a224cf8c25f343af7bacd6b76eeb5f2b93fd7c9886d2fd83105de3d891cc
7
- data.tar.gz: 3d91c28089e6157b815a63cdc5b93d8adc2bb81f56828d6e3554c633ed31d845c070361797f32b45ae3bfbc39e034866a2c8e17f80a2222b5c827f9a2669a985
6
+ metadata.gz: a9e2dcfbd314b616b66c53511fe021006c20e0a359bb9769db7bf87d14d9377443e245abf88f5da6e1b4414d34d4d05e529885b79169db7c86f8029ed3c7f1f5
7
+ data.tar.gz: d8ade839bab88a4ff4098f1b045b31dfd532570dbadcb76866fc3c13be603c445583ea2fe2b86aa9ba7b2472272f992d9dd28ce21eb64aaf8693d1ec557660b9
data/lib/sass/embedded.rb CHANGED
@@ -23,7 +23,7 @@ module Sass
23
23
  #
24
24
  # @raise [ProtocolError]
25
25
  def info
26
- @info ||= Version.new(@transport, next_id).message
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 = Render.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).message
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(
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 Version
5
+ class VersionContext
6
6
  include Observer
7
7
 
8
8
  def initialize(transport, id)
data/lib/sass/observer.rb CHANGED
@@ -12,7 +12,7 @@ module Sass
12
12
  @transport.add_observer self
13
13
  end
14
14
 
15
- def message
15
+ def receive_message
16
16
  @mutex.synchronize do
17
17
  @condition_variable.wait(@mutex) if @error.nil? && @message.nil?
18
18
  end
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 Render
5
+ class RenderContext
6
6
  include Observer
7
7
 
8
8
  def initialize(transport, id,
@@ -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
- pipe @stderr, $stderr
32
- read @stdout
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,44 +62,37 @@ module Sass
58
62
 
59
63
  private
60
64
 
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)
65
+ def poll
69
66
  Thread.new do
70
67
  loop do
71
- writeable.write readable.readline
68
+ yield
72
69
  rescue Interrupt
73
70
  break
74
71
  rescue IOError => e
75
- receive_message(e, nil)
72
+ notify_observers(e, nil)
76
73
  close
77
74
  break
78
75
  end
79
76
  end
80
77
  end
81
78
 
82
- def read(readable)
83
- Thread.new do
84
- loop do
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])
89
- rescue Interrupt
90
- break
91
- rescue IOError => e
92
- receive_message(e, nil)
93
- close
94
- break
95
- end
79
+ def notify_observers(*args)
80
+ @observerable_mutex.synchronize do
81
+ changed
82
+ super(*args)
96
83
  end
97
84
  end
98
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
+
99
96
  def write(payload)
100
97
  @stdin_mutex.synchronize do
101
98
  write_varint(@stdin, payload.length)
data/lib/sass/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sass
4
- VERSION = '0.7.4'
4
+ VERSION = '0.7.5'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sass-embedded
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.4
4
+ version: 0.7.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - なつき
@@ -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.4
168
+ source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v0.7.5
169
169
  post_install_message:
170
170
  rdoc_options: []
171
171
  require_paths: