Module: Sass::SCSS::RX
- Included in:
- Parser, Sass::Script::Lexer
- Defined in:
- lib/sass/scss/rx.rb
Overview
A module containing regular expressions used for lexing tokens in an SCSS document. Most of these are taken from the CSS3 spec, although some have been modified for various reasons.
Constant Summary collapse
- H =
/[0-9a-fA-F]/
- NL =
/\n|\r\n|\r|\f/
- UNICODE =
/\\#{H}{1,6}[ \t\r\n\f]?/
- NONASCII =
/[#{s}]/
- ESCAPE =
/#{UNICODE}|\\[^0-9a-fA-F\r\n\f]/
- NMSTART =
/[_a-zA-Z]|#{NONASCII}|#{ESCAPE}/
- NMCHAR =
/[a-zA-Z0-9_-]|#{NONASCII}|#{ESCAPE}/
- STRING1 =
/\"((?:[^\n\r\f\\"]|\\#{NL}|#{ESCAPE})*)\"/
- STRING2 =
/\'((?:[^\n\r\f\\']|\\#{NL}|#{ESCAPE})*)\'/
- IDENT =
/-*#{NMSTART}#{NMCHAR}*/
- NAME =
/#{NMCHAR}+/
- STRING =
/#{STRING1}|#{STRING2}/
- URLCHAR =
/[#%&*-~]|#{NONASCII}|#{ESCAPE}/
- URL =
/(#{URLCHAR}*)/
- W =
/[ \t\r\n\f]*/
- VARIABLE =
/(\$)(#{Sass::SCSS::RX::IDENT})/
- RANGE =
This is more liberal than the spec's definition, but that definition didn't work well with the greediness rules
/(?:#{H}|\?){1,6}/
- S =
/[ \t\r\n\f]+/
- COMMENT =
%r{/\*([^*]|\*+[^/*])*\**\*/}
- SINGLE_LINE_COMMENT =
%r{//.*(\n[ \t]*//.*)*}
- CDO =
quote("<!--")
- CDC =
quote("-->")
- INCLUDES =
quote("~=")
- DASHMATCH =
quote("|=")
- PREFIXMATCH =
quote("^=")
- SUFFIXMATCH =
quote("$=")
- SUBSTRINGMATCH =
quote("*=")
- HASH =
/##{NAME}/
- IMPORTANT =
/!#{W}important/i
- UNIT =
A unit is like an IDENT, but disallows a hyphen followed by a digit. This allows "1px-2px" to be interpreted as subtraction rather than "1" with the unit "px-2px". It also allows "%".
/-?#{NMSTART}(?:[a-zA-Z0-9_]|#{NONASCII}|#{ESCAPE}|-(?!\.?\d))*|%/
- UNITLESS_NUMBER =
/(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?\d+)?/
- NUMBER =
/#{UNITLESS_NUMBER}(?:#{UNIT})?/
- PERCENTAGE =
/#{UNITLESS_NUMBER}%/
- URI =
/url\(#{W}(?:#{STRING}|#{URL})#{W}\)/i
- FUNCTION =
/#{IDENT}\(/
- UNICODERANGE =
/u\+(?:#{H}{1,6}-#{H}{1,6}|#{RANGE})/i
- PLUS =
Defined in http://www.w3.org/TR/css3-selectors/#lex
/#{W}\+/
- GREATER =
/#{W}>/
- TILDE =
/#{W}~/
- NOT =
quote(":not(", Regexp::IGNORECASE)
- URL_PREFIX =
Defined in https://developer.mozilla.org/en/CSS/@-moz-document as a non-standard version of http://www.w3.org/TR/css3-conditional/
/url-prefix\(#{W}(?:#{STRING}|#{URL})#{W}\)/i
- DOMAIN =
/domain\(#{W}(?:#{STRING}|#{URL})#{W}\)/i
- HEXCOLOR =
Custom
/\#[0-9a-fA-F]+/
- INTERP_START =
/#\{/
- ANY =
/:(-[-\w]+-)?any\(/i
- OPTIONAL =
/!#{W}optional/i
- IDENT_START =
/-|#{NMSTART}/
- IDENT_HYPHEN_INTERP =
/-+(?=#\{)/
- STRING1_NOINTERP =
/\"((?:[^\n\r\f\\"#]|#(?!\{)|#{ESCAPE})*)\"/
- STRING2_NOINTERP =
/\'((?:[^\n\r\f\\'#]|#(?!\{)|#{ESCAPE})*)\'/
- STRING_NOINTERP =
/#{STRING1_NOINTERP}|#{STRING2_NOINTERP}/
- STATIC_COMPONENT =
/#{IDENT}|#{STRING_NOINTERP}|#{HEXCOLOR}|[+-]?#{NUMBER}|\!important/i
- STATIC_VALUE =
%r(#{STATIC_COMPONENT}(\s*[\s,\/]\s*#{STATIC_COMPONENT})*(?=[;}]))i
- STATIC_SELECTOR =
/(#{NMCHAR}|[ \t]|[,>+*]|[:#.]#{NMSTART}){1,50}([{])/i
Class Method Summary collapse
-
.escape_ident(str) ⇒ String
Takes a string and returns a CSS identifier that will have the value of the given string.
Class Method Details
.escape_ident(str) ⇒ String
Takes a string and returns a CSS identifier that will have the value of the given string.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/sass/scss/rx.rb', line 14
def self.escape_ident(str)
return "" if str.empty?
return "\\#{str}" if str == '-' || str == '_'
out = ""
value = str.dup
out << value.slice!(0...1) if value =~ /^[-_]/
if value[0...1] =~ NMSTART
out << value.slice!(0...1)
else
out << escape_char(value.slice!(0...1))
end
out << value.gsub(/[^a-zA-Z0-9_-]/) {|c| escape_char c}
out
end
|