sass 3.1.0.alpha.4 → 3.1.0.alpha.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- 3.1.0.alpha.4
1
+ 3.1.0.alpha.5
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.1.0.alpha.4
1
+ 3.1.0.alpha.5
@@ -401,7 +401,8 @@ END
401
401
  end
402
402
 
403
403
  def rgba_str
404
- "rgba(#{rgb.join(', ')}, #{alpha % 1 == 0.0 ? alpha.to_i : alpha})"
404
+ split = options[:style] == :compressed ? ',' : ', '
405
+ "rgba(#{rgb.join(split)}#{split}#{Number.round(alpha)})"
405
406
  end
406
407
 
407
408
  def hex_str
@@ -117,7 +117,7 @@ MSG
117
117
  # @return [Script::String] A string containing both literals
118
118
  # separated by `", "`
119
119
  def comma(other)
120
- Sass::Script::String.new("#{self.to_s}, #{other.to_s}")
120
+ Sass::Script::String.new("#{self.to_s},#{' ' unless options[:style] == :compressed}#{other.to_s}")
121
121
  end
122
122
 
123
123
  # The SassScript `=` operation
@@ -248,15 +248,7 @@ module Sass::Script
248
248
  #
249
249
  # @return [String] The representation
250
250
  def inspect(opts = {})
251
- value =
252
- if self.value.is_a?(Float) && (self.value.infinite? || self.value.nan?)
253
- self.value
254
- elsif int?
255
- self.value.to_i
256
- else
257
- (self.value * PRECISION).round / PRECISION
258
- end
259
- "#{value}#{unit_str}"
251
+ "#{self.class.round(self.value)}#{unit_str}"
260
252
  end
261
253
  alias_method :to_sass, :inspect
262
254
 
@@ -334,6 +326,17 @@ module Sass::Script
334
326
 
335
327
  private
336
328
 
329
+ # @private
330
+ def self.round(num)
331
+ if num.is_a?(Float) && (num.infinite? || num.nan?)
332
+ num
333
+ elsif num % 1 == 0.0
334
+ num.to_i
335
+ else
336
+ (num * PRECISION).round / PRECISION
337
+ end
338
+ end
339
+
337
340
  def operate(other, operation)
338
341
  this = self
339
342
  if [:+, :-, :<=, :<, :>, :>=].include?(operation)
@@ -134,7 +134,7 @@ module Sass::Tree
134
134
  per_rule_indent, total_indent = [:nested, :expanded].include?(style) ? [rule_indent, ''] : ['', rule_indent]
135
135
 
136
136
  total_rule = total_indent + resolved_rules.members.
137
- map {|seq| seq.to_a.join.gsub("\n", style == :compressed ? " " : "\n")}.
137
+ map {|seq| seq.to_a.join.gsub(/([^,])\n/m, style == :compressed ? '\1 ' : "\\1\n")}.
138
138
  join(rule_separator).split("\n").map do |line|
139
139
  per_rule_indent + line.strip
140
140
  end.join(line_separator)
@@ -33,7 +33,7 @@ module Sass
33
33
  # @param arr [Array<(Object, Object)>] An array of pairs
34
34
  # @return [Hash] A hash
35
35
  def to_hash(arr)
36
- arr.compact.inject({}) {|h, (k, v)| h[k] = v; h}
36
+ Hash[arr.compact]
37
37
  end
38
38
 
39
39
  # Maps the keys in a hash according to a block.
@@ -623,6 +623,19 @@ MSG
623
623
  set1.to_a.uniq.sort_by {|e| e.hash}.eql?(set2.to_a.uniq.sort_by {|e| e.hash})
624
624
  end
625
625
 
626
+ # Like `Object#inspect`, but preserves non-ASCII characters rather than escaping them under Ruby 1.9.2.
627
+ # This is necessary so that the precompiled Haml template can be `#encode`d into `@options[:encoding]`
628
+ # before being evaluated.
629
+ #
630
+ # @param obj {Object}
631
+ # @return {String}
632
+ def inspect(obj)
633
+ return obj.inspect unless version_geq(::RUBY_VERSION, "1.9.2")
634
+ return ':' + inspect(obj.to_s) if obj.is_a?(Symbol)
635
+ return obj.inspect unless obj.is_a?(String)
636
+ '"' + obj.gsub(/[\x00-\x7F]+/) {|s| s.inspect[1...-1]} + '"'
637
+ end
638
+
626
639
  ## Static Method Stuff
627
640
 
628
641
  # The context in which the ERB for \{#def\_static\_method} will be run.
@@ -79,9 +79,13 @@ class SassScriptTest < Test::Unit::TestCase
79
79
  assert_equal "rgba(100, 100, 100, 0.75)", resolve("rgba(50, 50, 50, 0.75) * 2")
80
80
  end
81
81
 
82
+ def test_rgba_rounding
83
+ assert_equal "rgba(10, 1, 0, 0.123)", resolve("rgba(10.0, 1.23456789, 0.0, 0.1234567)")
84
+ end
85
+
82
86
  def test_compressed_colors
83
87
  assert_equal "#123456", resolve("#123456", :style => :compressed)
84
- assert_equal "rgba(1, 2, 3, 0.5)", resolve("rgba(1, 2, 3, 0.5)", :style => :compressed)
88
+ assert_equal "rgba(1,2,3,0.5)", resolve("rgba(1, 2, 3, 0.5)", :style => :compressed)
85
89
  assert_equal "#123", resolve("#112233", :style => :compressed)
86
90
  assert_equal "#000", resolve("black", :style => :compressed)
87
91
  assert_equal "red", resolve("#f00", :style => :compressed)
@@ -91,6 +95,12 @@ class SassScriptTest < Test::Unit::TestCase
91
95
  assert_equal "This color is #fff", resolve('"This color is #{ white }"', :style => :compressed)
92
96
  end
93
97
 
98
+ def test_compressed_comma
99
+ # assert_equal "foo,bar,baz", resolve("foo, bar, baz", :style => :compressed)
100
+ # assert_equal "foo,#baf,baz", resolve("foo, #baf, baz", :style => :compressed)
101
+ assert_equal "foo,#baf,red", resolve("foo, #baf, #f00", :style => :compressed)
102
+ end
103
+
94
104
  def test_implicit_strings
95
105
  assert_equal Sass::Script::String.new("foo"), eval("foo")
96
106
  assert_equal Sass::Script::String.new("foo bar"), eval("foo bar")
@@ -432,6 +442,7 @@ SASS
432
442
 
433
443
  def eval(str, opts = {}, environment = env)
434
444
  munge_filename opts
445
+ environment.options = opts
435
446
  Sass::Script.parse(str, opts.delete(:line) || 1,
436
447
  opts.delete(:offset) || 0, opts).perform(environment)
437
448
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sass
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0.alpha.4
4
+ version: 3.1.0.alpha.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Weizenbaum
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2010-09-22 00:00:00 -04:00
14
+ date: 2010-09-29 00:00:00 -04:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency