haml-edge 2.3.220 → 2.3.221

Sign up to get free protection for your applications and to get access to all the features.
data/EDGE_GEM_VERSION CHANGED
@@ -1 +1 @@
1
- 2.3.220
1
+ 2.3.221
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.3.220
1
+ 2.3.221
data/lib/haml/exec.rb CHANGED
@@ -58,8 +58,8 @@ module Haml
58
58
  # SyntaxErrors have weird line reporting
59
59
  # when there's trailing whitespace,
60
60
  # which there is for Haml documents.
61
- return exception.message.scan(/:(\d+)/).first.first if exception.is_a?(::SyntaxError)
62
- exception.backtrace[0].scan(/:(\d+)/).first.first
61
+ return (exception.message.scan(/:(\d+)/).first || ["??"]).first if exception.is_a?(::SyntaxError)
62
+ (exception.backtrace[0].scan(/:(\d+)/).first || ["??"]).first
63
63
  end
64
64
 
65
65
  # Tells optparse how to parse the arguments
@@ -371,8 +371,9 @@ MSG
371
371
  end
372
372
 
373
373
  dirs, files = @args.map {|name| name.split(':', 2)}.
374
- map {|from, to| [from, to || from.gsub(/\..*?$/, '.css')]}.
375
374
  partition {|i, _| File.directory? i}
375
+ files.map! {|from, to| [from, to || from.gsub(/\..*?$/, '.css')]}
376
+ dirs.map! {|from, to| [from, to || from]}
376
377
  ::Sass::Plugin.options[:template_location] = dirs
377
378
 
378
379
  ::Sass::Plugin.on_updating_stylesheet do |_, css|
@@ -648,7 +649,7 @@ END
648
649
 
649
650
  super
650
651
  input = @options[:input]
651
- raise "Error: '#{input}' is a directory (did you mean to use --recursive?)" if File.directory?(input)
652
+ raise "Error: '#{input.path}' is a directory (did you mean to use --recursive?)" if File.directory?(input)
652
653
  output = @options[:output]
653
654
  output = input if @options[:in_place]
654
655
  process_file(input, output)
@@ -750,7 +751,8 @@ END
750
751
  output.write(out)
751
752
  rescue ::Sass::SyntaxError => e
752
753
  raise e if @options[:trace]
753
- raise "Syntax error on line #{get_line e}: #{e.message}\n Use --trace for backtrace"
754
+ file = " of #{e.sass_filename}" if e.sass_filename
755
+ raise "Error on line #{e.sass_line}#{file}: #{e.message}\n Use --trace for backtrace"
754
756
  end
755
757
  end
756
758
  end
data/lib/sass/files.rb CHANGED
@@ -77,6 +77,7 @@ module Sass
77
77
  end
78
78
 
79
79
  new_filename = nil
80
+ load_paths = load_paths.uniq
80
81
  load_paths.each do |load_path|
81
82
  new_filename ||= find_full_path("#{filename}.sass", load_path) unless was_scss
82
83
  new_filename ||= find_full_path("#{filename}.scss", load_path) unless was_sass
@@ -25,6 +25,14 @@ module Sass::Script
25
25
  # @return [Array<String>]
26
26
  attr_reader :denominator_units
27
27
 
28
+ # The original representation of this number.
29
+ # For example, although the result of `1px/2px` is `0.5`,
30
+ # the value of `#original` is `"1px/2px"`.
31
+ #
32
+ # This is only non-nil when the original value should be used as the CSS value,
33
+ # as in `font: 1px/2px`.
34
+ #
35
+ # @return [Boolean, nil]
28
36
  attr_accessor :original
29
37
 
30
38
  # The precision with which numbers will be printed to CSS files.
@@ -25,7 +25,7 @@ module Sass::Tree
25
25
  # @see Node#to_src
26
26
  def to_src(tabs, opts, fmt)
27
27
  res = "#{' ' * tabs}#{value}"
28
- return res + "#{semi fmt}\n" if children.empty?
28
+ return res + "#{semi fmt}\n" unless has_children
29
29
  res + children_to_src(tabs, opts, fmt) + "\n"
30
30
  end
31
31
 
@@ -43,6 +43,18 @@ module Sass
43
43
  environment.set_mixin(@name, Sass::Mixin.new(@name, @args, environment, children))
44
44
  []
45
45
  end
46
+
47
+ # Returns an error message if the given child node is invalid,
48
+ # and false otherwise.
49
+ #
50
+ # {ExtendNode}s are valid within {MixinDefNode}s.
51
+ #
52
+ # @param child [Tree::Node] A potential child node.
53
+ # @return [Boolean, String] Whether or not the child node is valid,
54
+ # as well as the error message to display if it is invalid
55
+ def invalid_child?(child)
56
+ super unless child.is_a?(ExtendNode)
57
+ end
46
58
  end
