sass-embedded 0.7.1 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e292d8b2c097a1d19fd12d808600c91ae39dbc93180bc34cd2c56bf0cebf494c
4
- data.tar.gz: 6507777d01910a91c93e793a46efdcc6990ccc0a422881643a0e5b7f395892ff
3
+ metadata.gz: 420195776d51e7fcd3d510db9445f0a7bb4c926613515e1a849a865f4bd6447d
4
+ data.tar.gz: 518333274bb5f2b521894075bce89314a47e993b29c84fd54ebdfd38aeab33f3
5
5
  SHA512:
6
- metadata.gz: 79485c6293b91b1b709ab7630f431ab01d8c0af6033ab86c0c11fa05e27c390864fff433a6d91cc5251e5e5a77f11be0709d04eed2c2b8762acef162235ce247
7
- data.tar.gz: b6cce9f847c0681df0891e32044f7a9fea3d79a4c0d1736e192537d07a30763b494750f86f1d843a640c49a13758140e22e40305ce0e07b726d0a223ecb6d28b
6
+ metadata.gz: 52ab4ccf5f0ffd05554749a5669dd474a5e5c8c027e55fd93a8665070182f973a37be5e11a93066d485b89d5144ef893c0cc26fc5892b2fb31b8c6824799462a
7
+ data.tar.gz: 83f042430fa1e8339ea31d63752714ce842994b230e66ba8745695dac997617e9ecc28aad732c7dffc558fb3660471970ec1109d9a2f8f42e172c5ce1dc9f192
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.1'
4
+ VERSION = '0.7.2'
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.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - なつき
@@ -136,7 +136,8 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
- description: Use dart-sass with Ruby!
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.2
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: []
@@ -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]"
data/.gitignore DELETED
@@ -1,45 +0,0 @@
1
- *.gem
2
- *.rbc
3
- /.config
4
- /coverage/
5
- /InstalledFiles
6
- /pkg/
7
- /spec/reports/
8
- /spec/examples.txt
9
- /test/tmp/
10
- /test/version_tmp/
11
- /tmp/
12
-
13
- # Used by dotenv library to load environment variables.
14
- # .env
15
-
16
- # Ignore Byebug command history file.
17
- .byebug_history
18
-
19
- ## Specific to RubyMotion:
20
- .dat*
21
- .repl_history
22
- build/
23
- *.bridgesupport
24
- build-iPhoneOS/
25
- build-iPhoneSimulator/
26
-
27
- ## Documentation cache and generated files:
28
- /.yardoc/
29
- /_yardoc/
30
- /doc/
31
- /rdoc/
32
-
33
- ## Environment normalization:
34
- /.bundle/
35
- /vendor/bundle
36
- /lib/bundler/man/
37
-
38
- # for a library or gem, you might want to ignore these files since the code is
39
- # intended to run in multiple environments; otherwise, check them in:
40
- /Gemfile.lock
41
- /.ruby-version
42
- /.ruby-gemset
43
-
44
- # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
45
- .rvmrc
data/.rubocop.yml DELETED
@@ -1,11 +0,0 @@
1
- AllCops:
2
- Exclude:
3
- - '**/*_pb.rb'
4
- - 'vendor/**/*'
5
-
6
- TargetRubyVersion: 2.6
7
-
8
- NewCops: enable
9
-
10
- Metrics:
11
- Enabled: false
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
- gemspec
data/Rakefile DELETED
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bundler/gem_tasks'
4
-
5
- task default: %i[rubocop test]
6
-
7
- desc 'Download dart-sass-embedded'
8
- task :extconf do
9
- system('make', '-C', 'ext')
10
- end
11
-
12
- desc 'Run all tests'
13
- task test: :extconf do
14
- $LOAD_PATH.unshift('lib', 'test')
15
- Dir.glob('./test/**/*_test.rb').sort.each { |f| require f }
16
- end
17
-
18
- begin
19
- require 'rubocop/rake_task'
20
- RuboCop::RakeTask.new
21
- rescue LoadError
22
- nil
23
- end
data/ext/.gitignore DELETED
@@ -1,3 +0,0 @@
1
- /embedded_sass*
2
- /sass_embedded*
3
- /protoc*
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- lib = File.expand_path('lib', __dir__)
4
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require 'sass/version'
6
-
7
- Gem::Specification.new do |spec|
8
- spec.name = 'sass-embedded'
9
- spec.version = Sass::VERSION
10
- spec.authors = ['なつき']
11
- spec.email = ['i@ntk.me']
12
- spec.summary = 'Use dart-sass with Ruby!'
13
- spec.description = 'Use dart-sass with Ruby!'
14
- spec.homepage = 'https://github.com/ntkme/sass-embedded-host-ruby'
15
- spec.license = 'MIT'
16
-
17
- spec.files = `git ls-files -z`.split("\x0")
18
- spec.extensions = ['ext/extconf.rb']
19
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
-
22
- spec.required_ruby_version = '>= 2.6.0'
23
-
24
- spec.require_paths = ['lib']
25
-
26
- spec.platform = Gem::Platform::RUBY
27
-
28
- spec.add_dependency 'google-protobuf', '~> 3.17.0'
29
-
30
- spec.add_development_dependency 'bundler'
31
- spec.add_development_dependency 'minitest', '~> 5.14.4'
32
- spec.add_development_dependency 'minitest-around'
33
- spec.add_development_dependency 'rake'
34
- spec.add_development_dependency 'rake-compiler'
35
- spec.add_development_dependency 'rubocop'
36
- spec.add_development_dependency 'rubocop-minitest'
37
- spec.add_development_dependency 'rubocop-rake'
38
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'test_helper'
4
-
5
- module Sass
6
- class ConcurrencyTest < MiniTest::Test
7
- include TempFileTest
8
-
9
- def setup
10
- @embedded = Embedded.new
11
- end
12
-
13
- def teardown
14
- @embedded.close
15
- end
16
-
17
- def render(data)
18
- @embedded.render(data: data).css
19
- end
20
-
21
- def test_concurrency
22
- 10.times do
23
- threads = []
24
- 10.times do |i|
25
- threads << Thread.new(i) do |id|
26
- output = @embedded.render(data: "div { width: #{id} }").css
27
- assert_match(/#{id}/, output)
28
- end
29
- end
30
- threads.each(&:join)
31
- end
32
- end
33
- end
34
- end
@@ -1,387 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'test_helper'
4
-
5
- module Sass
6
- class FunctionsTest < MiniTest::Test
7
- def setup
8
- @embedded = Embedded.new
9
- end
10
-
11
- def teardown
12
- @embedded.close
13
- end
14
-
15
- # rubocop:disable Layout/LineLength
16
-
17
- def render(sass)
18
- @embedded.render(data: sass,
19
- functions: {
20
- 'javascript_path($path)': lambda { |path|
21
- path.string.text = "/js/#{path.string.text}"
22
- path
23
- },
24
- 'stylesheet_path($path)': lambda { |path|
25
- path.string.text = "/css/#{path.string.text}"
26
- path
27
- },
28
- 'sass_return_path($path)': lambda { |path|
29
- path
30
- },
31
- 'no_return_path($path)': lambda { |_path|
32
- EmbeddedProtocol::Value.new(
33
- singleton: EmbeddedProtocol::SingletonValue::NULL
34
- )
35
- },
36
- 'optional_arguments($path, $optional: null)': lambda { |path, optional|
37
- EmbeddedProtocol::Value.new(
38
- string: EmbeddedProtocol::Value::String.new(
39
- text: "#{path.string.text}/#{optional.singleton == :NULL ? 'bar' : optional.string.text}",
40
- quoted: true
41
- )
42
- )
43
- },
44
- 'function_that_raises_errors()': lambda {
45
- raise StandardError,
46
- 'Intentional wrong thing happened somewhere inside the custom function'
47
- },
48
- 'nice_color_argument($color)': lambda { |color|
49
- color
50
- },
51
- 'returns_a_color()': lambda {
52
- EmbeddedProtocol::Value.new(
53
- rgb_color: EmbeddedProtocol::Value::RgbColor.new(
54
- red: 0,
55
- green: 0,
56
- blue: 0,
57
- alpha: 1
58
- )
59
- )
60
- },
61
- 'returns_a_number()': lambda {
62
- EmbeddedProtocol::Value.new(
63
- number: EmbeddedProtocol::Value::Number.new(
64
- value: -312,
65
- numerators: ['rem']
66
- )
67
- )
68
- },
69
- 'returns_a_bool()': lambda {
70
- EmbeddedProtocol::Value.new(
71
- singleton: EmbeddedProtocol::SingletonValue::TRUE
72
- )
73
- },
74
- 'inspect_bool($argument)': lambda { |argument|
75
- unless argument&.singleton == :TRUE || argument.singleton == :FALSE
76
- raise StandardError,
77
- 'passed value is not a EmbeddedProtocol::SingletonValue::TRUE or EmbeddedProtocol::SingletonValue::FALSE'
78
- end
79
-
80
- argument
81
- },
82
- 'inspect_number($argument)': lambda { |argument|
83
- unless argument&.number.is_a? EmbeddedProtocol::Value::Number
84
- raise StandardError,
85
- 'passed value is not a EmbeddedProtocol::Value::Number'
86
- end
87
-
88
- argument
89
- },
90
- 'inspect_map($argument)': lambda { |argument|
91
- unless argument&.map.is_a? EmbeddedProtocol::Value::Map
92
- raise StandardError,
93
- 'passed value is not a EmbeddedProtocol::Value::Map'
94
- end
95
-
96
- argument
97
- },
98
- 'inspect_list($argument)': lambda { |argument|
99
- unless argument&.list.is_a? EmbeddedProtocol::Value::List
100
- raise StandardError,
101
- 'passed value is not a EmbeddedProtocol::Value::List'
102
- end
103
-
104
- argument
105
- },
106
- 'returns_sass_value()': lambda {
107
- EmbeddedProtocol::Value.new(
108
- rgb_color: EmbeddedProtocol::Value::RgbColor.new(
109
- red: 0,
110
- green: 0,
111
- blue: 0,
112
- alpha: 1
113
- )
114
- )
115
- },
116
- 'returns_sass_map()': lambda {
117
- EmbeddedProtocol::Value.new(
118
- map: EmbeddedProtocol::Value::Map.new(
119
- entries: [
120
- EmbeddedProtocol::Value::Map::Entry.new(
121
- key: EmbeddedProtocol::Value.new(
122
- string: EmbeddedProtocol::Value::String.new(
123
- text: 'color',
124
- quoted: true
125
- )
126
- ),
127
- value: EmbeddedProtocol::Value.new(
128
- rgb_color: EmbeddedProtocol::Value::RgbColor.new(
129
- red: 0,
130
- green: 0,
131
- blue: 0,
132
- alpha: 1
133
- )
134
- )
135
- )
136
- ]
137
- )
138
- )
139
- },
140
- 'returns_sass_list()': lambda {
141
- EmbeddedProtocol::Value.new(
142
- list: EmbeddedProtocol::Value::List.new(
143
- separator: EmbeddedProtocol::ListSeparator::COMMA,
144
- has_brackets: true,
145
- contents: [
146
- EmbeddedProtocol::Value.new(
147
- number: EmbeddedProtocol::Value::Number.new(
148
- value: 10
149
- )
150
- ),
151
- EmbeddedProtocol::Value.new(
152
- number: EmbeddedProtocol::Value::Number.new(
153
- value: 20
154
- )
155
- ),
156
- EmbeddedProtocol::Value.new(
157
- number: EmbeddedProtocol::Value::Number.new(
158
- value: 30
159
- )
160
- )
161
- ]
162
- )
163
- )
164
- }
165
- }).css
166
- end
167
-
168
- # rubocop:enable Layout/LineLength
169
-
170
- def test_functions_may_return_sass_string_type
171
- assert_sass <<-SCSS, <<-CSS
172
- div { url: url(sass_return_path("foo.svg")); }
173
- SCSS
174
- div { url: url("foo.svg"); }
175
- CSS
176
- end
177
-
178
- def test_functions_work_with_varying_quotes_and_string_types
179
- assert_sass <<-SCSS, <<-CSS
180
- div {
181
- url: url(asset-path("foo.svg"));
182
- url: url(image-path("foo.png"));
183
- url: url(video-path("foo.mov"));
184
- url: url(audio-path("foo.mp3"));
185
- url: url(font-path("foo.woff"));
186
- url: url(javascript-path('foo.js'));
187
- url: url(javascript-path("foo.js"));
188
- url: url(stylesheet-path("foo.css"));
189
- }
190
- SCSS
191
- div {
192
- url: url(asset-path("foo.svg"));
193
- url: url(image-path("foo.png"));
194
- url: url(video-path("foo.mov"));
195
- url: url(audio-path("foo.mp3"));
196
- url: url(font-path("foo.woff"));
197
- url: url("/js/foo.js");
198
- url: url("/js/foo.js");
199
- url: url("/css/foo.css");
200
- }
201
- CSS
202
- end
203
-
204
- def test_function_with_empty_unquoted_string
205
- assert_sass <<-SCSS, <<-CSS
206
- div {url: url(no-return-path('foo.svg'));}
207
- SCSS
208
- div { url: url(); }
209
- CSS
210
- end
211
-
212
- def test_function_that_returns_a_color
213
- assert_sass <<-SCSS, <<-CSS
214
- div { background: returns-a-color(); }
215
- SCSS
216
- div { background: black; }
217
- CSS
218
- end
219
-
220
- def test_function_that_returns_a_number
221
- assert_sass <<-SCSS, <<-CSS
222
- div { width: returns-a-number(); }
223
- SCSS
224
- div { width: -312rem; }
225
- CSS
226
- end
227
-
228
- def test_function_that_takes_a_number
229
- assert_sass <<-SCSS, <<-CSS
230
- div { display: inspect-number(42.1px); }
231
- SCSS
232
- div { display: 42.1px; }
233
- CSS
234
- end
235
-
236
- def test_function_that_returns_a_bool
237
- assert_sass <<-SCSS, <<-CSS
238
- div { width: returns-a-bool(); }
239
- SCSS
240
- div { width: true; }
241
- CSS
242
- end
243
-
244
- def test_function_that_takes_a_bool
245
- assert_sass <<-SCSS, <<-CSS
246
- div { display: inspect-bool(true)}
247
- SCSS
248
- div { display: true; }
249
- CSS
250
- end
251
-
252
- def test_function_with_optional_arguments
253
- assert_sass <<-SCSS, <<-EXPECTED_CSS
254
- div {
255
- url: optional_arguments('first');
256
- url: optional_arguments('second', 'qux');
257
- }
258
- SCSS
259
- div {
260
- url: "first/bar";
261
- url: "second/qux";
262
- }
263
- EXPECTED_CSS
264
- end
265
-
266
- def test_functions_may_accept_sass_color_type
267
- assert_sass <<-SCSS, <<-EXPECTED_CSS
268
- div { color: nice_color_argument(red); }
269
- SCSS
270
- div { color: red; }
271
- EXPECTED_CSS
272
- end
273
-
274
- def test_function_with_error
275
- assert_raises(RenderError) do
276
- render('div {url: function_that_raises_errors();}')
277
- end
278
- end
279
-
280
- def test_function_that_returns_a_sass_value
281
- assert_sass <<-SCSS, <<-CSS
282
- div { background: returns-sass-value(); }
283
- SCSS
284
- div { background: black; }
285
- CSS
286
- end
287
-
288
- def test_function_that_returns_a_sass_map
289
- assert_sass <<-SCSS, <<-CSS
290
- $my-map: returns-sass-map();
291
- div { background: map-get( $my-map, color ); }
292
- SCSS
293
- div { background: black; }
294
- CSS
295
- end
296
-
297
- def test_function_that_takes_a_sass_map
298
- assert_sass <<-SCSS, <<-CSS
299
- div { background-color: map-get( inspect-map(( color: black, number: 1.23px, string: "abc", map: ( x: 'y' ))), color ); }
300
- SCSS
301
- div { background-color: black; }
302
- CSS
303
- end
304
-
305
- def test_function_that_returns_a_sass_list
306
- assert_sass <<-SCSS, <<-CSS
307
- $my-list: returns-sass-list();
308
- div { width: nth( $my-list, 2 ); }
309
- SCSS
310
- div { width: 20; }
311
- CSS
312
- end
313
-
314
- def test_function_that_takes_a_sass_list
315
- assert_sass <<-SCSS, <<-CSS
316
- div { width: nth(inspect-list((10 20 30)), 2); }
317
- SCSS
318
- div { width: 20; }
319
- CSS
320
- end
321
-
322
- def test_concurrency
323
- 10.times do
324
- threads = []
325
- 10.times do |i|
326
- threads << Thread.new(i) do |id|
327
- output = @embedded.render(data: 'div { url: test-function() }',
328
- functions: {
329
- 'test_function()': lambda {
330
- EmbeddedProtocol::Value.new(
331
- string: EmbeddedProtocol::Value::String.new(
332
- text: "{test_key1: 'test_value', test_key2: #{id}}",
333
- quoted: true
334
- )
335
- )
336
- }
337
- }).css
338
- assert_match(/test_key1/, output)
339
- assert_match(/test_key2/, output)
340
- assert_match(/test_value/, output)
341
- assert_match(/#{id}/, output)
342
- end
343
- end
344
- threads.each(&:join)
345
- end
346
- end
347
-
348
- def test_pass_custom_functions_as_a_parameter
349
- output = @embedded.render(data: 'div { url: test-function(); }',
350
- functions: {
351
- 'test_function()': lambda {
352
- EmbeddedProtocol::Value.new(
353
- string: EmbeddedProtocol::Value::String.new(
354
- text: 'custom_function',
355
- quoted: true
356
- )
357
- )
358
- }
359
- }).css
360
-
361
- assert_match(/custom_function/, output)
362
- end
363
-
364
- def test_pass_incompatible_type_to_custom_functions
365
- assert_raises(RenderError) do
366
- @embedded.render(data: 'div { url: test-function(); }',
367
- functions: {
368
- 'test_function()': lambda {
369
- Class.new
370
- }
371
- }).css
372
- end
373
- end
374
-
375
- private
376
-
377
- def assert_sass(sass, expected_css)
378
- output = render(sass)
379
- assert_equal expected_css.strip.gsub!(/\s+/, ' '), # poor man's String#squish
380
- output.strip.gsub!(/\s+/, ' ')
381
- end
382
-
383
- def stderr_output
384
- $stderr.string.gsub("\u0000\n", '').chomp
385
- end
386
- end
387
- end