sass-embedded 0.2.2 → 0.4.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.
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'test_helper'
4
+
5
+ module Sass
6
+ class RenderTest < MiniTest::Test
7
+ def test_sass_render
8
+ assert_equal '', ::Sass.render(data: '')[:css]
9
+
10
+ css = <<~CSS.chomp
11
+ h1 {
12
+ font-size: 2rem;
13
+ }
14
+ CSS
15
+
16
+ assert_equal css, ::Sass.render(data: 'h1 { font-size: 2rem; }')[:css]
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,178 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'test_helper'
4
+
5
+ module Sass
6
+ class SourceMapsTest < 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 test_no_source_map
18
+ scss = <<~SCSS
19
+ $size: 40px;
20
+ h1 {
21
+ font-size: $size;
22
+ }
23
+ SCSS
24
+
25
+ css = <<~CSS.chomp
26
+ h1 {
27
+ font-size: 40px;
28
+ }
29
+ CSS
30
+
31
+ temp_file('style.scss', scss)
32
+
33
+ result = @embedded.render(file: 'style.scss')
34
+ assert_equal css, result[:css]
35
+ assert_nil result[:map]
36
+ end
37
+
38
+ def test_source_map_file_as_string
39
+ scss = <<~SCSS
40
+ $size: 40px;
41
+ h1 {
42
+ font-size: $size;
43
+ }
44
+ SCSS
45
+
46
+ css = <<~CSS.chomp
47
+ h1 {
48
+ font-size: 40px;
49
+ }
50
+ /*# sourceMappingURL=out.map */
51
+ CSS
52
+
53
+ temp_file('style.scss', scss)
54
+
55
+ result = @embedded.render(file: 'style.scss',
56
+ source_map: 'out.map')
57
+ assert_equal css, result[:css]
58
+ JSON.parse(result[:map])
59
+ end
60
+
61
+ def test_source_map_true_without_out_file_has_no_effect
62
+ scss = <<~SCSS
63
+ $size: 40px;
64
+ h1 {
65
+ font-size: $size;
66
+ }
67
+ SCSS
68
+
69
+ css = <<~CSS.chomp
70
+ h1 {
71
+ font-size: 40px;
72
+ }
73
+ CSS
74
+
75
+ temp_file('style.scss', scss)
76
+
77
+ result = @embedded.render(file: 'style.scss',
78
+ source_map: true)
79
+ assert_equal css, result[:css]
80
+ assert_nil result[:map]
81
+ end
82
+
83
+ def test_source_map_true_with_out_file
84
+ scss = <<~SCSS
85
+ $size: 40px;
86
+ h1 {
87
+ font-size: $size;
88
+ }
89
+ SCSS
90
+
91
+ css = <<~CSS.chomp
92
+ h1 {
93
+ font-size: 40px;
94
+ }
95
+ /*# sourceMappingURL=out.css.map */
96
+ CSS
97
+
98
+ temp_file('style.scss', scss)
99
+
100
+ result = @embedded.render(file: 'style.scss',
101
+ source_map: true,
102
+ out_file: 'out.css')
103
+ assert_equal css, result[:css]
104
+ JSON.parse(result[:map])
105
+ end
106
+
107
+ def test_omit_source_map_url
108
+ scss = <<~SCSS
109
+ $size: 40px;
110
+ h1 {
111
+ font-size: $size;
112
+ }
113
+ SCSS
114
+
115
+ css = <<~CSS.chomp
116
+ h1 {
117
+ font-size: 40px;
118
+ }
119
+ CSS
120
+
121
+ temp_file('style.scss', scss)
122
+
123
+ result = @embedded.render(file: 'style.scss',
124
+ source_map: 'out.map',
125
+ omit_source_map_url: true)
126
+ assert_equal css, result[:css]
127
+ JSON.parse(result[:map])
128
+ end
129
+
130
+ def test_source_map_embedded
131
+ scss = <<~SCSS
132
+ $size: 40px;
133
+ h1 {
134
+ font-size: $size;
135
+ }
136
+ SCSS
137
+
138
+ css = <<~CSS.chomp
139
+ h1 {
140
+ font-size: 40px;
141
+ }
142
+ /*# sourceMappingURL=data:application/json;base64,
143
+ CSS
144
+
145
+ temp_file('style.scss', scss)
146
+
147
+ result = @embedded.render(file: 'style.scss',
148
+ source_map: 'out.map',
149
+ source_map_embed: true)
150
+ assert result[:css].start_with? css
151
+ JSON.parse(result[:map])
152
+ end
153
+
154
+ def test_source_map_root
155
+ scss = <<~SCSS
156
+ $size: 40px;
157
+ h1 {
158
+ font-size: $size;
159
+ }
160
+ SCSS
161
+
162
+ css = <<~CSS.chomp
163
+ h1 {
164
+ font-size: 40px;
165
+ }
166
+ /*# sourceMappingURL=out.map */
167
+ CSS
168
+
169
+ temp_file('style.scss', scss)
170
+
171
+ result = @embedded.render(file: 'style.scss',
172
+ source_map: 'out.map',
173
+ source_map_root: 'assets')
174
+ assert_equal css, result[:css]
175
+ assert_equal 'assets', JSON.parse(result[:map])['sourceRoot']
176
+ end
177
+ end
178
+ end
data/test/test_helper.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'json'
3
4
  require 'fileutils'
4
5
  require 'minitest/autorun'
5
6
  require 'minitest/pride'
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.2.2
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - なつき
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-24 00:00:00.000000000 Z
11
+ date: 2021-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-protobuf
@@ -108,24 +108,54 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop-minitest
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop-rake
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
111
139
  description: Use dart-sass with Ruby!
112
140
  email:
113
141
  - i@ntk.me
114
142
  executables: []
115
143
  extensions:
116
- - ext/sass_embedded/extconf.rb
144
+ - ext/extconf.rb
117
145
  extra_rdoc_files: []
118
146
  files:
119
147
  - ".github/workflows/build.yml"
120
148
  - ".gitignore"
149
+ - ".rubocop.yml"
121
150
  - Gemfile
122
151
  - LICENSE
123
152
  - README.md
124
153
  - Rakefile
125
- - ext/sass_embedded/.gitignore
126
- - ext/sass_embedded/Makefile
127
- - ext/sass_embedded/extconf.rb
154
+ - ext/.gitignore
155
+ - ext/Makefile
156
+ - ext/extconf.rb
128
157
  - lib/sass.rb
158
+ - lib/sass/context.rb
129
159
  - lib/sass/embedded.rb
130
160
  - lib/sass/error.rb
131
161
  - lib/sass/platform.rb
@@ -133,12 +163,16 @@ files:
133
163
  - lib/sass/util.rb
134
164
  - lib/sass/version.rb
135
165
  - sass-embedded.gemspec
136
- - test/compiler_test.rb
137
- - test/custom_importer_test.rb
138
- - test/error_test.rb
166
+ - test/concurrency_test.rb
139
167
  - test/functions_test.rb
140
- - test/output_style_test.rb
141
- - test/sass_test.rb
168
+ - test/importer_test.rb
169
+ - test/include_paths_test.rb
170
+ - test/indented_syntax_test.rb
171
+ - test/input_test.rb
172
+ - test/output_test.rb
173
+ - test/render_error_test.rb
174
+ - test/render_test.rb
175
+ - test/source_maps_test.rb
142
176
  - test/test_helper.rb
143
177
  homepage: https://github.com/ntkme/embedded-host-ruby
144
178
  licenses:
@@ -152,7 +186,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
152
186
  requirements:
153
187
  - - ">="
154
188
  - !ruby/object:Gem::Version
155
- version: 2.0.0
189
+ version: 2.6.0
156
190
  required_rubygems_version: !ruby/object:Gem::Requirement
157
191
  requirements:
158
192
  - - ">="
@@ -164,10 +198,14 @@ signing_key:
164
198
  specification_version: 4
165
199
  summary: Use dart-sass with Ruby!
166
200
  test_files:
167
- - test/compiler_test.rb
168
- - test/custom_importer_test.rb
169
- - test/error_test.rb
201
+ - test/concurrency_test.rb
170
202
  - test/functions_test.rb
171
- - test/output_style_test.rb
172
- - test/sass_test.rb
203
+ - test/importer_test.rb
204
+ - test/include_paths_test.rb
205
+ - test/indented_syntax_test.rb
206
+ - test/input_test.rb
207
+ - test/output_test.rb
208
+ - test/render_error_test.rb
209
+ - test/render_test.rb
210
+ - test/source_maps_test.rb
173
211
  - test/test_helper.rb
