sass-embedded 0.2.3 → 0.4.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.
- checksums.yaml +4 -4
- data/.github/workflows/build.yml +1 -1
- data/.rubocop.yml +14 -0
- data/README.md +1 -3
- data/Rakefile +10 -5
- data/ext/{sass_embedded/.gitignore → .gitignore} +0 -0
- data/ext/Makefile +51 -0
- data/ext/extconf.rb +160 -0
- data/lib/sass.rb +44 -27
- data/lib/sass/context.rb +37 -0
- data/lib/sass/embedded.rb +444 -187
- data/lib/sass/error.rb +4 -9
- data/lib/sass/transport.rb +45 -77
- data/lib/sass/util.rb +24 -3
- data/lib/sass/version.rb +1 -1
- data/sass-embedded.gemspec +4 -2
- data/test/concurrency_test.rb +34 -0
- data/test/functions_test.rb +149 -157
- data/test/{custom_importer_test.rb → importer_test.rb} +24 -31
- data/test/include_paths_test.rb +81 -0
- data/test/indented_syntax_test.rb +61 -0
- data/test/input_test.rb +56 -0
- data/test/output_test.rb +136 -0
- data/test/render_error_test.rb +44 -0
- data/test/render_test.rb +19 -0
- data/test/source_maps_test.rb +178 -0
- data/test/test_helper.rb +1 -0
- metadata +55 -17
- data/ext/sass_embedded/Makefile +0 -28
- data/ext/sass_embedded/extconf.rb +0 -129
- data/test/compiler_test.rb +0 -276
- data/test/error_test.rb +0 -31
- data/test/output_style_test.rb +0 -93
- data/test/sass_test.rb +0 -22
data/test/render_test.rb
ADDED
@@ -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
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
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- なつき
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-05-
|
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/
|
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
|
126
|
-
- ext/
|
127
|
-
- ext/
|
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/
|
137
|
-
- test/custom_importer_test.rb
|
138
|
-
- test/error_test.rb
|
166
|
+
- test/concurrency_test.rb
|
139
167
|
- test/functions_test.rb
|
140
|
-
- test/
|
141
|
-
- test/
|
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.
|
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/
|
168
|
-
- test/custom_importer_test.rb
|
169
|
-
- test/error_test.rb
|
201
|
+
- test/concurrency_test.rb
|
170
202
|
- test/functions_test.rb
|
171
|
-
- test/
|
172
|
-
- test/
|
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
|
data/ext/sass_embedded/Makefile
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
ifeq ($(OS),Windows_NT)
|
2
|
-
RM = cmd /c del /f /q /s
|
3
|
-
else
|
4
|
-
RM = rm -fr
|
5
|
-
endif
|
6
|
-
|
7
|
-
.PHONY: all
|
8
|
-
all:
|
9
|
-
|
10
|
-
.PHONY: install
|
11
|
-
install:
|
12
|
-
ifeq ($(OS),Windows_NT)
|
13
|
-
powershell -Command "Get-Item sass_embedded-*.zip | Expand-Archive -DestinationPath . -Force"
|
14
|
-
powershell -Command "Get-Item protoc-*.zip | Expand-Archive -DestinationPath protoc -Force"
|
15
|
-
./protoc/bin/protoc --ruby_out=. embedded_sass.proto
|
16
|
-
else
|
17
|
-
tar -vxzf sass_embedded-*.tar.gz
|
18
|
-
unzip -od protoc protoc-*.zip
|
19
|
-
./protoc/bin/protoc --ruby_out=. embedded_sass.proto
|
20
|
-
endif
|
21
|
-
|
22
|
-
.PHONY: clean
|
23
|
-
clean:
|
24
|
-
$(RM) embedded_sass_pb.rb protoc sass_embedded
|
25
|
-
|
26
|
-
.PHONY: distclean
|
27
|
-
distclean: clean
|
28
|
-
$(RM) embedded_sass.proto protoc-*.zip sass_embedded-*.tar.gz
|
@@ -1,129 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require 'json'
|
5
|
-
require 'open-uri'
|
6
|
-
require_relative '../../lib/sass/platform'
|
7
|
-
|
8
|
-
module Sass
|
9
|
-
class Extconf
|
10
|
-
|
11
|
-
def initialize
|
12
|
-
download_sass_embedded
|
13
|
-
download_protoc
|
14
|
-
download_embedded_sass_proto
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def api(url)
|
20
|
-
headers = {}
|
21
|
-
headers['Authorization'] = "token #{ENV['GITHUB_TOKEN']}" if ENV['GITHUB_TOKEN']
|
22
|
-
URI.parse(url).open(headers) do |file|
|
23
|
-
JSON.parse file.read
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def download(url)
|
28
|
-
URI.parse(url).open do |source|
|
29
|
-
File.open(File.absolute_path(File.basename(url), __dir__), 'wb') do |destination|
|
30
|
-
destination.write source.read
|
31
|
-
end
|
32
|
-
end
|
33
|
-
rescue StandardError
|
34
|
-
raise "Failed to download: #{url}"
|
35
|
-
end
|
36
|
-
|
37
|
-
def download_sass_embedded
|
38
|
-
repo = 'sass/dart-sass-embedded'
|
39
|
-
|
40
|
-
release = api("https://api.github.com/repos/#{repo}/releases")[0]['tag_name']
|
41
|
-
|
42
|
-
os = case Sass::Platform::OS
|
43
|
-
when 'darwin'
|
44
|
-
'macos'
|
45
|
-
when 'linux'
|
46
|
-
'linux'
|
47
|
-
when 'windows'
|
48
|
-
'windows'
|
49
|
-
else
|
50
|
-
raise "Unsupported OS: #{Sass::Platform::OS}"
|
51
|
-
end
|
52
|
-
|
53
|
-
arch = case Sass::Platform::ARCH
|
54
|
-
when 'x86_64'
|
55
|
-
'x64'
|
56
|
-
when 'i386'
|
57
|
-
'ia32'
|
58
|
-
else
|
59
|
-
raise "Unsupported Arch: #{Sass::Platform::ARCH}"
|
60
|
-
end
|
61
|
-
|
62
|
-
ext = case os
|
63
|
-
when 'windows'
|
64
|
-
'zip'
|
65
|
-
else
|
66
|
-
'tar.gz'
|
67
|
-
end
|
68
|
-
|
69
|
-
url = "https://github.com/#{repo}/releases/download/#{release}/sass_embedded-#{release}-#{os}-#{arch}.#{ext}"
|
70
|
-
download url
|
71
|
-
end
|
72
|
-
|
73
|
-
def download_protoc
|
74
|
-
repo = 'protocolbuffers/protobuf'
|
75
|
-
|
76
|
-
tag = URI.parse("https://github.com/#{repo}/releases/latest").open do |file|
|
77
|
-
File.basename file.base_uri.to_s
|
78
|
-
end
|
79
|
-
|
80
|
-
release = tag[1..-1]
|
81
|
-
|
82
|
-
os = case Sass::Platform::OS
|
83
|
-
when 'darwin'
|
84
|
-
'osx'
|
85
|
-
when 'linux'
|
86
|
-
'linux'
|
87
|
-
when 'windows'
|
88
|
-
'win'
|
89
|
-
else
|
90
|
-
raise "Unsupported OS: #{Sass::Platform::OS}"
|
91
|
-
end
|
92
|
-
|
93
|
-
arch = case Sass::Platform::ARCH
|
94
|
-
when 'aarch64'
|
95
|
-
'aarch_64'
|
96
|
-
when 'sparcv9'
|
97
|
-
's390'
|
98
|
-
when 'i386'
|
99
|
-
'x86_32'
|
100
|
-
when 'x86_64'
|
101
|
-
'x86_64'
|
102
|
-
when 'powerpc64'
|
103
|
-
'ppcle_64'
|
104
|
-
else
|
105
|
-
raise "Unsupported Arch: #{Sass::Platform::ARCH}"
|
106
|
-
end
|
107
|
-
|
108
|
-
os_arch = case os
|
109
|
-
when 'win'
|
110
|
-
os + arch.split('_').last
|
111
|
-
else
|
112
|
-
"#{os}-#{arch}"
|
113
|
-
end
|
114
|
-
|
115
|
-
ext = 'zip'
|
116
|
-
|
117
|
-
url = "https://github.com/#{repo}/releases/download/#{tag}/protoc-#{release}-#{os_arch}.#{ext}"
|
118
|
-
download url
|
119
|
-
end
|
120
|
-
|
121
|
-
def download_embedded_sass_proto
|
122
|
-
url = 'https://raw.githubusercontent.com/sass/embedded-protocol/HEAD/embedded_sass.proto'
|
123
|
-
download url
|
124
|
-
end
|
125
|
-
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
Sass::Extconf.new
|