dartsass-ruby 3.0.0
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 +7 -0
- data/LICENSE.txt +24 -0
- data/README.md +83 -0
- data/lib/dartsass-ruby.rb +3 -0
- data/lib/sassc/dependency.rb +17 -0
- data/lib/sassc/engine.rb +220 -0
- data/lib/sassc/error.rb +35 -0
- data/lib/sassc/functions_handler.rb +81 -0
- data/lib/sassc/import_handler.rb +222 -0
- data/lib/sassc/importer.rb +31 -0
- data/lib/sassc/protocol.rb +11 -0
- data/lib/sassc/sass_2_scss.rb +12 -0
- data/lib/sassc/script/functions.rb +8 -0
- data/lib/sassc/script/value/bool.rb +32 -0
- data/lib/sassc/script/value/color.rb +95 -0
- data/lib/sassc/script/value/list.rb +136 -0
- data/lib/sassc/script/value/map.rb +69 -0
- data/lib/sassc/script/value/number.rb +389 -0
- data/lib/sassc/script/value/string.rb +96 -0
- data/lib/sassc/script/value.rb +137 -0
- data/lib/sassc/script/value_conversion.rb +117 -0
- data/lib/sassc/script.rb +16 -0
- data/lib/sassc/url.rb +40 -0
- data/lib/sassc/util.rb +15 -0
- data/lib/sassc/version.rb +5 -0
- data/lib/sassc.rb +56 -0
- metadata +185 -0
@@ -0,0 +1,117 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SassC::Script::ValueConversion
|
4
|
+
|
5
|
+
def self.from_native(value, options)
|
6
|
+
case value
|
7
|
+
when ::Sass::Value::Null::NULL
|
8
|
+
nil
|
9
|
+
when ::Sass::Value::Boolean
|
10
|
+
::SassC::Script::Value::Bool.new(value.to_bool)
|
11
|
+
when ::Sass::Value::Color
|
12
|
+
if value.instance_eval { defined? @hue }
|
13
|
+
::SassC::Script::Value::Color.new(
|
14
|
+
hue: value.hue,
|
15
|
+
saturation: value.saturation,
|
16
|
+
lightness: value.lightness,
|
17
|
+
alpha: value.alpha
|
18
|
+
)
|
19
|
+
else
|
20
|
+
::SassC::Script::Value::Color.new(
|
21
|
+
red: value.red,
|
22
|
+
green: value.green,
|
23
|
+
blue: value.blue,
|
24
|
+
alpha: value.alpha
|
25
|
+
)
|
26
|
+
end
|
27
|
+
when ::Sass::Value::List
|
28
|
+
::SassC::Script::Value::List.new(
|
29
|
+
value.to_a.map { |element| from_native(element, options) },
|
30
|
+
separator: case value.separator
|
31
|
+
when ','
|
32
|
+
:comma
|
33
|
+
when ' '
|
34
|
+
:space
|
35
|
+
else
|
36
|
+
raise UnsupportedValue, "Sass list separator #{value.separator} unsupported"
|
37
|
+
end,
|
38
|
+
bracketed: value.bracketed?
|
39
|
+
)
|
40
|
+
when ::Sass::Value::Map
|
41
|
+
::SassC::Script::Value::Map.new(
|
42
|
+
value.contents.to_a.to_h { |k, v| [from_native(k, options), from_native(v, options)] }
|
43
|
+
)
|
44
|
+
when ::Sass::Value::Number
|
45
|
+
::SassC::Script::Value::Number.new(
|
46
|
+
value.value,
|
47
|
+
value.numerator_units,
|
48
|
+
value.denominator_units
|
49
|
+
)
|
50
|
+
when ::Sass::Value::String
|
51
|
+
::SassC::Script::Value::String.new(
|
52
|
+
value.text,
|
53
|
+
value.quoted? ? :string : :identifier
|
54
|
+
)
|
55
|
+
else
|
56
|
+
raise UnsupportedValue, "Sass argument of type #{value.class.name.split('::').last} unsupported"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def self.to_native(value)
|
61
|
+
case value
|
62
|
+
when nil
|
63
|
+
::Sass::Value::Null::NULL
|
64
|
+
when ::SassC::Script::Value::Bool
|
65
|
+
::Sass::Value::Boolean.new(value.to_bool)
|
66
|
+
when ::SassC::Script::Value::Color
|
67
|
+
if value.rgba?
|
68
|
+
::Sass::Value::Color.new(
|
69
|
+
red: value.red,
|
70
|
+
green: value.green,
|
71
|
+
blue: value.blue,
|
72
|
+
alpha: value.alpha
|
73
|
+
)
|
74
|
+
elsif value.hlsa?
|
75
|
+
::Sass::Value::Color.new(
|
76
|
+
hue: value.hue,
|
77
|
+
saturation: value.saturation,
|
78
|
+
lightness: value.lightness,
|
79
|
+
alpha: value.alpha
|
80
|
+
)
|
81
|
+
else
|
82
|
+
raise UnsupportedValue, "Sass color mode #{value.instance_eval { @mode }} unsupported"
|
83
|
+
end
|
84
|
+
when ::SassC::Script::Value::List
|
85
|
+
::Sass::Value::List.new(
|
86
|
+
value.to_a.map { |element| to_native(element) },
|
87
|
+
separator: case value.separator
|
88
|
+
when :comma
|
89
|
+
','
|
90
|
+
when :space
|
91
|
+
' '
|
92
|
+
else
|
93
|
+
raise UnsupportedValue, "Sass list separator #{value.separator} unsupported"
|
94
|
+
end,
|
95
|
+
bracketed: value.bracketed
|
96
|
+
)
|
97
|
+
when ::SassC::Script::Value::Map
|
98
|
+
::Sass::Value::Map.new(
|
99
|
+
value.value.to_a.to_h { |k, v| [to_native(k), to_native(v)] }
|
100
|
+
)
|
101
|
+
when ::SassC::Script::Value::Number
|
102
|
+
::Sass::Value::Number.new(
|
103
|
+
value.value, {
|
104
|
+
numerator_units: value.numerator_units,
|
105
|
+
denominator_units: value.denominator_units
|
106
|
+
}
|
107
|
+
)
|
108
|
+
when ::SassC::Script::Value::String
|
109
|
+
::Sass::Value::String.new(
|
110
|
+
value.value,
|
111
|
+
quoted: value.type != :identifier
|
112
|
+
)
|
113
|
+
else
|
114
|
+
raise UnsupportedValue, "Sass return type #{value.class.name.split('::').last} unsupported"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
data/lib/sassc/script.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SassC
|
4
|
+
module Script
|
5
|
+
|
6
|
+
def self.custom_functions(functions: Functions)
|
7
|
+
functions.public_instance_methods
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.formatted_function_name(function_name, functions: Functions)
|
11
|
+
params = functions.instance_method(function_name).parameters
|
12
|
+
params = params.map { |param_type, name| "$#{name}#{': null' if param_type == :opt}" }.join(", ")
|
13
|
+
return "#{function_name}(#{params})"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/sassc/url.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SassC
|
4
|
+
module URL
|
5
|
+
PARSER = URI::Parser.new({ RESERVED: ';/?:@&=+$,' })
|
6
|
+
|
7
|
+
private_constant :PARSER
|
8
|
+
|
9
|
+
module_function
|
10
|
+
|
11
|
+
def parse(str)
|
12
|
+
PARSER.parse(str)
|
13
|
+
end
|
14
|
+
|
15
|
+
def escape(str)
|
16
|
+
PARSER.escape(str)
|
17
|
+
end
|
18
|
+
|
19
|
+
def unescape(str)
|
20
|
+
PARSER.unescape(str)
|
21
|
+
end
|
22
|
+
|
23
|
+
def file_url_to_path(url)
|
24
|
+
return if url.nil?
|
25
|
+
|
26
|
+
path = unescape(parse(url).path)
|
27
|
+
path = path[1..] if Gem.win_platform? && path[0].chr == '/' && path[1].chr =~ /[a-z]/i && path[2].chr == ':'
|
28
|
+
path
|
29
|
+
end
|
30
|
+
|
31
|
+
def path_to_file_url(path)
|
32
|
+
return if path.nil?
|
33
|
+
|
34
|
+
path = "/#{path}" unless path.start_with?('/')
|
35
|
+
URI::File.build([nil, escape(path)]).to_s
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
private_constant :URL
|
40
|
+
end
|
data/lib/sassc/util.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# # A module containing various useful functions.
|
4
|
+
module SassC::Util
|
5
|
+
|
6
|
+
extend self
|
7
|
+
|
8
|
+
# Whether or not this is running on Windows.
|
9
|
+
#
|
10
|
+
# @return [Boolean]
|
11
|
+
def windows?
|
12
|
+
return @windows if defined?(@windows)
|
13
|
+
@windows = RbConfig::CONFIG['host_os'].match?(/mswin|windows|mingw/i)
|
14
|
+
end
|
15
|
+
end
|
data/lib/sassc.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SassC
|
4
|
+
# The global load paths for Sass files. This is meant for plugins and
|
5
|
+
# libraries to register the paths to their Sass stylesheets to that they may
|
6
|
+
# be `@imported`. This load path is used by every instance of {Sass::Engine}.
|
7
|
+
# They are lower-precedence than any load paths passed in via the
|
8
|
+
# {file:SASS_REFERENCE.md#load_paths-option `:load_paths` option}.
|
9
|
+
#
|
10
|
+
# If the `SASS_PATH` environment variable is set,
|
11
|
+
# the initial value of `load_paths` will be initialized based on that.
|
12
|
+
# The variable should be a colon-separated list of path names
|
13
|
+
# (semicolon-separated on Windows).
|
14
|
+
#
|
15
|
+
# Note that files on the global load path are never compiled to CSS
|
16
|
+
# themselves, even if they aren't partials. They exist only to be imported.
|
17
|
+
#
|
18
|
+
# @example
|
19
|
+
# SassC.load_paths << File.dirname(__FILE__ + '/sass')
|
20
|
+
# @return [Array<String, Pathname, Sass::Importers::Base>]
|
21
|
+
def self.load_paths
|
22
|
+
@load_paths ||= if ENV['SASS_PATH']
|
23
|
+
ENV['SASS_PATH'].split(SassC::Util.windows? ? ';' : ':')
|
24
|
+
else
|
25
|
+
[]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
require 'sass-embedded'
|
31
|
+
require 'base64'
|
32
|
+
require 'json'
|
33
|
+
require 'uri'
|
34
|
+
require 'set'
|
35
|
+
|
36
|
+
require_relative "sassc/version"
|
37
|
+
require_relative "sassc/import_handler"
|
38
|
+
require_relative "sassc/importer"
|
39
|
+
require_relative "sassc/util"
|
40
|
+
require_relative "sassc/script"
|
41
|
+
require_relative "sassc/script/value"
|
42
|
+
require_relative "sassc/script/value/bool"
|
43
|
+
require_relative "sassc/script/value/number"
|
44
|
+
require_relative "sassc/script/value/color"
|
45
|
+
require_relative "sassc/script/value/string"
|
46
|
+
require_relative "sassc/script/value/list"
|
47
|
+
require_relative "sassc/script/value/map"
|
48
|
+
require_relative "sassc/script/functions"
|
49
|
+
require_relative "sassc/script/value_conversion"
|
50
|
+
require_relative "sassc/functions_handler"
|
51
|
+
require_relative "sassc/dependency"
|
52
|
+
require_relative "sassc/error"
|
53
|
+
require_relative "sassc/sass_2_scss"
|
54
|
+
require_relative "sassc/url"
|
55
|
+
require_relative "sassc/protocol"
|
56
|
+
require_relative "sassc/engine"
|
metadata
ADDED
@@ -0,0 +1,185 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dartsass-ruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 3.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ryan Boland
|
8
|
+
- なつき
|
9
|
+
- Johnny Shields
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2023-02-03 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: sass-embedded
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - "~>"
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.54'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - "~>"
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '1.54'
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: minitest
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - "~>"
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 5.16.0
|
36
|
+
type: :development
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 5.16.0
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: minitest-around
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 0.5.0
|
50
|
+
type: :development
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - "~>"
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 0.5.0
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: rake
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 10.0.0
|
64
|
+
type: :development
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 10.0.0
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: rubocop
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - "~>"
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.37.0
|
78
|
+
type: :development
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - "~>"
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: 1.37.0
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: rubocop-minitest
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - "~>"
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: 0.22.0
|
92
|
+
type: :development
|
93
|
+
prerelease: false
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - "~>"
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 0.22.0
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
name: rubocop-performance
|
101
|
+
requirement: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - "~>"
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: 1.15.0
|
106
|
+
type: :development
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - "~>"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 1.15.0
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: rubocop-rake
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 0.6.0
|
120
|
+
type: :development
|
121
|
+
prerelease: false
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - "~>"
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: 0.6.0
|
127
|
+
description: Use Dart Sass with Ruby and Sprockets
|
128
|
+
email:
|
129
|
+
- ryan@tanookilabs.com
|
130
|
+
- i@ntk.me
|
131
|
+
executables: []
|
132
|
+
extensions: []
|
133
|
+
extra_rdoc_files: []
|
134
|
+
files:
|
135
|
+
- LICENSE.txt
|
136
|
+
- README.md
|
137
|
+
- lib/dartsass-ruby.rb
|
138
|
+
- lib/sassc.rb
|
139
|
+
- lib/sassc/dependency.rb
|
140
|
+
- lib/sassc/engine.rb
|
141
|
+
- lib/sassc/error.rb
|
142
|
+
- lib/sassc/functions_handler.rb
|
143
|
+
- lib/sassc/import_handler.rb
|
144
|
+
- lib/sassc/importer.rb
|
145
|
+
- lib/sassc/protocol.rb
|
146
|
+
- lib/sassc/sass_2_scss.rb
|
147
|
+
- lib/sassc/script.rb
|
148
|
+
- lib/sassc/script/functions.rb
|
149
|
+
- lib/sassc/script/value.rb
|
150
|
+
- lib/sassc/script/value/bool.rb
|
151
|
+
- lib/sassc/script/value/color.rb
|
152
|
+
- lib/sassc/script/value/list.rb
|
153
|
+
- lib/sassc/script/value/map.rb
|
154
|
+
- lib/sassc/script/value/number.rb
|
155
|
+
- lib/sassc/script/value/string.rb
|
156
|
+
- lib/sassc/script/value_conversion.rb
|
157
|
+
- lib/sassc/url.rb
|
158
|
+
- lib/sassc/util.rb
|
159
|
+
- lib/sassc/version.rb
|
160
|
+
homepage: https://github.com/tablecheck/dartsass-ruby
|
161
|
+
licenses:
|
162
|
+
- MIT
|
163
|
+
metadata:
|
164
|
+
documentation_uri: https://rubydoc.info/gems/dartsass-ruby/3.0.0
|
165
|
+
source_code_uri: https://github.com/tablecheck/dartsass-ruby/tree/v3.0.0
|
166
|
+
post_install_message:
|
167
|
+
rdoc_options: []
|
168
|
+
require_paths:
|
169
|
+
- lib
|
170
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: 2.6.0
|
175
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - ">="
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '0'
|
180
|
+
requirements: []
|
181
|
+
rubygems_version: 3.4.4
|
182
|
+
signing_key:
|
183
|
+
specification_version: 4
|
184
|
+
summary: Use Dart Sass with Ruby and Sprockets
|
185
|
+
test_files: []
|