sass-embedded 0.13.4 → 0.16.1

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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/ext/sass/extconf.rb +52 -1
  3. data/lib/sass/compile_error.rb +1 -10
  4. data/lib/sass/compile_result.rb +1 -5
  5. data/lib/sass/embedded/channel.rb +2 -2
  6. data/lib/sass/embedded/compile_context/function_registry.rb +83 -0
  7. data/lib/sass/embedded/compile_context/importer_registry.rb +97 -0
  8. data/lib/sass/embedded/compile_context.rb +21 -176
  9. data/lib/sass/embedded/compiler/path.rb +1 -3
  10. data/lib/sass/embedded/compiler/requirements.rb +1 -1
  11. data/lib/sass/embedded/compiler.rb +7 -19
  12. data/lib/sass/embedded/{render.rb → legacy.rb} +79 -3
  13. data/lib/sass/embedded/observer.rb +2 -0
  14. data/lib/sass/embedded/protofier.rb +329 -0
  15. data/lib/sass/embedded/version.rb +1 -1
  16. data/lib/sass/embedded/version_context.rb +2 -3
  17. data/lib/sass/embedded.rb +39 -54
  18. data/lib/sass/embedded_protocol.rb +0 -6
  19. data/lib/sass/logger/source_location.rb +3 -9
  20. data/lib/sass/logger/source_span.rb +1 -13
  21. data/lib/sass/logger.rb +3 -3
  22. data/lib/sass/script_error.rb +5 -0
  23. data/lib/sass/value/argument_list.rb +24 -0
  24. data/lib/sass/value/boolean.rb +42 -0
  25. data/lib/sass/value/color.rb +213 -0
  26. data/lib/sass/value/function.rb +35 -0
  27. data/lib/sass/value/fuzzy_math.rb +81 -0
  28. data/lib/sass/value/list.rb +60 -0
  29. data/lib/sass/value/map.rb +57 -0
  30. data/lib/sass/value/null.rb +39 -0
  31. data/lib/sass/value/number/unit.rb +186 -0
  32. data/lib/sass/value/number.rb +272 -0
  33. data/lib/sass/value/string.rb +43 -0
  34. data/lib/sass/value.rb +92 -0
  35. data/lib/sass.rb +47 -48
  36. metadata +26 -57
  37. data/lib/sass/embedded/platform.rb +0 -55
  38. data/lib/sass/embedded/url.rb +0 -36
  39. data/lib/sass/file_importer.rb +0 -10
  40. data/lib/sass/importer.rb +0 -14
  41. data/lib/sass/importer_result.rb +0 -14
data/lib/sass.rb CHANGED
@@ -1,83 +1,82 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'sass/compile_error'
4
+ require_relative 'sass/compile_result'
3
5
  require_relative 'sass/embedded'
6
+ require_relative 'sass/embedded/channel'
7
+ require_relative 'sass/embedded/observer'
8
+ require_relative 'sass/embedded/compile_context'
9
+ require_relative 'sass/embedded/compile_context/function_registry'
10
+ require_relative 'sass/embedded/compile_context/importer_registry'
11
+ require_relative 'sass/embedded/compiler'
12
+ require_relative 'sass/embedded/compiler/path'
13
+ require_relative 'sass/embedded_protocol'
14
+ require_relative 'sass/embedded/legacy'
15
+ require_relative 'sass/embedded/protocol_error'
16
+ require_relative 'sass/embedded/protofier'
17
+ require_relative 'sass/embedded/version'
18
+ require_relative 'sass/embedded/version_context'
19
+ require_relative 'sass/logger'
20
+ require_relative 'sass/logger/source_location'
21
+ require_relative 'sass/logger/source_span'
22
+ require_relative 'sass/script_error'
23
+ require_relative 'sass/value'
24
+ require_relative 'sass/value/list'
25
+ require_relative 'sass/value/argument_list'
26
+ require_relative 'sass/value/boolean'
27
+ require_relative 'sass/value/color'
28
+ require_relative 'sass/value/function'
29
+ require_relative 'sass/value/fuzzy_math'
30
+ require_relative 'sass/value/map'
31
+ require_relative 'sass/value/null'
32
+ require_relative 'sass/value/number'
33
+ require_relative 'sass/value/number/unit'
34
+ require_relative 'sass/value/string'
4
35
 
5
- # The Sass module. This communicates with Embedded Dart Sass using
6
- # the Embedded Sass protocol.
36
+ # The Sass module.
37
+ #
38
+ # This communicates with Embedded Dart Sass using the Embedded Sass protocol.
7
39
  module Sass
8
40
  class << self
9
- # The global {.compile} method. This instantiates a global {Embedded} instance
10
- # and calls {Embedded#compile}.
41
+ # The global {.compile} method.
11
42
  #
12
- # See {Embedded#compile} for supported options.
43
+ # This instantiates a global {Embedded} instance and calls {Embedded#compile}.
44
+ #
45
+ # See {Embedded#compile} for keyword arguments.
13
46
  #
14
47
  # @example
15
48
  # Sass.compile('style.scss')
16
49
  # @return [CompileResult]
17
50
  # @raise [CompileError]
18
- # @raise [ProtocolError]
51
+ # @raise [Embedded::ProtocolError]
19
52
  def compile(path, **kwargs)
20
53
  instance.compile(path, **kwargs)
21
54
  end
22
55
 
23
- # The global {.compile_string} method. This instantiates a global {Embedded} instance
24
- # and calls {Embedded#compile_string}.
56
+ # The global {.compile_string} method.
57
+ #
58
+ # This instantiates a global {Embedded} instance and calls {Embedded#compile_string}.
25
59
  #
26
- # See {Embedded#compile_string} for supported options.
60
+ # See {Embedded#compile_string} for keyword arguments.
27
61
  #
28
62
  # @example
29
63
  # Sass.compile_string('h1 { font-size: 40px; }')
30
64
  # @return [CompileResult]
31
65
  # @raise [CompileError]
32
- # @raise [ProtocolError]
66
+ # @raise [Embedded::ProtocolError]
33
67
  def compile_string(source, **kwargs)
34
68
  instance.compile_string(source, **kwargs)
35
69
  end
36
70
 
37
- # @deprecated
38
- # The global {.include_paths} for Sass files. This is meant for plugins and
39
- # libraries to register the paths to their Sass stylesheets to that they may
40
- # be included via `@import` or `@use`. This include path is used by every
41
- # instance of {Sass::Embedded}. They are lower-precedence than any include
42
- # paths passed in via the `include_paths` option.
43
- #
44
- # If the `SASS_PATH` environment variable is set,
45
- # the initial value of `include_paths` will be initialized based on that.
46
- # The variable should be a colon-separated list of path names
47
- # (semicolon-separated on Windows).
71
+ # The global {.info} method.
48
72
  #
49
- # @example
50
- # Sass.include_paths << File.dirname(__FILE__) + '/sass'
51
- # @return [Array]
52
- def include_paths
53
- Embedded.include_paths
54
- end
55
-
56
- # The global {.info} method. This instantiates a global {Embedded} instance
57
- # and calls {Embedded#info}.
73
+ # This instantiates a global {Embedded} instance and calls {Embedded#info}.
58
74
  #
59
- # @raise [ProtocolError]
75
+ # @raise [Embedded::ProtocolError]
60
76
  def info
61
77
  instance.info
62
78
  end
63
79
 
64
- # @deprecated
65
- # The global {.render} method. This instantiates a global {Embedded} instance
66
- # and calls {Embedded#render}.
67
- #
68
- # See {Embedded#render} for supported options.
69
- #
70
- # @example
71
- # Sass.render(data: 'h1 { font-size: 40px; }')
72
- # @example
73
- # Sass.render(file: 'style.css')
74
- # @return [Result]
75
- # @raise [ProtocolError]
76
- # @raise [RenderError]
77
- def render(**kwargs)
78
- instance.render(**kwargs)
79
- end
80
-
81
80
  private
82
81
 
83
82
  def instance
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.13.4
4
+ version: 0.16.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - なつき
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-08 00:00:00.000000000 Z
11
+ date: 2022-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-protobuf
@@ -24,62 +24,34 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.19.0
27
- - !ruby/object:Gem::Dependency
28
- name: minitest
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: 5.15.0
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: 5.15.0
41
- - !ruby/object:Gem::Dependency
42
- name: minitest-around
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: 0.5.0
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: 0.5.0
55
27
  - !ruby/object:Gem::Dependency
56
28
  name: rake
