sass 3.1.0.alpha.221 → 3.1.0.alpha.246
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.
- data/REVISION +1 -1
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/sass/cache_stores/filesystem.rb +6 -4
- data/lib/sass/engine.rb +18 -44
- data/lib/sass/exec.rb +3 -10
- data/lib/sass/importers/filesystem.rb +10 -9
- data/lib/sass/less.rb +1 -1
- data/lib/sass/plugin.rb +1 -1
- data/lib/sass/plugin/compiler.rb +2 -2
- data/lib/sass/script.rb +2 -25
- data/lib/sass/script/color.rb +0 -11
- data/lib/sass/script/funcall.rb +0 -9
- data/lib/sass/script/functions.rb +1 -21
- data/lib/sass/script/lexer.rb +1 -4
- data/lib/sass/script/list.rb +0 -1
- data/lib/sass/script/node.rb +0 -27
- data/lib/sass/script/number.rb +1 -1
- data/lib/sass/script/operation.rb +0 -5
- data/lib/sass/script/parser.rb +1 -8
- data/lib/sass/script/string.rb +2 -17
- data/lib/sass/script/string_interpolation.rb +1 -0
- data/lib/sass/scss/parser.rb +3 -1
- data/lib/sass/scss/rx.rb +2 -1
- data/lib/sass/scss/script_lexer.rb +1 -1
- data/lib/sass/tree/comment_node.rb +23 -2
- data/lib/sass/tree/mixin_node.rb +0 -7
- data/lib/sass/tree/prop_node.rb +10 -3
- data/lib/sass/tree/visitors/check_nesting.rb +26 -16
- data/lib/sass/tree/visitors/convert.rb +11 -2
- data/lib/sass/tree/visitors/perform.rb +10 -13
- data/lib/sass/tree/visitors/to_css.rb +17 -5
- data/test/sass/conversion_test.rb +17 -102
- data/test/sass/engine_test.rb +70 -370
- data/test/sass/functions_test.rb +4 -0
- data/test/sass/plugin_test.rb +36 -24
- data/test/sass/script_conversion_test.rb +0 -38
- data/test/test_helper.rb +0 -3
- metadata +2 -4
- data/bin/css2sass +0 -13
data/REVISION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
7dc3a7bda300a9a18b37b58776ebe02915b49e82
|
data/Rakefile
CHANGED
@@ -11,7 +11,7 @@ task :default => :test
|
|
11
11
|
require 'rake/testtask'
|
12
12
|
|
13
13
|
Rake::TestTask.new do |t|
|
14
|
-
t.libs << '
|
14
|
+
t.libs << 'test'
|
15
15
|
test_files = FileList[scope('test/**/*_test.rb')]
|
16
16
|
test_files.exclude(scope('test/rails/*'))
|
17
17
|
test_files.exclude(scope('test/plugins/*'))
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.1.0.alpha.
|
1
|
+
3.1.0.alpha.246
|
@@ -29,17 +29,19 @@ module Sass
|
|
29
29
|
|
30
30
|
# @see Base#\_store
|
31
31
|
def _store(key, version, sha, contents)
|
32
|
-
return unless File.writable?(File.dirname(@cache_location))
|
33
|
-
return if File.exists?(@cache_location) && !File.writable?(@cache_location)
|
32
|
+
# return unless File.writable?(File.dirname(@cache_location))
|
33
|
+
# return if File.exists?(@cache_location) && !File.writable?(@cache_location)
|
34
34
|
compiled_filename = path_to(key)
|
35
|
-
return if File.exists?(File.dirname(compiled_filename)) && !File.writable?(File.dirname(compiled_filename))
|
36
|
-
return if File.exists?(compiled_filename) && !File.writable?(compiled_filename)
|
35
|
+
# return if File.exists?(File.dirname(compiled_filename)) && !File.writable?(File.dirname(compiled_filename))
|
36
|
+
# return if File.exists?(compiled_filename) && !File.writable?(compiled_filename)
|
37
37
|
FileUtils.mkdir_p(File.dirname(compiled_filename))
|
38
38
|
File.open(compiled_filename, "wb") do |f|
|
39
39
|
f.puts(version)
|
40
40
|
f.puts(sha)
|
41
41
|
f.write(contents)
|
42
42
|
end
|
43
|
+
rescue Errno::EACCES
|
44
|
+
#pass
|
43
45
|
end
|
44
46
|
|
45
47
|
private
|
data/lib/sass/engine.rb
CHANGED
@@ -97,10 +97,6 @@ module Sass
|
|
97
97
|
# The character that begins a CSS property.
|
98
98
|
PROPERTY_CHAR = ?:
|
99
99
|
|
100
|
-
# The character that designates that
|
101
|
-
# a property should be assigned to a SassScript expression.
|
102
|
-
SCRIPT_CHAR = ?=
|
103
|
-
|
104
100
|
# The character that designates the beginning of a comment,
|
105
101
|
# either Sass or CSS.
|
106
102
|
COMMENT_CHAR = ?/
|
@@ -125,16 +121,9 @@ module Sass
|
|
125
121
|
# Includes named mixin declared using MIXIN_DEFINITION_CHAR
|
126
122
|
MIXIN_INCLUDE_CHAR = ?+
|
127
123
|
|
128
|
-
# The regex that matches properties of the form `name: prop`.
|
129
|
-
PROPERTY_NEW_MATCHER = /^[^\s:"\[]+\s*[=:](\s|$)/
|
130
|
-
|
131
|
-
# The regex that matches and extracts data from
|
132
|
-
# properties of the form `name: prop`.
|
133
|
-
PROPERTY_NEW = /^([^\s=:"]+)\s*(=|:)(?:\s+|$)(.*)/
|
134
|
-
|
135
124
|
# The regex that matches and extracts data from
|
136
125
|
# properties of the form `:name prop`.
|
137
|
-
PROPERTY_OLD = /^:([^\s=:"]+)\s*(
|
126
|
+
PROPERTY_OLD = /^:([^\s=:"]+)\s*(?:\s+|$)(.*)/
|
138
127
|
|
139
128
|
# The default options for Sass::Engine.
|
140
129
|
# @api public
|
@@ -533,19 +522,19 @@ WARNING
|
|
533
522
|
when PROPERTY_CHAR
|
534
523
|
if line.text[1] == PROPERTY_CHAR ||
|
535
524
|
(@options[:property_syntax] == :new &&
|
536
|
-
line.text =~ PROPERTY_OLD && $
|
525
|
+
line.text =~ PROPERTY_OLD && $2.empty?)
|
537
526
|
# Support CSS3-style pseudo-elements,
|
538
527
|
# which begin with ::,
|
539
528
|
# as well as pseudo-classes
|
540
529
|
# if we're using the new property syntax
|
541
530
|
Tree::RuleNode.new(parse_interp(line.text))
|
542
531
|
else
|
543
|
-
name,
|
532
|
+
name, value = line.text.scan(PROPERTY_OLD)[0]
|
544
533
|
raise SyntaxError.new("Invalid property: \"#{line.text}\".",
|
545
534
|
:line => @line) if name.nil? || value.nil?
|
546
|
-
parse_property(name, parse_interp(name),
|
535
|
+
parse_property(name, parse_interp(name), value, :old, line)
|
547
536
|
end
|
548
|
-
when
|
537
|
+
when ?$
|
549
538
|
parse_variable(line)
|
550
539
|
when COMMENT_CHAR
|
551
540
|
parse_comment(line.text)
|
@@ -580,48 +569,39 @@ WARNING
|
|
580
569
|
end
|
581
570
|
|
582
571
|
name = line.text[0...scanner.pos]
|
583
|
-
if scanner.scan(/\s
|
584
|
-
parse_property(name, res, scanner
|
572
|
+
if scanner.scan(/\s*:(?:\s|$)/)
|
573
|
+
parse_property(name, res, scanner.rest, :new, line)
|
585
574
|
else
|
586
575
|
res.pop if comment
|
587
576
|
Tree::RuleNode.new(res + parse_interp(scanner.rest))
|
588
577
|
end
|
589
578
|
end
|
590
579
|
|
591
|
-
def parse_property(name, parsed_name,
|
580
|
+
def parse_property(name, parsed_name, value, prop, line)
|
592
581
|
if value.strip.empty?
|
593
582
|
expr = Sass::Script::String.new("")
|
594
583
|
else
|
584
|
+
important = false
|
585
|
+
if value =~ Sass::SCSS::RX::IMPORTANT
|
586
|
+
important = true
|
587
|
+
value = value.gsub(Sass::SCSS::RX::IMPORTANT,"")
|
588
|
+
end
|
595
589
|
expr = parse_script(value, :offset => line.offset + line.text.index(value))
|
596
590
|
|
597
|
-
if eq.strip[0] == SCRIPT_CHAR
|
598
|
-
expr.context = :equals
|
599
|
-
Script.equals_warning("properties", name,
|
600
|
-
Sass::Tree::PropNode.val_to_sass(expr, @options), false,
|
601
|
-
@line, line.offset + 1, @options[:filename])
|
602
|
-
end
|
603
591
|
end
|
604
|
-
Tree::PropNode.new(parse_interp(name), expr, prop)
|
592
|
+
Tree::PropNode.new(parse_interp(name), expr, important, prop)
|
605
593
|
end
|
606
594
|
|
607
595
|
def parse_variable(line)
|
608
|
-
name,
|
609
|
-
guarded = op =~ /^\|\|/
|
596
|
+
name, value, default = line.text.scan(Script::MATCH)[0]
|
610
597
|
raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath variable declarations.",
|
611
598
|
:line => @line + 1) unless line.children.empty?
|
612
599
|
raise SyntaxError.new("Invalid variable: \"#{line.text}\".",
|
613
600
|
:line => @line) unless name && value
|
614
|
-
Script.var_warning(name, @line, line.offset + 1, @options[:filename]) if line.text[0] == ?!
|
615
601
|
|
616
602
|
expr = parse_script(value, :offset => line.offset + line.text.index(value))
|
617
|
-
if op =~ /=$/
|
618
|
-
expr.context = :equals
|
619
|
-
type = guarded ? "variable defaults" : "variables"
|
620
|
-
Script.equals_warning(type, "$#{name}", expr.to_sass,
|
621
|
-
guarded, @line, line.offset + 1, @options[:filename])
|
622
|
-
end
|
623
603
|
|
624
|
-
Tree::VariableNode.new(name, expr, default
|
604
|
+
Tree::VariableNode.new(name, expr, default)
|
625
605
|
end
|
626
606
|
|
627
607
|
def parse_comment(line)
|
@@ -712,11 +692,8 @@ WARNING
|
|
712
692
|
raise SyntaxError.new("Invalid for directive '@for #{text}': expected #{expected}.")
|
713
693
|
end
|
714
694
|
raise SyntaxError.new("Invalid variable \"#{var}\".") unless var =~ Script::VALIDATE
|
715
|
-
if var.slice!(0) == ?!
|
716
|
-
offset = line.offset + line.text.index("!" + var) + 1
|
717
|
-
Script.var_warning(var, @line, offset, @options[:filename])
|
718
|
-
end
|
719
695
|
|
696
|
+
var = var[1..-1]
|
720
697
|
parsed_from = parse_script(from_expr, :offset => line.offset + line.text.index(from_expr))
|
721
698
|
parsed_to = parse_script(to_expr, :offset => line.offset + line.text.index(to_expr))
|
722
699
|
Tree::ForNode.new(var, parsed_from, parsed_to, to_name == 'to')
|
@@ -734,11 +711,8 @@ WARNING
|
|
734
711
|
raise SyntaxError.new("Invalid for directive '@each #{text}': expected #{expected}.")
|
735
712
|
end
|
736
713
|
raise SyntaxError.new("Invalid variable \"#{var}\".") unless var =~ Script::VALIDATE
|
737
|
-
if var.slice!(0) == ?!
|
738
|
-
offset = line.offset + line.text.index("!" + var) + 1
|
739
|
-
Script.var_warning(var, @line, offset, @options[:filename])
|
740
|
-
end
|
741
714
|
|
715
|
+
var = var[1..-1]
|
742
716
|
parsed_list = parse_script(list_expr, :offset => line.offset + line.text.index(list_expr))
|
743
717
|
Tree::EachNode.new(var, parsed_list)
|
744
718
|
end
|
data/lib/sass/exec.rb
CHANGED
@@ -325,6 +325,7 @@ END
|
|
325
325
|
end
|
326
326
|
end
|
327
327
|
Compass.add_project_configuration
|
328
|
+
Compass.configuration.project_path ||= Dir.pwd
|
328
329
|
@options[:for_engine][:load_paths] += Compass.configuration.sass_load_paths
|
329
330
|
end
|
330
331
|
|
@@ -447,12 +448,11 @@ Options:
|
|
447
448
|
END
|
448
449
|
|
449
450
|
opts.on('-F', '--from FORMAT',
|
450
|
-
'The format to convert from. Can be css, scss, sass, less
|
451
|
-
'sass2 is the same as sass, but updates more old syntax to new.',
|
451
|
+
'The format to convert from. Can be css, scss, sass, less.',
|
452
452
|
'By default, this is inferred from the input filename.',
|
453
453
|
'If there is none, defaults to css.') do |name|
|
454
454
|
@options[:from] = name.downcase.to_sym
|
455
|
-
unless [:css, :scss, :sass, :less
|
455
|
+
unless [:css, :scss, :sass, :less].include?(@options[:from])
|
456
456
|
raise "Unknown format for sass-convert --from: #{name}"
|
457
457
|
end
|
458
458
|
try_less_note if @options[:from] == :less
|
@@ -536,14 +536,12 @@ END
|
|
536
536
|
@options[:output] ||= @options[:input]
|
537
537
|
|
538
538
|
from = @options[:from]
|
539
|
-
from = :sass if from == :sass2
|
540
539
|
if @options[:to] == @options[:from] && !@options[:in_place]
|
541
540
|
fmt = @options[:from]
|
542
541
|
raise "Error: converting from #{fmt} to #{fmt} without --in-place"
|
543
542
|
end
|
544
543
|
|
545
544
|
ext = @options[:from]
|
546
|
-
ext = :sass if ext == :sass2
|
547
545
|
Dir.glob("#{@options[:input]}/**/*.#{ext}") do |f|
|
548
546
|
output =
|
549
547
|
if @options[:in_place]
|
@@ -594,11 +592,6 @@ END
|
|
594
592
|
end
|
595
593
|
end
|
596
594
|
|
597
|
-
if @options[:from] == :sass2
|
598
|
-
@options[:from] = :sass
|
599
|
-
@options[:for_engine][:sass2] = true
|
600
|
-
end
|
601
|
-
|
602
595
|
@options[:from] ||= :css
|
603
596
|
@options[:to] ||= :sass
|
604
597
|
@options[:for_engine][:syntax] = @options[:from]
|
@@ -25,8 +25,8 @@ module Sass
|
|
25
25
|
|
26
26
|
# @see Base#mtime
|
27
27
|
def mtime(name, options)
|
28
|
-
file = find_real_file(@root, name)
|
29
|
-
File.mtime(
|
28
|
+
file, s = find_real_file(@root, name)
|
29
|
+
File.mtime(file) if file
|
30
30
|
rescue Errno::ENOENT
|
31
31
|
nil
|
32
32
|
end
|
@@ -67,13 +67,12 @@ module Sass
|
|
67
67
|
sorted_exts = extensions.sort
|
68
68
|
syntax = extensions[extname]
|
69
69
|
|
70
|
-
|
71
|
-
|
72
|
-
next [["#{name}.#{extensions.invert[syntax]}", syntax]] if syntax
|
73
|
-
sorted_exts.map {|ext, syn| ["#{name}.#{ext}", syn]}
|
74
|
-
end, 1)
|
70
|
+
return [["#{dirname}/{_,}#{basename}.#{extensions.invert[syntax]}", syntax]] if syntax
|
71
|
+
sorted_exts.map {|ext, syn| ["#{dirname}/{_,}#{basename}.#{ext}", syn]}
|
75
72
|
end
|
76
73
|
|
74
|
+
|
75
|
+
REDUNDANT_DIRECTORY = %r{#{Regexp.escape(File::SEPARATOR)}\.#{Regexp.escape(File::SEPARATOR)}}
|
77
76
|
# Given a base directory and an `@import`ed name,
|
78
77
|
# finds an existant file that matches the name.
|
79
78
|
#
|
@@ -81,8 +80,10 @@ module Sass
|
|
81
80
|
# @param name [String] The filename to search for.
|
82
81
|
# @return [(String, Symbol)] A filename-syntax pair.
|
83
82
|
def find_real_file(dir, name)
|
84
|
-
possible_files(name)
|
85
|
-
|
83
|
+
for (f,s) in possible_files(name)
|
84
|
+
path = (dir == ".") ? f : "#{dir}/#{f}"
|
85
|
+
if full_path = Dir[path].first
|
86
|
+
full_path.gsub!(REDUNDANT_DIRECTORY,File::SEPARATOR)
|
86
87
|
return full_path, s
|
87
88
|
end
|
88
89
|
end
|
data/lib/sass/less.rb
CHANGED
data/lib/sass/plugin.rb
CHANGED
@@ -41,7 +41,7 @@ module Sass
|
|
41
41
|
# (in this Ruby instance).
|
42
42
|
#
|
43
43
|
# @return [Boolean]
|
44
|
-
|
44
|
+
attr_accessor :checked_for_updates
|
45
45
|
|
46
46
|
# Same as \{#update\_stylesheets}, but respects \{#checked\_for\_updates}
|
47
47
|
# and the {file:SASS_REFERENCE.md#always_update-option `:always_update`}
|
data/lib/sass/plugin/compiler.rb
CHANGED
@@ -161,7 +161,7 @@ module Sass::Plugin
|
|
161
161
|
# the second is the location of the CSS file that it should be compiled to.
|
162
162
|
def update_stylesheets(individual_files = [])
|
163
163
|
run_updating_stylesheets individual_files
|
164
|
-
|
164
|
+
Sass::Plugin.checked_for_updates = true
|
165
165
|
staleness_checker = StalenessChecker.new(engine_options)
|
166
166
|
|
167
167
|
individual_files.each do |t, c|
|
@@ -174,7 +174,7 @@ module Sass::Plugin
|
|
174
174
|
|
175
175
|
Dir.glob(File.join(template_location, "**", "[^_]*.s[ca]ss")).sort.each do |file|
|
176
176
|
# Get the relative path to the file
|
177
|
-
name = file.sub(template_location.sub(/\/*$/, '/'), "")
|
177
|
+
name = file.sub(template_location.to_s.sub(/\/*$/, '/'), "")
|
178
178
|
css = css_filename(name, css_location)
|
179
179
|
|
180
180
|
if options[:always_update] || staleness_checker.stylesheet_needs_update?(css, file)
|
data/lib/sass/script.rb
CHANGED
@@ -13,10 +13,10 @@ module Sass
|
|
13
13
|
# This module contains code that handles the parsing and evaluation of SassScript.
|
14
14
|
module Script
|
15
15
|
# The regular expression used to parse variables.
|
16
|
-
MATCH =
|
16
|
+
MATCH = /^\$(#{Sass::SCSS::RX::IDENT})\s*:\s*(.+?)(!(?i:default))?$/
|
17
17
|
|
18
18
|
# The regular expression used to validate variables without matching.
|
19
|
-
VALIDATE =
|
19
|
+
VALIDATE = /^\$#{Sass::SCSS::RX::IDENT}$/
|
20
20
|
|
21
21
|
# Parses a string of SassScript
|
22
22
|
#
|
@@ -36,28 +36,5 @@ module Sass
|
|
36
36
|
raise e
|
37
37
|
end
|
38
38
|
|
39
|
-
# @private
|
40
|
-
def self.var_warning(varname, line, offset, filename)
|
41
|
-
Sass::Util.sass_warn <<MESSAGE
|
42
|
-
DEPRECATION WARNING:
|
43
|
-
On line #{line}, character #{offset}#{" of '#{filename}'" if filename}
|
44
|
-
Variables with ! have been deprecated and will be removed in version 3.2.
|
45
|
-
Use \"$#{varname}\" instead.
|
46
|
-
|
47
|
-
You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
|
48
|
-
MESSAGE
|
49
|
-
end
|
50
|
-
|
51
|
-
# @private
|
52
|
-
def self.equals_warning(types, name, val, guarded, line, offset, filename)
|
53
|
-
Sass::Util.sass_warn <<MESSAGE
|
54
|
-
DEPRECATION WARNING:
|
55
|
-
On line #{line}#{", character #{offset}" if offset}#{" of '#{filename}'" if filename}
|
56
|
-
Setting #{types} with #{"||" if guarded}= has been deprecated and will be removed in version 3.2.
|
57
|
-
Use "#{name}: #{val}#{" !default" if guarded}" instead.
|
58
|
-
|
59
|
-
You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
|
60
|
-
MESSAGE
|
61
|
-
end
|
62
39
|
end
|
63
40
|
end
|
data/lib/sass/script/color.rb
CHANGED
@@ -182,17 +182,6 @@ module Sass::Script
|
|
182
182
|
alpha < 1
|
183
183
|
end
|
184
184
|
|
185
|
-
# @deprecated This will be removed in version 3.2.
|
186
|
-
# @see #rgb
|
187
|
-
def value
|
188
|
-
Sass::Util.sass_warn <<END
|
189
|
-
DEPRECATION WARNING:
|
190
|
-
The Sass::Script::Color #value attribute is deprecated and will be
|
191
|
-
removed in version 3.2. Use the #rgb attribute instead.
|
192
|
-
END
|
193
|
-
rgb
|
194
|
-
end
|
195
|
-
|
196
185
|
# Returns the red, green, and blue components of the color.
|
197
186
|
#
|
198
187
|
# @return [Array<Fixnum>] A frozen three-element array of the red, green, and blue
|
data/lib/sass/script/funcall.rb
CHANGED
@@ -23,15 +23,6 @@ module Sass
|
|
23
23
|
# @return [{String => Script::Node}]
|
24
24
|
attr_reader :keywords
|
25
25
|
|
26
|
-
# Don't set the context for child nodes if this is `url()`,
|
27
|
-
# since `url()` allows quoted strings.
|
28
|
-
#
|
29
|
-
# @param context [Symbol]
|
30
|
-
# @see Node#context=
|
31
|
-
def context=(context)
|
32
|
-
super unless @name == "url"
|
33
|
-
end
|
34
|
-
|
35
26
|
# @param name [String] See \{#name}
|
36
27
|
# @param args [Array<Script::Node>] See \{#args}
|
37
28
|
# @param keywords [{String => Script::Node}] See \{#keywords}
|
@@ -329,30 +329,20 @@ module Sass::Script
|
|
329
329
|
end
|
330
330
|
|
331
331
|
class << self
|
332
|
-
FUNCTIONS = Set.new
|
333
|
-
|
334
332
|
# Returns whether user function with a given name exists.
|
335
333
|
#
|
336
334
|
# @param function_name [String]
|
337
335
|
# @return [Boolean]
|
338
|
-
|
339
|
-
FUNCTIONS.include?(function_name)
|
340
|
-
end
|
336
|
+
alias_method :callable?, :public_method_defined?
|
341
337
|
|
342
338
|
private
|
343
339
|
def include(*args)
|
344
340
|
r = super
|
345
|
-
update_callable_functions
|
346
341
|
# We have to re-include ourselves into EvaluationContext to work around
|
347
342
|
# an icky Ruby restriction.
|
348
343
|
EvaluationContext.send :include, self
|
349
344
|
r
|
350
345
|
end
|
351
|
-
|
352
|
-
def update_callable_functions
|
353
|
-
FUNCTIONS.clear
|
354
|
-
public_instance_methods.each {|function_name| FUNCTIONS << function_name.to_s}
|
355
|
-
end
|
356
346
|
end
|
357
347
|
|
358
348
|
# Creates a {Color} object from red, green, and blue values.
|
@@ -1347,15 +1337,5 @@ module Sass::Script
|
|
1347
1337
|
color.with(attr => Sass::Util.restrict(
|
1348
1338
|
color.send(attr).send(op, amount.value), range))
|
1349
1339
|
end
|
1350
|
-
|
1351
|
-
class << self
|
1352
|
-
private
|
1353
|
-
def method_added(name)
|
1354
|
-
update_callable_functions
|
1355
|
-
super
|
1356
|
-
end
|
1357
|
-
end
|
1358
|
-
|
1359
|
-
update_callable_functions # generate the initial set
|
1360
1340
|
end
|
1361
1341
|
end
|
data/lib/sass/script/lexer.rb
CHANGED
@@ -87,7 +87,7 @@ module Sass
|
|
87
87
|
:whitespace => /\s+/,
|
88
88
|
:comment => COMMENT,
|
89
89
|
:single_line_comment => SINGLE_LINE_COMMENT,
|
90
|
-
:variable => /(
|
90
|
+
:variable => /(\$)(#{IDENT})/,
|
91
91
|
:ident => /(#{IDENT})(\()?/,
|
92
92
|
:number => /(-)?(?:(\d*\.\d+)|(\d+))([a-zA-Z%]+)?/,
|
93
93
|
:color => HEXCOLOR,
|
@@ -242,9 +242,6 @@ module Sass
|
|
242
242
|
line = @line
|
243
243
|
offset = @offset
|
244
244
|
return unless scan(rx)
|
245
|
-
if @scanner[1] == '!' && @scanner[2] != 'important'
|
246
|
-
Script.var_warning(@scanner[2], line, offset + 1, @options[:filename])
|
247
|
-
end
|
248
245
|
|
249
246
|
[:const, @scanner[2]]
|
250
247
|
end
|