sassc 2.1.0.pre3-x64-mingw32 → 2.4.0-x64-mingw32
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/.travis.yml +2 -0
- data/CHANGELOG.md +24 -0
- data/Rakefile +2 -4
- data/lib/sassc/engine.rb +5 -3
- data/lib/sassc/functions_handler.rb +11 -13
- data/lib/sassc/native.rb +9 -7
- data/lib/sassc/script.rb +4 -6
- data/lib/sassc/version.rb +1 -1
- data/test/functions_test.rb +38 -1
- data/test/native_test.rb +4 -4
- metadata +5 -7
- data/lib/sassc/native/lib_c.rb +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aef021ba77abb64065e3844904e2f3c700111053b41d2ce9c9676c21e2ee6d51
|
4
|
+
data.tar.gz: e93a85d27b94d6c677106ef3defffab897557021b99b4dbbfd8fd2737aa709f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b633d7d402a16a8141b862d2412606c86ed9d400e2792e8446afa781d33c4a8f42748605c44ac3ed6535a2976342c2f13fba39ff6e26c40a3d8655fd18e3f630
|
7
|
+
data.tar.gz: 1e9a403743c64c4e27f4383a76e4eba0ca34187873a9614be1a2ce4ed1f92ede70b5b26156172c7ad49d599a7d7e0748c08eabebd35f74e5d71a157efc16c313
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,27 @@
|
|
1
|
+
- **2.4.0**
|
2
|
+
- [Update libsass to 3.6.4](https://github.com/sass/sassc-ruby/pull/199)
|
3
|
+
- [Use FFI::MemoryPointer instead of libc's malloc()](https://github.com/sass/sassc-ruby/pull/205)
|
4
|
+
- [Test against Ruby 2.7.0](https://github.com/sass/sassc-ruby/pull/193)
|
5
|
+
|
6
|
+
- **2.3.0**
|
7
|
+
- [Fix rake gem:native task](https://github.com/sass/sassc-ruby/pull/196)
|
8
|
+
- [disable lto flag for darwin + nix](https://github.com/sass/sassc-ruby/pull/166)
|
9
|
+
- [Sort input file list](https://github.com/sass/sassc-ruby/pull/178)
|
10
|
+
- [Set appropriate encoding for source_map](https://github.com/sass/sassc-ruby/pull/152)
|
11
|
+
- [allow passing functions directly](https://github.com/sass/sassc-ruby/pull/162)
|
12
|
+
- [always dispose data context](https://github.com/sass/sassc-ruby/pull/161)
|
13
|
+
- [Update libsass to 3.6.3](https://github.com/sass/sassc-ruby/pull/164)
|
14
|
+
- [Restore strip symbols](https://github.com/sass/sassc-ruby/pull/184)
|
15
|
+
- [Default --march-tune-native to false](https://github.com/sass/sassc-ruby/pull/158)
|
16
|
+
- [Fix compile issue on Mac OS X](https://github.com/sass/sassc-ruby/pull/174)
|
17
|
+
- [Test on TruffleRuby in TravisCI](https://github.com/sass/sassc-ruby/pull/171)
|
18
|
+
- [Use RbConfig::MAKEFILE_CONFIG['DLEXT'] instead of hardcoding extensions](https://github.com/sass/sassc-ruby/pull/173)
|
19
|
+
- **2.2.1**
|
20
|
+
- [Fix LoadError on some non-rvm environments](https://github.com/sass/sassc-ruby/pull/156)
|
21
|
+
- **2.2.0**
|
22
|
+
- [Do not build precompiled gems for Linux](https://github.com/sass/sassc-ruby/pull/145)
|
23
|
+
- **2.1.0**
|
24
|
+
- Equivalent to 2.1.0.pre3
|
1
25
|
- **2.1.0.pre3**
|
2
26
|
- [extconf.rb: Always write VERSION if we have .git](https://github.com/sass/sassc-ruby/pull/131)
|
3
27
|
- [Update libsass to 3.6.1](https://github.com/sass/sassc-ruby/pull/130)
|
data/Rakefile
CHANGED
@@ -18,7 +18,7 @@ Rake::ExtensionTask.new('libsass', gem_spec) do |ext|
|
|
18
18
|
ext.ext_dir = 'ext'
|
19
19
|
ext.lib_dir = 'lib/sassc'
|
20
20
|
ext.cross_compile = true
|
21
|
-
ext.cross_platform = %w[x86-mingw32 x64-mingw32
|
21
|
+
ext.cross_platform = %w[x86-mingw32 x64-mingw32]
|
22
22
|
|
23
23
|
# Link C++ stdlib statically when building binary gems.
|
24
24
|
ext.cross_config_options << '--enable-static-stdlib'
|
@@ -36,9 +36,7 @@ task 'gem:native' do
|
|
36
36
|
|
37
37
|
# The RUBY_CC_VERSION here doesn't matter for the final package.
|
38
38
|
# Only one version should be specified, as the shared library is Ruby-agnostic.
|
39
|
-
|
40
|
-
# g++-multilib is installed for 64->32-bit cross-compilation.
|
41
|
-
RakeCompilerDock.sh "sudo apt-get install -y g++-multilib && bundle && gem i rake --no-document && "\
|
39
|
+
RakeCompilerDock.sh "gem i rake bundler --no-document && bundle && "\
|
42
40
|
"rake clean && rake cross native gem MAKE='nice make -j`nproc`' "\
|
43
41
|
"RUBY_CC_VERSION=2.6.0 CLEAN=1"
|
44
42
|
end
|
data/lib/sassc/engine.rb
CHANGED
@@ -16,6 +16,7 @@ module SassC
|
|
16
16
|
def initialize(template, options = {})
|
17
17
|
@template = template
|
18
18
|
@options = options
|
19
|
+
@functions = options.fetch(:functions, Script::Functions)
|
19
20
|
end
|
20
21
|
|
21
22
|
def render
|
@@ -37,7 +38,7 @@ module SassC
|
|
37
38
|
Native.option_set_omit_source_map_url(native_options, true) if omit_source_map_url?
|
38
39
|
|
39
40
|
import_handler.setup(native_options)
|
40
|
-
functions_handler.setup(native_options)
|
41
|
+
functions_handler.setup(native_options, functions: @functions)
|
41
42
|
|
42
43
|
status = Native.compile_data_context(data_context)
|
43
44
|
|
@@ -54,11 +55,12 @@ module SassC
|
|
54
55
|
@dependencies = Native.context_get_included_files(context)
|
55
56
|
@source_map = Native.context_get_source_map_string(context)
|
56
57
|
|
57
|
-
Native.delete_data_context(data_context)
|
58
|
-
|
59
58
|
css.force_encoding(@template.encoding)
|
59
|
+
@source_map.force_encoding(@template.encoding) if @source_map.is_a?(String)
|
60
60
|
|
61
61
|
return css unless quiet?
|
62
|
+
ensure
|
63
|
+
Native.delete_data_context(data_context) if data_context
|
62
64
|
end
|
63
65
|
|
64
66
|
def dependencies
|
@@ -6,20 +6,24 @@ module SassC
|
|
6
6
|
@options = options
|
7
7
|
end
|
8
8
|
|
9
|
-
def setup(native_options)
|
9
|
+
def setup(native_options, functions: Script::Functions)
|
10
10
|
@callbacks = {}
|
11
11
|
@function_names = {}
|
12
12
|
|
13
|
-
list = Native.make_function_list(Script.custom_functions.count)
|
13
|
+
list = Native.make_function_list(Script.custom_functions(functions: functions).count)
|
14
14
|
|
15
|
-
|
16
|
-
|
15
|
+
# use an anonymous class wrapper to avoid mutations in a threaded environment
|
16
|
+
functions_wrapper = Class.new do
|
17
|
+
attr_accessor :options
|
18
|
+
include functions
|
19
|
+
end.new
|
20
|
+
functions_wrapper.options = @options
|
17
21
|
|
18
|
-
Script.custom_functions.each_with_index do |custom_function, i|
|
22
|
+
Script.custom_functions(functions: functions).each_with_index do |custom_function, i|
|
19
23
|
@callbacks[custom_function] = FFI::Function.new(:pointer, [:pointer, :pointer]) do |native_argument_list, cookie|
|
20
24
|
begin
|
21
25
|
function_arguments = arguments_from_native_list(native_argument_list)
|
22
|
-
result =
|
26
|
+
result = functions_wrapper.send(custom_function, *function_arguments)
|
23
27
|
to_native_value(result)
|
24
28
|
rescue StandardError => exception
|
25
29
|
# This rescues any exceptions that occur either in value conversion
|
@@ -28,7 +32,7 @@ module SassC
|
|
28
32
|
end
|
29
33
|
end
|
30
34
|
|
31
|
-
@function_names[custom_function] = Script.formatted_function_name(custom_function)
|
35
|
+
@function_names[custom_function] = Script.formatted_function_name(custom_function, functions: functions)
|
32
36
|
|
33
37
|
callback = Native.make_function(
|
34
38
|
@function_names[custom_function],
|
@@ -65,11 +69,5 @@ module SassC
|
|
65
69
|
$stderr.puts "[SassC::FunctionsHandler] #{message}"
|
66
70
|
Native.make_error(message)
|
67
71
|
end
|
68
|
-
|
69
|
-
class FunctionWrapper
|
70
|
-
class << self
|
71
|
-
attr_accessor :options
|
72
|
-
end
|
73
|
-
end
|
74
72
|
end
|
75
73
|
end
|
data/lib/sassc/native.rb
CHANGED
@@ -6,8 +6,12 @@ module SassC
|
|
6
6
|
module Native
|
7
7
|
extend FFI::Library
|
8
8
|
|
9
|
-
dl_ext =
|
10
|
-
|
9
|
+
dl_ext = RbConfig::MAKEFILE_CONFIG['DLEXT']
|
10
|
+
begin
|
11
|
+
ffi_lib File.expand_path("libsass.#{dl_ext}", __dir__)
|
12
|
+
rescue LoadError # Some non-rvm environments don't copy a shared object over to lib/sassc
|
13
|
+
ffi_lib File.expand_path("libsass.#{dl_ext}", "#{__dir__}/../../ext")
|
14
|
+
end
|
11
15
|
|
12
16
|
require_relative "native/sass_value"
|
13
17
|
|
@@ -30,7 +34,6 @@ module SassC
|
|
30
34
|
require_relative "native/sass_input_style"
|
31
35
|
require_relative "native/sass_output_style"
|
32
36
|
require_relative "native/string_list"
|
33
|
-
require_relative "native/lib_c"
|
34
37
|
|
35
38
|
# Remove the redundant "sass_" from the beginning of every method name
|
36
39
|
def self.attach_function(*args)
|
@@ -49,10 +52,9 @@ module SassC
|
|
49
52
|
end
|
50
53
|
|
51
54
|
def self.native_string(string)
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
data
|
55
|
+
m = FFI::MemoryPointer.from_string(string)
|
56
|
+
m.autorelease = false
|
57
|
+
m
|
56
58
|
end
|
57
59
|
|
58
60
|
require_relative "native/native_context_api"
|
data/lib/sassc/script.rb
CHANGED
@@ -3,14 +3,12 @@
|
|
3
3
|
module SassC
|
4
4
|
module Script
|
5
5
|
|
6
|
-
def self.custom_functions
|
7
|
-
|
8
|
-
Functions.public_method_defined?(function)
|
9
|
-
end
|
6
|
+
def self.custom_functions(functions: Functions)
|
7
|
+
functions.public_instance_methods
|
10
8
|
end
|
11
9
|
|
12
|
-
def self.formatted_function_name(function_name)
|
13
|
-
params =
|
10
|
+
def self.formatted_function_name(function_name, functions: Functions)
|
11
|
+
params = functions.instance_method(function_name).parameters
|
14
12
|
params = params.map { |param_type, name| "$#{name}#{': null' if param_type == :opt}" }.join(", ")
|
15
13
|
return "#{function_name}(#{params})"
|
16
14
|
end
|
data/lib/sassc/version.rb
CHANGED
data/test/functions_test.rb
CHANGED
@@ -140,7 +140,7 @@ module SassC
|
|
140
140
|
|
141
141
|
assert_match /Error: error in C function function_that_raises_errors/, exception.message
|
142
142
|
assert_match /Intentional wrong thing happened somewhere inside the custom function/, exception.message
|
143
|
-
|
143
|
+
assert_match /\[SassC::FunctionsHandler\] Intentional wrong thing happened somewhere inside the custom function/, stderr_output
|
144
144
|
end
|
145
145
|
|
146
146
|
def test_function_that_returns_a_sass_value
|
@@ -185,6 +185,33 @@ module SassC
|
|
185
185
|
CSS
|
186
186
|
end
|
187
187
|
|
188
|
+
def test_concurrency
|
189
|
+
10.times do
|
190
|
+
threads = []
|
191
|
+
10.times do |i|
|
192
|
+
threads << Thread.new(i) do |id|
|
193
|
+
out = Engine.new("div { url: inspect_options(); }", {test_key1: 'test_value', test_key2: id}).render
|
194
|
+
assert_match /test_key1/, out
|
195
|
+
assert_match /test_key2/, out
|
196
|
+
assert_match /test_value/, out
|
197
|
+
assert_match /#{id}/, out
|
198
|
+
end
|
199
|
+
end
|
200
|
+
threads.each(&:join)
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
def test_pass_custom_functions_as_a_parameter
|
205
|
+
out = Engine.new("div { url: test-function(); }", {functions: ExternalFunctions}).render
|
206
|
+
assert_match /custom_function/, out
|
207
|
+
end
|
208
|
+
|
209
|
+
def test_pass_incompatible_type_to_custom_functions
|
210
|
+
assert_raises(TypeError) do
|
211
|
+
Engine.new("div { url: test-function(); }", {functions: Class.new}).render
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
188
215
|
private
|
189
216
|
|
190
217
|
def assert_sass(sass, expected_css)
|
@@ -279,6 +306,10 @@ module SassC
|
|
279
306
|
return argument
|
280
307
|
end
|
281
308
|
|
309
|
+
def inspect_options
|
310
|
+
SassC::Script::Value::String.new(self.options.inspect, :string)
|
311
|
+
end
|
312
|
+
|
282
313
|
def returns_sass_value
|
283
314
|
return SassC::Script::Value::Color.new(red: 0, green: 0, blue: 0)
|
284
315
|
end
|
@@ -299,5 +330,11 @@ module SassC
|
|
299
330
|
|
300
331
|
end
|
301
332
|
|
333
|
+
module ExternalFunctions
|
334
|
+
def test_function
|
335
|
+
SassC::Script::Value::String.new("custom_function", :string)
|
336
|
+
end
|
337
|
+
end
|
338
|
+
|
302
339
|
end
|
303
340
|
end
|
data/test/native_test.rb
CHANGED
@@ -11,7 +11,7 @@ module SassC
|
|
11
11
|
|
12
12
|
class General < MiniTest::Test
|
13
13
|
def test_it_reports_the_libsass_version
|
14
|
-
assert_equal "3.6.
|
14
|
+
assert_equal "3.6.4", Native.version
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
@@ -185,9 +185,9 @@ module SassC
|
|
185
185
|
funct = FFI::Function.new(:pointer, [:pointer, :pointer, :pointer]) do |url, prev, cookie|
|
186
186
|
list = Native.make_import_list(2)
|
187
187
|
|
188
|
-
str = "$var: 5px
|
189
|
-
data =
|
190
|
-
data.
|
188
|
+
str = "$var: 5px;"
|
189
|
+
data = FFI::MemoryPointer.from_string(str)
|
190
|
+
data.autorelease = false
|
191
191
|
|
192
192
|
entry0 = Native.make_import_entry("fake_includ.scss", data, nil)
|
193
193
|
entry1 = Native.make_import_entry("not_included.scss", nil, nil)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sassc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: x64-mingw32
|
6
6
|
authors:
|
7
7
|
- Ryan Boland
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -161,7 +161,6 @@ files:
|
|
161
161
|
- lib/sassc/importer.rb
|
162
162
|
- lib/sassc/libsass.so
|
163
163
|
- lib/sassc/native.rb
|
164
|
-
- lib/sassc/native/lib_c.rb
|
165
164
|
- lib/sassc/native/native_context_api.rb
|
166
165
|
- lib/sassc/native/native_functions_api.rb
|
167
166
|
- lib/sassc/native/sass2scss_api.rb
|
@@ -215,12 +214,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
215
214
|
version: 2.0.0
|
216
215
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
217
216
|
requirements:
|
218
|
-
- - "
|
217
|
+
- - ">="
|
219
218
|
- !ruby/object:Gem::Version
|
220
|
-
version:
|
219
|
+
version: '0'
|
221
220
|
requirements: []
|
222
|
-
|
223
|
-
rubygems_version: 2.7.9
|
221
|
+
rubygems_version: 3.1.2
|
224
222
|
signing_key:
|
225
223
|
specification_version: 4
|
226
224
|
summary: Use libsass with Ruby!
|
data/lib/sassc/native/lib_c.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module SassC
|
4
|
-
module Native
|
5
|
-
module LibC
|
6
|
-
extend FFI::Library
|
7
|
-
ffi_lib FFI::Library::LIBC
|
8
|
-
|
9
|
-
# memory allocators
|
10
|
-
attach_function :malloc, [:size_t], :pointer
|
11
|
-
# attach_function :calloc, [:size_t], :pointer
|
12
|
-
# attach_function :valloc, [:size_t], :pointer
|
13
|
-
# attach_function :realloc, [:pointer, :size_t], :pointer
|
14
|
-
# attach_function :free, [:pointer], :void
|
15
|
-
|
16
|
-
# memory movers
|
17
|
-
# attach_function :memcpy, [:pointer, :pointer, :size_t], :pointer
|
18
|
-
# attach_function :bcopy, [:pointer, :pointer, :size_t], :void
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|