57
29
  requirement: !ruby/object:Gem::Requirement
58
30
  requirements:
59
31
  - - "~>"
60
32
  - !ruby/object:Gem::Version
61
- version: 13.0.6
33
+ version: 13.0.0
62
34
  type: :development
63
35
  prerelease: false
64
36
  version_requirements: !ruby/object:Gem::Requirement
65
37
  requirements:
66
38
  - - "~>"
67
39
  - !ruby/object:Gem::Version
68
- version: 13.0.6
40
+ version: 13.0.0
69
41
  - !ruby/object:Gem::Dependency
70
42
  name: rspec
71
43
  requirement: !ruby/object:Gem::Requirement
72
44
  requirements:
73
45
  - - "~>"
74
46
  - !ruby/object:Gem::Version
75
- version: 3.10.0
47
+ version: 3.11.0
76
48
  type: :development
77
49
  prerelease: false
78
50
  version_requirements: !ruby/object:Gem::Requirement
79
51
  requirements:
80
52
  - - "~>"
81
53
  - !ruby/object:Gem::Version
82
- version: 3.10.0
54
+ version: 3.11.0
83
55
  - !ruby/object:Gem::Dependency
84
56
  name: rubocop
85
57
  requirement: !ruby/object:Gem::Requirement
@@ -94,20 +66,6 @@ dependencies:
94
66
  - - "~>"
95
67
  - !ruby/object:Gem::Version
96
68
  version: 1.25.0
97
- - !ruby/object:Gem::Dependency
98
- name: rubocop-minitest
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: 0.17.0
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: 0.17.0
111
69
  - !ruby/object:Gem::Dependency
112
70
  name: rubocop-performance
113
71
  requirement: !ruby/object:Gem::Requirement
@@ -171,29 +129,40 @@ files:
171
129
  - lib/sass/embedded.rb
172
130
  - lib/sass/embedded/channel.rb
173
131
  - lib/sass/embedded/compile_context.rb
132
+ - lib/sass/embedded/compile_context/function_registry.rb
133
+ - lib/sass/embedded/compile_context/importer_registry.rb
174
134
  - lib/sass/embedded/compiler.rb
175
135
  - lib/sass/embedded/compiler/path.rb
176
136
  - lib/sass/embedded/compiler/requirements.rb
137
+ - lib/sass/embedded/legacy.rb
177
138
  - lib/sass/embedded/observer.rb
178
- - lib/sass/embedded/platform.rb
179
139
  - lib/sass/embedded/protocol_error.rb
180
- - lib/sass/embedded/render.rb
181
- - lib/sass/embedded/url.rb
140
+ - lib/sass/embedded/protofier.rb
182
141
  - lib/sass/embedded/version.rb
183
142
  - lib/sass/embedded/version_context.rb
184
143
  - lib/sass/embedded_protocol.rb
185
- - lib/sass/file_importer.rb
186
- - lib/sass/importer.rb
187
- - lib/sass/importer_result.rb
188
144
  - lib/sass/logger.rb
189
145
  - lib/sass/logger/source_location.rb
190
146
  - lib/sass/logger/source_span.rb
147
+ - lib/sass/script_error.rb
148
+ - lib/sass/value.rb
149
+ - lib/sass/value/argument_list.rb
150
+ - lib/sass/value/boolean.rb
151
+ - lib/sass/value/color.rb
152
+ - lib/sass/value/function.rb
153
+ - lib/sass/value/fuzzy_math.rb
154
+ - lib/sass/value/list.rb
155
+ - lib/sass/value/map.rb
156
+ - lib/sass/value/null.rb
157
+ - lib/sass/value/number.rb
158
+ - lib/sass/value/number/unit.rb
159
+ - lib/sass/value/string.rb
191
160
  homepage: https://github.com/ntkme/sass-embedded-host-ruby
192
161
  licenses:
193
162
  - MIT
194
163
  metadata:
195
- documentation_uri: https://www.rubydoc.info/gems/sass-embedded/0.13.4
196
- source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v0.13.4
164
+ documentation_uri: https://www.rubydoc.info/gems/sass-embedded/0.16.1
165
+ source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v0.16.1
197
166
  funding_uri: https://github.com/sponsors/ntkme
198
167
  post_install_message:
199
168
  rdoc_options: []
@@ -210,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
179
  - !ruby/object:Gem::Version