@@ -1,35 +0,0 @@
1
- .PHONY: install
2
- install:
3
- ifeq ($(OS),Windows_NT)
4
- powershell -command "Get-Item sass_embedded-*.zip | Expand-Archive -DestinationPath (Get-Location) -Force"
5
- powershell -command "Get-Item protoc-*.zip | Expand-Archive -DestinationPath protoc -Force"
6
- ./protoc/bin/protoc --ruby_out=. embedded_sass.proto
7
- else
8
- tar -vxzf sass_embedded-*.tar.gz
9
- unzip -od protoc protoc-*.zip
10
- ./protoc/bin/protoc --ruby_out=. embedded_sass.proto
11
- endif
12
-
13
- .PHONY: clean
14
- clean:
15
- ifeq ($(OS),Windows_NT)
16
- powershell -command "Remove-Item sass_embedded -Recurse -Force -ErrorAction Ignore"
17
- powershell -command "Remove-Item protoc -Recurse -Force -ErrorAction Ignore"
18
- powershell -command "Remove-Item embedded_sass_pb.rb -Recurse -Force -ErrorAction Ignore"
19
- else
20
- rm -rf sass_embedded
21
- rm -rf protoc
22
- rm -rf embedded_sass_pb.rb
23
- endif
24
-
25
- .PHONY: distclean
26
- distclean: clean
27
- ifeq ($(OS),Windows_NT)
28
- powershell -command "Remove-Item sass_embedded-*.zip -Force -ErrorAction Ignore"
29
- powershell -command "Remove-Item protoc-*.zip -Force -ErrorAction Ignore"
30
- powershell -command "Remove-Item embedded_sass.proto -Force -ErrorAction Ignore"
31
- else
32
- rm -rf sass_embedded-*.tar.gz
33
- rm -rf protoc-*.zip
34
- rm -rf embedded_sass.proto
35
- endif
@@ -1,136 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require 'mkmf'
5
- require 'json'
6
- require 'open-uri'
7
- require_relative '../../lib/sass/platform'
8
-
9
- module Sass
10
- class Extconf
11
-
12
- def initialize
13
- system('make', '-C', __dir__, 'distclean')
14
- download_sass_embedded
15
- download_protoc
16
- download_embedded_sass_proto
17
- system('make', '-C', __dir__, 'install')
18
-
19
- File.open(File.absolute_path("sass_embedded.#{RbConfig::CONFIG['DLEXT']}", __dir__), 'w') {}
20
-
21
- $makefile_created = true
22
- end
23
-
24
- private
25
-
26
- def api(url)
27
- headers = {}
28
- headers['Authorization'] = "token #{ENV['GITHUB_TOKEN']}" if ENV['GITHUB_TOKEN']
29
- URI.parse(url).open(headers) do |file|
30
- JSON.parse file.read
31
- end
32
- end
33
-
34
- def download(url)
35
- URI.parse(url).open do |source|
36
- File.open(File.absolute_path(File.basename(url), __dir__), 'wb') do |destination|
37
- destination.write source.read
38
- end
39
- end
40
- rescue StandardError
41
- raise "Failed to download: #{url}"
42
- end
43
-
44
- def download_sass_embedded
45
- repo = 'sass/dart-sass-embedded'
46
-
47
- release = api("https://api.github.com/repos/#{repo}/releases")[0]['tag_name']
48
-
49
- os = case Sass::Platform::OS
50
- when 'darwin'
51
- 'macos'
52
- when 'linux'
53
- 'linux'
54
- when 'windows'
55
- 'windows'
56
- else
57
- raise "Unsupported OS: #{Sass::Platform::OS}"
58
- end
59
-
60
- arch = case Sass::Platform::ARCH
61
- when 'x86_64'
62
- 'x64'
63
- when 'i386'
64
- 'ia32'
65
- else
66
- raise "Unsupported Arch: #{Sass::Platform::ARCH}"
67
- end
68
-
69
- ext = case os
70
- when 'windows'
71
- 'zip'
72
- else
73
- 'tar.gz'
74
- end
75
-
76
- url = "https://github.com/#{repo}/releases/download/#{release}/sass_embedded-#{release}-#{os}-#{arch}.#{ext}"
77
- download url
78
- end
79
-
80
- def download_protoc
81
- repo = 'protocolbuffers/protobuf'
82
-
83
- tag = URI.parse("https://github.com/#{repo}/releases/latest").open do |file|
84
- File.basename file.base_uri.to_s
85
- end
86
-
87
- release = tag[1..-1]
88
-
89
- os = case Sass::Platform::OS
90
- when 'darwin'
91
- 'osx'
92
- when 'linux'
93
- 'linux'
94
- when 'windows'
95
- 'win'
96
- else
97
- raise "Unsupported OS: #{Sass::Platform::OS}"
98
- end
99
-
100
- arch = case Sass::Platform::ARCH
101
- when 'aarch64'
102
- 'aarch_64'
103
- when 'sparcv9'
104
- 's390'
105
- when 'i386'
106
- 'x86_32'
107
- when 'x86_64'
108
- 'x86_64'
109
- when 'powerpc64'
110
- 'ppcle_64'
111
- else
112
- raise "Unsupported Arch: #{Sass::Platform::ARCH}"
113
- end
114
-
115
- os_arch = case os
116
- when 'win'
117
- os + arch.split('_').last
118
- else
119
- "#{os}-#{arch}"
120
- end
121
-
122
- ext = 'zip'
123
-
124
- url = "https://github.com/#{repo}/releases/download/#{tag}/protoc-#{release}-#{os_arch}.#{ext}"
125
- download url
126
- end
127
-
128
- def download_embedded_sass_proto
129
- url = 'https://raw.githubusercontent.com/sass/embedded-protocol/HEAD/embedded_sass.proto'
130
- download url
131
- end
132
-
133
- end
134
- end
135
-
136
- Sass::Extconf.new