sass4 4.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/.yardopts +13 -0
- data/AGENTS.md +534 -0
- data/CODE_OF_CONDUCT.md +10 -0
- data/CONTRIBUTING.md +148 -0
- data/MIT-LICENSE +20 -0
- data/README.md +242 -0
- data/VERSION +1 -0
- data/VERSION_NAME +1 -0
- data/bin/sass +13 -0
- data/bin/sass-convert +12 -0
- data/bin/scss +13 -0
- data/extra/sass-spec-ref.sh +40 -0
- data/extra/update_watch.rb +13 -0
- data/init.rb +18 -0
- data/lib/sass/cache_stores/base.rb +88 -0
- data/lib/sass/cache_stores/chain.rb +34 -0
- data/lib/sass/cache_stores/filesystem.rb +60 -0
- data/lib/sass/cache_stores/memory.rb +46 -0
- data/lib/sass/cache_stores/null.rb +25 -0
- data/lib/sass/cache_stores.rb +15 -0
- data/lib/sass/callbacks.rb +67 -0
- data/lib/sass/css.rb +407 -0
- data/lib/sass/deprecation.rb +55 -0
- data/lib/sass/engine.rb +1236 -0
- data/lib/sass/environment.rb +236 -0
- data/lib/sass/error.rb +198 -0
- data/lib/sass/exec/base.rb +188 -0
- data/lib/sass/exec/sass_convert.rb +283 -0
- data/lib/sass/exec/sass_scss.rb +436 -0
- data/lib/sass/exec.rb +9 -0
- data/lib/sass/features.rb +48 -0
- data/lib/sass/importers/base.rb +182 -0
- data/lib/sass/importers/deprecated_path.rb +51 -0
- data/lib/sass/importers/filesystem.rb +221 -0
- data/lib/sass/importers.rb +23 -0
- data/lib/sass/logger/base.rb +47 -0
- data/lib/sass/logger/delayed.rb +50 -0
- data/lib/sass/logger/log_level.rb +45 -0
- data/lib/sass/logger.rb +17 -0
- data/lib/sass/media.rb +210 -0
- data/lib/sass/plugin/compiler.rb +552 -0
- data/lib/sass/plugin/configuration.rb +134 -0
- data/lib/sass/plugin/generic.rb +15 -0
- data/lib/sass/plugin/merb.rb +48 -0
- data/lib/sass/plugin/rack.rb +60 -0
- data/lib/sass/plugin/rails.rb +47 -0
- data/lib/sass/plugin/staleness_checker.rb +199 -0
- data/lib/sass/plugin.rb +134 -0
- data/lib/sass/railtie.rb +10 -0
- data/lib/sass/repl.rb +57 -0
- data/lib/sass/root.rb +7 -0
- data/lib/sass/script/css_lexer.rb +33 -0
- data/lib/sass/script/css_parser.rb +36 -0
- data/lib/sass/script/functions.rb +3103 -0
- data/lib/sass/script/lexer.rb +518 -0
- data/lib/sass/script/parser.rb +1164 -0
- data/lib/sass/script/tree/funcall.rb +314 -0
- data/lib/sass/script/tree/interpolation.rb +220 -0
- data/lib/sass/script/tree/list_literal.rb +119 -0
- data/lib/sass/script/tree/literal.rb +49 -0
- data/lib/sass/script/tree/map_literal.rb +64 -0
- data/lib/sass/script/tree/node.rb +119 -0
- data/lib/sass/script/tree/operation.rb +149 -0
- data/lib/sass/script/tree/selector.rb +26 -0
- data/lib/sass/script/tree/string_interpolation.rb +125 -0
- data/lib/sass/script/tree/unary_operation.rb +69 -0
- data/lib/sass/script/tree/variable.rb +57 -0
- data/lib/sass/script/tree.rb +16 -0
- data/lib/sass/script/value/arg_list.rb +36 -0
- data/lib/sass/script/value/base.rb +258 -0
- data/lib/sass/script/value/bool.rb +35 -0
- data/lib/sass/script/value/callable.rb +25 -0
- data/lib/sass/script/value/color.rb +704 -0
- data/lib/sass/script/value/function.rb +19 -0
- data/lib/sass/script/value/helpers.rb +298 -0
- data/lib/sass/script/value/list.rb +135 -0
- data/lib/sass/script/value/map.rb +70 -0
- data/lib/sass/script/value/null.rb +44 -0
- data/lib/sass/script/value/number.rb +564 -0
- data/lib/sass/script/value/string.rb +138 -0
- data/lib/sass/script/value.rb +13 -0
- data/lib/sass/script.rb +66 -0
- data/lib/sass/scss/css_parser.rb +61 -0
- data/lib/sass/scss/parser.rb +1343 -0
- data/lib/sass/scss/rx.rb +134 -0
- data/lib/sass/scss/static_parser.rb +351 -0
- data/lib/sass/scss.rb +14 -0
- data/lib/sass/selector/abstract_sequence.rb +112 -0
- data/lib/sass/selector/comma_sequence.rb +195 -0
- data/lib/sass/selector/pseudo.rb +291 -0
- data/lib/sass/selector/sequence.rb +661 -0
- data/lib/sass/selector/simple.rb +124 -0
- data/lib/sass/selector/simple_sequence.rb +348 -0
- data/lib/sass/selector.rb +327 -0
- data/lib/sass/shared.rb +76 -0
- data/lib/sass/source/map.rb +209 -0
- data/lib/sass/source/position.rb +39 -0
- data/lib/sass/source/range.rb +41 -0
- data/lib/sass/stack.rb +140 -0
- data/lib/sass/supports.rb +225 -0
- data/lib/sass/tree/at_root_node.rb +83 -0
- data/lib/sass/tree/charset_node.rb +22 -0
- data/lib/sass/tree/comment_node.rb +82 -0
- data/lib/sass/tree/content_node.rb +9 -0
- data/lib/sass/tree/css_import_node.rb +68 -0
- data/lib/sass/tree/debug_node.rb +18 -0
- data/lib/sass/tree/directive_node.rb +59 -0
- data/lib/sass/tree/each_node.rb +24 -0
- data/lib/sass/tree/error_node.rb +18 -0
- data/lib/sass/tree/extend_node.rb +43 -0
- data/lib/sass/tree/for_node.rb +36 -0
- data/lib/sass/tree/function_node.rb +44 -0
- data/lib/sass/tree/if_node.rb +52 -0
- data/lib/sass/tree/import_node.rb +75 -0
- data/lib/sass/tree/keyframe_rule_node.rb +15 -0
- data/lib/sass/tree/media_node.rb +48 -0
- data/lib/sass/tree/mixin_def_node.rb +38 -0
- data/lib/sass/tree/mixin_node.rb +52 -0
- data/lib/sass/tree/node.rb +240 -0
- data/lib/sass/tree/prop_node.rb +162 -0
- data/lib/sass/tree/return_node.rb +19 -0
- data/lib/sass/tree/root_node.rb +44 -0
- data/lib/sass/tree/rule_node.rb +153 -0
- data/lib/sass/tree/supports_node.rb +38 -0
- data/lib/sass/tree/trace_node.rb +33 -0
- data/lib/sass/tree/variable_node.rb +36 -0
- data/lib/sass/tree/visitors/base.rb +72 -0
- data/lib/sass/tree/visitors/check_nesting.rb +173 -0
- data/lib/sass/tree/visitors/convert.rb +350 -0
- data/lib/sass/tree/visitors/cssize.rb +362 -0
- data/lib/sass/tree/visitors/deep_copy.rb +107 -0
- data/lib/sass/tree/visitors/extend.rb +64 -0
- data/lib/sass/tree/visitors/perform.rb +572 -0
- data/lib/sass/tree/visitors/set_options.rb +139 -0
- data/lib/sass/tree/visitors/to_css.rb +440 -0
- data/lib/sass/tree/warn_node.rb +18 -0
- data/lib/sass/tree/while_node.rb +18 -0
- data/lib/sass/util/multibyte_string_scanner.rb +151 -0
- data/lib/sass/util/normalized_map.rb +122 -0
- data/lib/sass/util/subset_map.rb +109 -0
- data/lib/sass/util/test.rb +9 -0
- data/lib/sass/util.rb +1137 -0
- data/lib/sass/version.rb +120 -0
- data/lib/sass.rb +102 -0
- data/rails/init.rb +1 -0
- metadata +283 -0
data/lib/sass/script.rb
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'sass/scss/rx'
|
2
|
+
|
3
|
+
module Sass
|
4
|
+
# SassScript is code that's embedded in Sass documents
|
5
|
+
# to allow for property values to be computed from variables.
|
6
|
+
#
|
7
|
+
# This module contains code that handles the parsing and evaluation of SassScript.
|
8
|
+
module Script
|
9
|
+
# The regular expression used to parse variables.
|
10
|
+
MATCH = /^\$(#{Sass::SCSS::RX::IDENT})\s*:\s*(.+?)
|
11
|
+
(!#{Sass::SCSS::RX::IDENT}(?:\s+!#{Sass::SCSS::RX::IDENT})*)?$/x
|
12
|
+
|
13
|
+
# The regular expression used to validate variables without matching.
|
14
|
+
VALIDATE = /^\$#{Sass::SCSS::RX::IDENT}$/
|
15
|
+
|
16
|
+
# Parses a string of SassScript
|
17
|
+
#
|
18
|
+
# @param value [String] The SassScript
|
19
|
+
# @param line [Integer] The number of the line on which the SassScript appeared.
|
20
|
+
# Used for error reporting
|
21
|
+
# @param offset [Integer] The number of characters in on `line` that the SassScript started.
|
22
|
+
# Used for error reporting
|
23
|
+
# @param options [{Symbol => Object}] An options hash;
|
24
|
+
# see {file:SASS_REFERENCE.md#Options the Sass options documentation}
|
25
|
+
# @return [Script::Tree::Node] The root node of the parse tree
|
26
|
+
def self.parse(value, line, offset, options = {})
|
27
|
+
Parser.parse(value, line, offset, options)
|
28
|
+
rescue Sass::SyntaxError => e
|
29
|
+
e.message << ": #{value.inspect}." if e.message == "SassScript error"
|
30
|
+
e.modify_backtrace(:line => line, :filename => options[:filename])
|
31
|
+
raise e
|
32
|
+
end
|
33
|
+
|
34
|
+
require 'sass/script/functions'
|
35
|
+
require 'sass/script/parser'
|
36
|
+
require 'sass/script/tree'
|
37
|
+
require 'sass/script/value'
|
38
|
+
|
39
|
+
# @private
|
40
|
+
CONST_RENAMES = {
|
41
|
+
:Literal => Sass::Script::Value::Base,
|
42
|
+
:ArgList => Sass::Script::Value::ArgList,
|
43
|
+
:Bool => Sass::Script::Value::Bool,
|
44
|
+
:Color => Sass::Script::Value::Color,
|
45
|
+
:List => Sass::Script::Value::List,
|
46
|
+
:Null => Sass::Script::Value::Null,
|
47
|
+
:Number => Sass::Script::Value::Number,
|
48
|
+
:String => Sass::Script::Value::String,
|
49
|
+
:Node => Sass::Script::Tree::Node,
|
50
|
+
:Funcall => Sass::Script::Tree::Funcall,
|
51
|
+
:Interpolation => Sass::Script::Tree::Interpolation,
|
52
|
+
:Operation => Sass::Script::Tree::Operation,
|
53
|
+
:StringInterpolation => Sass::Script::Tree::StringInterpolation,
|
54
|
+
:UnaryOperation => Sass::Script::Tree::UnaryOperation,
|
55
|
+
:Variable => Sass::Script::Tree::Variable,
|
56
|
+
}
|
57
|
+
|
58
|
+
# @private
|
59
|
+
def self.const_missing(name)
|
60
|
+
klass = CONST_RENAMES[name]
|
61
|
+
super unless klass
|
62
|
+
CONST_RENAMES.each {|n, k| const_set(n, k)}
|
63
|
+
klass
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'sass/script/css_parser'
|
2
|
+
|
3
|
+
module Sass
|
4
|
+
module SCSS
|
5
|
+
# This is a subclass of {Parser} which only parses plain CSS.
|
6
|
+
# It doesn't support any Sass extensions, such as interpolation,
|
7
|
+
# parent references, nested selectors, and so forth.
|
8
|
+
# It does support all the same CSS hacks as the SCSS parser, though.
|
9
|
+
class CssParser < StaticParser
|
10
|
+
private
|
11
|
+
|
12
|
+
def placeholder_selector; nil; end
|
13
|
+
def parent_selector; nil; end
|
14
|
+
def interpolation(warn_for_color = false); nil; end
|
15
|
+
def use_css_import?; true; end
|
16
|
+
|
17
|
+
def block_contents(node, context)
|
18
|
+
if node.is_a?(Sass::Tree::DirectiveNode) && node.normalized_name == '@keyframes'
|
19
|
+
context = :keyframes
|
20
|
+
end
|
21
|
+
super(node, context)
|
22
|
+
end
|
23
|
+
|
24
|
+
def block_child(context)
|
25
|
+
case context
|
26
|
+
when :ruleset
|
27
|
+
declaration
|
28
|
+
when :stylesheet
|
29
|
+
directive || ruleset
|
30
|
+
when :directive
|
31
|
+
directive || declaration_or_ruleset
|
32
|
+
when :keyframes
|
33
|
+
keyframes_ruleset
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def nested_properties!(node)
|
38
|
+
expected('expression (e.g. 1px, bold)')
|
39
|
+
end
|
40
|
+
|
41
|
+
def ruleset
|
42
|
+
start_pos = source_position
|
43
|
+
return unless (selector = selector_comma_sequence)
|
44
|
+
block(node(Sass::Tree::RuleNode.new(selector, range(start_pos)), start_pos), :ruleset)
|
45
|
+
end
|
46
|
+
|
47
|
+
def keyframes_ruleset
|
48
|
+
start_pos = source_position
|
49
|
+
return unless (selector = keyframes_selector)
|
50
|
+
block(
|
51
|
+
node(
|
52
|
+
Sass::Tree::KeyframeRuleNode.new(
|
53
|
+
Sass::Util.strip_except_escapes(selector)),
|
54
|
+
start_pos),
|
55
|
+
:ruleset)
|
56
|
+
end
|
57
|
+
|
58
|
+
@sass_script_parser = Sass::Script::CssParser
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|