47
59
  end
48
60
  end
@@ -402,6 +402,8 @@ module Sass
402
402
  # @param fmt [Symbol] `:sass` or `:scss`
403
403
  # @return [String] The Sass or SCSS code corresponding to the children
404
404
  def children_to_src(tabs, opts, fmt)
405
+ return fmt == :sass ? "\n" : " {}\n" if children.empty?
406
+
405
407
  (fmt == :sass ? "\n" : " {\n") +
406
408
  children.map {|c| c.send("to_#{fmt}", tabs + 1, opts)}.join.rstrip +
407
409
  (fmt == :sass ? "\n" : " }\n")
@@ -179,7 +179,6 @@ module Sass::Tree
179
179
  class << self
180
180
  # @private
181
181
  def val_to_sass(value, opts)
182
- return value.to_sass(opts) unless value.context == :equals
183
182
  val_to_sass_comma(value, opts).to_sass(opts)
184
183
  end
185
184
 
@@ -208,7 +207,8 @@ module Sass::Tree
208
207
  def val_to_sass_div(node, opts)
209
208
  unless node.is_a?(Sass::Script::Operation) && node.operator == :div &&
210
209
  node.operand1.is_a?(Sass::Script::Number) &&
211
- node.operand2.is_a?(Sass::Script::Number)
210
+ node.operand2.is_a?(Sass::Script::Number) &&
211
+ (node.context == :equals || !node.operand1.original || !node.operand2.original)
212
212
  return node
213
213
  end
214
214
 
@@ -228,7 +228,7 @@ module Sass::Tree
228
228
  #
229
229
  # {ExtendNode}s are valid within {RuleNode}s.
230
230
  #
231
- # @param child [Tree::Node] A potential child nodecompact.
231
+ # @param child [Tree::Node] A potential child node.
232
232
  # @return [Boolean, String] Whether or not the child node is valid,
233
233
  # as well as the error message to display if it is invalid
234
234
  def invalid_child?(child)
@@ -23,6 +23,19 @@ foo bar {
23
23
  SCSS
24
24
  end
25
25
 
26
+ def test_empty_selector
27
+ assert_renders "foo bar", "foo bar {}"
28
+ end
29
+
30
+ def test_empty_directive
31
+ assert_scss_to_sass "@media screen", "@media screen {}"
32
+ assert_scss_to_scss "@media screen {}"
33
+ end
34
+
35
+ def test_empty_control_directive
36
+ assert_renders "@if false", "@if false {}"
37
+ end
38
+
26
39
  def test_nesting
27
40
  assert_renders <<SASS, <<SCSS
28
41
  foo bar
@@ -875,6 +888,60 @@ SCSS
875
888
  assert_sass_to_scss '$var: 12px $bar baz !default;', '$var ||= 12px $bar "baz"'
876
889
  end
877
890
 
891
+ def test_division_asserted_with_parens
892
+ assert_renders <<SASS, <<SCSS
893
+ foo
894
+ a: (1px / 2px)
895
+ SASS
896
+ foo {
897
+ a: (1px / 2px); }
898
+ SCSS
899
+ end
900
+
901
+ def test_division_not_asserted_when_unnecessary
902
+ assert_renders <<SASS, <<SCSS
903
+ $var: 1px / 2px
904
+
905
+ foo
906
+ a: $var
907
+ SASS
908
+ $var: 1px / 2px;
909
+
910
+ foo {
911
+ a: $var; }
912
+ SCSS
913
+
914
+ assert_renders <<SASS, <<SCSS
915
+ $var: 1px
916
+
917
+ foo
918
+ a: $var / 2px
919
+ SASS
920
+ $var: 1px;
921
+
922
+ foo {
923
+ a: $var / 2px; }
924
+ SCSS
925
+
926
+ assert_renders <<SASS, <<SCSS
927
+ foo
928
+ a: 1 + 1px / 2px
929
+ SASS
930
+ foo {
931
+ a: 1 + 1px / 2px; }
932
+ SCSS
933
+ end
934
+
935
+ def test_literal_slash
936
+ assert_renders <<SASS, <<SCSS
937
+ foo
938
+ a: 1px / 2px
939
+ SASS
940
+ foo {
941
+ a: 1px / 2px; }
942
+ SCSS
943
+ end
944
+
878
945
  # Hacks
879
946
 
880
947
  def test_declaration_hacks
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haml-edge
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.220
4
+ version: 2.3.221
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Weizenbaum
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2010-04-26 00:00:00 -04:00
13
+ date: 2010-04-27 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency