sass 3.3.0.alpha.107 → 3.3.0.alpha.120
Sign up to get free protection for your applications and to get access to all the features.
- data/REVISION +1 -1
- data/VERSION +1 -1
- data/VERSION_DATE +1 -1
- data/lib/sass/engine.rb +2 -4
- data/lib/sass/script/literal.rb +0 -5
- data/lib/sass/script/operation.rb +3 -1
- data/lib/sass/selector/sequence.rb +1 -1
- data/lib/sass/selector/simple_sequence.rb +3 -3
- data/lib/sass/tree/node.rb +1 -1
- data/lib/sass/tree/rule_node.rb +1 -2
- data/lib/sass/tree/visitors/cssize.rb +3 -3
- data/lib/sass/tree/visitors/to_css.rb +0 -1
- data/lib/sass/util.rb +10 -0
- data/lib/sass/version.rb +0 -4
- data/test/sass/conversion_test.rb +1 -1
- data/test/sass/extend_test.rb +2 -16
- data/test/sass/importer_test.rb +4 -4
- data/test/sass/scss/css_test.rb +1 -1
- data/test/sass/source_map_test.rb +5 -6
- data/test/sass/util_test.rb +1 -1
- data/test/test_helper.rb +6 -1
- metadata +3 -3
data/REVISION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
a3ffe87ffef0dddf468060e1b56ca8a0b93cfea3
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.3.0.alpha.
|
1
|
+
3.3.0.alpha.120
|
data/VERSION_DATE
CHANGED
@@ -1 +1 @@
|
|
1
|
-
22 March 2013
|
1
|
+
22 March 2013 22:05:28 GMT
|
data/lib/sass/engine.rb
CHANGED
@@ -353,7 +353,7 @@ ERR
|
|
353
353
|
rendered << "\n" if rendered[-1] != ?\n
|
354
354
|
rendered << "\n" unless compressed
|
355
355
|
rendered << "/*@ sourceMappingURL="
|
356
|
-
rendered <<
|
356
|
+
rendered << Sass::Util.escape_uri(sourcemap_uri)
|
357
357
|
rendered << " */"
|
358
358
|
rendered = encode_and_set_charset(rendered)
|
359
359
|
return rendered, sourcemap
|
@@ -673,9 +673,7 @@ WARNING
|
|
673
673
|
property
|
674
674
|
else
|
675
675
|
res.pop if comment
|
676
|
-
scanner_start_pos = scanner.pos
|
677
676
|
interp_parsed = parse_interp(scanner.rest)
|
678
|
-
scanned_size = scanner.pos - scanner_start_pos
|
679
677
|
selector_range = Sass::Source::Range.new(
|
680
678
|
ident_range.start_pos,
|
681
679
|
Sass::Source::Position.new(@line, to_parser_offset(line.offset) + line.text.length),
|
@@ -911,7 +909,7 @@ WARNING
|
|
911
909
|
def parse_import_arg(scanner, offset)
|
912
910
|
return if scanner.eos?
|
913
911
|
|
914
|
-
if
|
912
|
+
if scanner.match?(/url\(/i)
|
915
913
|
script_parser = Sass::Script::Parser.new(scanner, @line, to_parser_offset(offset), @options)
|
916
914
|
str = script_parser.parse_string
|
917
915
|
|
data/lib/sass/script/literal.rb
CHANGED
@@ -5,11 +5,6 @@ module Sass::Script
|
|
5
5
|
# are designed to be overridden by subclasses which may change the semantics somewhat.
|
6
6
|
# The operations listed here are just the defaults.
|
7
7
|
class Literal < Node
|
8
|
-
require 'sass/script/string'
|
9
|
-
require 'sass/script/number'
|
10
|
-
require 'sass/script/color'
|
11
|
-
require 'sass/script/bool'
|
12
|
-
require 'sass/script/null'
|
13
8
|
require 'sass/script/list'
|
14
9
|
require 'sass/script/arg_list'
|
15
10
|
|
@@ -1,7 +1,10 @@
|
|
1
1
|
require 'set'
|
2
|
+
require 'sass/script/literal'
|
2
3
|
require 'sass/script/string'
|
3
4
|
require 'sass/script/number'
|
4
5
|
require 'sass/script/color'
|
6
|
+
require 'sass/script/bool'
|
7
|
+
require 'sass/script/null'
|
5
8
|
require 'sass/script/functions'
|
6
9
|
require 'sass/script/unary_operation'
|
7
10
|
require 'sass/script/interpolation'
|
@@ -35,7 +38,6 @@ module Sass::Script
|
|
35
38
|
|
36
39
|
# @see Node#to_sass
|
37
40
|
def to_sass(opts = {})
|
38
|
-
pred = Sass::Script::Parser.precedence_of(@operator)
|
39
41
|
o1 = operand_to_sass @operand1, :left, opts
|
40
42
|
o2 = operand_to_sass @operand2, :right, opts
|
41
43
|
sep =
|
@@ -255,7 +255,7 @@ module Sass
|
|
255
255
|
# is a supersequence of the other, use that, otherwise give up.
|
256
256
|
lcs = Sass::Util.lcs(ops1, ops2)
|
257
257
|
return unless lcs == ops1 || lcs == ops2
|
258
|
-
res.unshift
|
258
|
+
res.unshift(*(ops1.size > ops2.size ? ops1 : ops2).reverse)
|
259
259
|
return res
|
260
260
|
end
|
261
261
|
|
@@ -135,9 +135,9 @@ module Sass
|
|
135
135
|
# by the time extension and unification happen,
|
136
136
|
# this exception will only ever be raised as a result of programmer error
|
137
137
|
def unify(sels, other_subject)
|
138
|
-
return unless sseq = members.inject(sels) do |
|
139
|
-
return unless
|
140
|
-
sel.unify(
|
138
|
+
return unless sseq = members.inject(sels) do |member, sel|
|
139
|
+
return unless member
|
140
|
+
sel.unify(member)
|
141
141
|
end
|
142
142
|
SimpleSequence.new(sseq, other_subject || subject?)
|
143
143
|
end
|
data/lib/sass/tree/node.rb
CHANGED
data/lib/sass/tree/rule_node.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'pathname'
|
2
|
-
require 'uri'
|
3
2
|
|
4
3
|
module Sass::Tree
|
5
4
|
# A static node reprenting a CSS rule.
|
@@ -115,7 +114,7 @@ module Sass::Tree
|
|
115
114
|
#
|
116
115
|
# @return [{#to_s => #to_s}]
|
117
116
|
def debug_info
|
118
|
-
{:filename => filename && ("file://" +
|
117
|
+
{:filename => filename && ("file://" + Sass::Util.escape_uri(File.expand_path(filename))),
|
119
118
|
:line => self.line}
|
120
119
|
end
|
121
120
|
|
@@ -124,12 +124,12 @@ class Sass::Tree::Visitors::Cssize < Sass::Tree::Visitors::Base
|
|
124
124
|
end
|
125
125
|
|
126
126
|
sel = sseq.members
|
127
|
-
parent.resolved_rules.members.each do |
|
128
|
-
if !
|
127
|
+
parent.resolved_rules.members.each do |member|
|
128
|
+
if !member.members.last.is_a?(Sass::Selector::SimpleSequence)
|
129
129
|
raise Sass::SyntaxError.new("#{seq} can't extend: invalid selector")
|
130
130
|
end
|
131
131
|
|
132
|
-
@extends[sel] = Extend.new(
|
132
|
+
@extends[sel] = Extend.new(member, sel, node, @parent_directives.dup, :not_found)
|
133
133
|
end
|
134
134
|
end
|
135
135
|
|
@@ -274,7 +274,6 @@ class Sass::Tree::Visitors::ToCss < Sass::Tree::Visitors::Base
|
|
274
274
|
joined_rules.gsub!(/\s*\n\s*/, "#{line_separator}#{per_rule_indent}")
|
275
275
|
|
276
276
|
old_spaces = ' ' * @tabs
|
277
|
-
spaces = ' ' * (@tabs + 1)
|
278
277
|
if node.style != :compressed
|
279
278
|
if node.options[:debug_info] && !@in_directive
|
280
279
|
visit(debug_info_rule(node.debug_info, node.options))
|
data/lib/sass/util.rb
CHANGED
@@ -3,6 +3,7 @@ require 'set'
|
|
3
3
|
require 'enumerator'
|
4
4
|
require 'stringio'
|
5
5
|
require 'rbconfig'
|
6
|
+
require 'uri'
|
6
7
|
|
7
8
|
require 'sass/root'
|
8
9
|
require 'sass/util/subset_map'
|
@@ -962,6 +963,15 @@ MSG
|
|
962
963
|
end
|
963
964
|
end
|
964
965
|
|
966
|
+
|
967
|
+
URI_ESCAPE = URI.const_defined?(:DEFAULT_PARSER) ?
|
968
|
+
URI::DEFAULT_PARSER :
|
969
|
+
URI
|
970
|
+
|
971
|
+
def escape_uri(uri)
|
972
|
+
URI_ESCAPE.escape uri
|
973
|
+
end
|
974
|
+
|
965
975
|
private
|
966
976
|
|
967
977
|
# Calculates the memoization table for the Least Common Subsequence algorithm.
|
data/lib/sass/version.rb
CHANGED
data/test/sass/extend_test.rb
CHANGED
@@ -489,7 +489,7 @@ CSS
|
|
489
489
|
SCSS
|
490
490
|
end
|
491
491
|
|
492
|
-
def
|
492
|
+
def test_nested_extender_with_early_child_selector
|
493
493
|
assert_equal <<CSS, render(<<SCSS)
|
494
494
|
.foo .bar, .foo .bip > .baz {
|
495
495
|
a: b; }
|
@@ -1061,7 +1061,7 @@ CSS
|
|
1061
1061
|
x! .bar {a: b}
|
1062
1062
|
y! .bap {@extend .bar}
|
1063
1063
|
SCSS
|
1064
|
-
end
|
1064
|
+
end
|
1065
1065
|
|
1066
1066
|
def test_extend_warns_when_extendee_doesnt_exist
|
1067
1067
|
assert_raise_message(Sass::SyntaxError, <<ERR) {render(<<SCSS)}
|
@@ -1089,20 +1089,6 @@ SCSS
|
|
1089
1089
|
a.bar {
|
1090
1090
|
a: b; }
|
1091
1091
|
|
1092
|
-
.bar, b.foo {
|
1093
|
-
c: d; }
|
1094
|
-
CSS
|
1095
|
-
a.bar {a: b}
|
1096
|
-
.bar {c: d}
|
1097
|
-
b.foo {@extend .bar}
|
1098
|
-
SCSS
|
1099
|
-
end
|
1100
|
-
|
1101
|
-
def test_extend_succeeds_when_one_extension_fails_but_others_dont
|
1102
|
-
assert_equal(<<CSS, render(<<SCSS))
|
1103
|
-
a.bar {
|
1104
|
-
a: b; }
|
1105
|
-
|
1106
1092
|
.bar, b.foo {
|
1107
1093
|
c: d; }
|
1108
1094
|
CSS
|
data/test/sass/importer_test.rb
CHANGED
@@ -200,7 +200,7 @@ CSS
|
|
200
200
|
}
|
201
201
|
SCSS
|
202
202
|
|
203
|
-
|
203
|
+
_, sourcemap = engine.render_with_sourcemap('sourcemap_uri')
|
204
204
|
assert_equal <<JSON.strip, sourcemap.to_json(:css_uri => 'css_uri')
|
205
205
|
{
|
206
206
|
"version": "3",
|
@@ -223,7 +223,7 @@ JSON
|
|
223
223
|
.foo {a: b}
|
224
224
|
SCSS
|
225
225
|
|
226
|
-
|
226
|
+
_, sourcemap = engine.render_with_sourcemap('http://1.example.com/style.map')
|
227
227
|
|
228
228
|
assert_warning(<<WARNING) {sourcemap.to_json(:css_uri => 'css_uri')}
|
229
229
|
WARNING: Couldn't determine public URL for "#{filename_for_test(:scss)}" while generating sourcemap.
|
@@ -244,7 +244,7 @@ WARNING
|
|
244
244
|
.foo {a: b}
|
245
245
|
SCSS
|
246
246
|
|
247
|
-
|
247
|
+
_, sourcemap = engine.render_with_sourcemap('http://1.example.com/style.map')
|
248
248
|
|
249
249
|
assert_warning(<<WARNING) {sourcemap.to_json(:css_uri => 'css_uri', :css_path => 'css_path')}
|
250
250
|
WARNING: Couldn't determine public URL for "#{filename_for_test(:scss)}" while generating sourcemap.
|
@@ -293,7 +293,7 @@ JSON
|
|
293
293
|
.foo {a: b}
|
294
294
|
SCSS
|
295
295
|
|
296
|
-
|
296
|
+
_, sourcemap = engine.render_with_sourcemap('http://map.example.com/map/style.map')
|
297
297
|
css_path = 'static/style.css'
|
298
298
|
sourcemap_path = 'map/style.map'
|
299
299
|
assert_equal <<JSON.strip, sourcemap.to_json(:css_path => css_path, :sourcemap_path => sourcemap_path)
|
data/test/sass/scss/css_test.rb
CHANGED
@@ -651,7 +651,7 @@ SCSS
|
|
651
651
|
## Selectors
|
652
652
|
|
653
653
|
# Taken from http://dev.w3.org/csswg/selectors4/#overview
|
654
|
-
def
|
654
|
+
def test_summarized_selectors_with_element
|
655
655
|
assert_selector_parses('*')
|
656
656
|
assert_selector_parses('E')
|
657
657
|
assert_selector_parses('E:not(s)')
|
@@ -5,7 +5,7 @@ require File.dirname(__FILE__) + '/test_helper'
|
|
5
5
|
|
6
6
|
class SourcemapTest < Test::Unit::TestCase
|
7
7
|
def test_to_json_requires_args
|
8
|
-
|
8
|
+
_, sourcemap = render_with_sourcemap('')
|
9
9
|
assert_raise(ArgumentError) {sourcemap.to_json({})}
|
10
10
|
assert_raise(ArgumentError) {sourcemap.to_json({:css_path => 'foo'})}
|
11
11
|
assert_raise(ArgumentError) {sourcemap.to_json({:sourcemap_path => 'foo'})}
|
@@ -474,7 +474,7 @@ SCSS
|
|
474
474
|
CSS
|
475
475
|
end
|
476
476
|
|
477
|
-
def test_while_sourcemap_sass
|
477
|
+
def test_while_sourcemap_sass
|
478
478
|
assert_parses_with_mapping <<'SASS', <<'CSS', :syntax => :sass
|
479
479
|
$i: 6
|
480
480
|
@while $i > 0
|
@@ -723,7 +723,6 @@ CSS
|
|
723
723
|
start_positions = {}
|
724
724
|
text.split("\n").each_with_index do |line_text, line|
|
725
725
|
line += 1 # lines shoud be 1-based
|
726
|
-
match_start = 0
|
727
726
|
while match = line_text.match(ANNOTATION_REGEX)
|
728
727
|
closing = !match[1].empty?
|
729
728
|
name = match[2]
|
@@ -750,13 +749,13 @@ CSS
|
|
750
749
|
source_ranges = build_ranges(source, source_file_name)
|
751
750
|
target_ranges = build_ranges(css)
|
752
751
|
map = Sass::Source::Map.new
|
753
|
-
|
752
|
+
Sass::Util.flatten(source_ranges.map do |(name, sources)|
|
754
753
|
assert(sources.length == 1, "#{sources.length} source ranges encountered for annotation #{name}")
|
755
754
|
assert(target_ranges[name], "No target ranges for annotation #{name}")
|
756
755
|
target_ranges[name].map {|target_range| [sources.first, target_range]}
|
757
756
|
end, 1).
|
758
|
-
sort_by {|(
|
759
|
-
each {|(
|
757
|
+
sort_by {|(_, target)| [target.start_pos.line, target.start_pos.offset]}.
|
758
|
+
each {|(s2, target)| map.add(s2, target)}
|
760
759
|
map
|
761
760
|
end
|
762
761
|
|
data/test/sass/util_test.rb
CHANGED
@@ -324,7 +324,7 @@ class UtilTest < Test::Unit::TestCase
|
|
324
324
|
|
325
325
|
def test_json_value_of
|
326
326
|
assert_json_value 0, "0"
|
327
|
-
assert_json_value
|
327
|
+
assert_json_value(-42, "-42")
|
328
328
|
assert_json_value 42, "42"
|
329
329
|
assert_json_value true, "true"
|
330
330
|
assert_json_value false, "false"
|
data/test/test_helper.rb
CHANGED
@@ -7,7 +7,12 @@ require 'sass'
|
|
7
7
|
require 'mathn' if ENV['MATHN'] == 'true'
|
8
8
|
|
9
9
|
Sass::RAILS_LOADED = true unless defined?(Sass::RAILS_LOADED)
|
10
|
-
|
10
|
+
|
11
|
+
if defined?(Encoding)
|
12
|
+
$-w, w = false, $-w
|
13
|
+
Encoding.default_external = 'UTF-8'
|
14
|
+
$-w = w
|
15
|
+
end
|
11
16
|
|
12
17
|
module Sass::Script::Functions
|
13
18
|
def option(name)
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sass
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 592303101
|
5
5
|
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 3
|
9
9
|
- 0
|
10
10
|
- alpha
|
11
|
-
-
|
12
|
-
version: 3.3.0.alpha.
|
11
|
+
- 120
|
12
|
+
version: 3.3.0.alpha.120
|
13
13
|
platform: ruby
|
14
14
|
authors:
|
15
15
|
- Nathan Weizenbaum
|