211
180
  version: '0'
212
181
  requirements: []
213
- rubygems_version: 3.3.3
182
+ rubygems_version: 3.3.7
214
183
  signing_key:
215
184
  specification_version: 4
216
185
  summary: Use dart-sass with Ruby!
@@ -1,55 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Sass
4
- class Embedded
5
- module Platform
6
- OS = case RbConfig::CONFIG['host_os'].downcase
7
- when /linux/
8
- 'linux'
9
- when /darwin/
10
- 'darwin'
11
- when /freebsd/
12
- 'freebsd'
13
- when /netbsd/
14
- 'netbsd'
15
- when /openbsd/
16
- 'openbsd'
17
- when /dragonfly/
18
- 'dragonflybsd'
19
- when /sunos|solaris/
20
- 'solaris'
21
- when /mingw|mswin/
22
- 'windows'
23
- else
24
- RbConfig::CONFIG['host_os'].downcase
25
- end
26
-
27
- OSVERSION = RbConfig::CONFIG['host_os'].gsub(/[^\d]/, '').to_i
28
-
29
- CPU = RbConfig::CONFIG['host_cpu']
30
-
31
- ARCH = case CPU.downcase
32
- when /amd64|x86_64|x64/
33
- 'x86_64'
34
- when /i\d86|x86|i86pc/
35
- 'i386'
36
- when /ppc64|powerpc64/
37
- 'powerpc64'
38
- when /ppc|powerpc/
39
- 'powerpc'
40
- when /sparcv9|sparc64/
41
- 'sparcv9'
42
- when /arm64|aarch64/ # MacOS calls it "arm64", other operating systems "aarch64"
43
- 'aarch64'
44
- when /^arm/
45
- if OS == 'darwin' # Ruby before 3.0 reports "arm" instead of "arm64" as host_cpu on darwin
46
- 'aarch64'
47
- else
48
- 'arm'
49
- end
50
- else
51
- RbConfig::CONFIG['host_cpu']
52
- end
53
- end
54
- end
55
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'uri'
4
- require_relative 'platform'
5
-
6
- module Sass
7
- class Embedded
8
- # The {Url} module.
9
- module Url
10
- # The {::URI::Parser} that is in consistent with RFC 2396 (URI Generic Syntax) and dart:core library.
11
- URI_PARSER = URI::Parser.new({ RESERVED: ';/?:@&=+$,' })
12
-
13
- FILE_SCHEME = 'file://'
14
-
15
- private_constant :URI_PARSER, :FILE_SCHEME
16
-
17
- module_function
18
-
19
- def path_to_file_url(path)
20
- if File.absolute_path? path
21
- URI_PARSER.escape "#{FILE_SCHEME}#{Platform::OS == 'windows' ? File::SEPARATOR : ''}#{path}"
22
- else
23
- URI_PARSER.escape path
24
- end
25
- end
26
-
27
- def file_url_to_path(url)
28
- if url.start_with? FILE_SCHEME
29
- URI_PARSER.unescape url[(FILE_SCHEME.length + (Platform::OS == 'windows' ? 1 : 0))..]
30
- else
31
- URI_PARSER.unescape url
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Sass
4
- # The {FileImporter} interface.
5
- class FileImporter
6
- def find_file_url(url, from_import:) # rubocop:disable Lint/UnusedMethodArgument
7
- raise NotImplementedError, 'FileImporter#find_file_url must be implemented'
8
- end
9
- end
10
- end
data/lib/sass/importer.rb DELETED
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Sass
4
- # The {Importer} interface.
5
- class Importer
6
- def canonicalize(url) # rubocop:disable Lint/UnusedMethodArgument
7
- raise NotImplementedError, 'Importer#canonicalize must be implemented'
8
- end
9
-
10
- def load(canonical_url) # rubocop:disable Lint/UnusedMethodArgument
11
- raise NotImplementedError, 'Importer#load must be implemented'
12
- end
13
- end
14
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Sass
4
- # The {ImporterResult} of {Importer#load}.
5
- class ImporterResult
6
- attr_reader :contents, :syntax, :source_map_url
7
-
8
- def initialize(contents, syntax, source_map_url = nil)
9
- @contents = contents
10
- @syntax = syntax
11
- @source_map_url = source_map_url
12
- end
13
- end
14
- end