haml-edge 2.3.213 → 2.3.214
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/EDGE_GEM_VERSION +1 -1
- data/VERSION +1 -1
- data/lib/sass/tree/extend_node.rb +5 -0
- data/lib/sass/tree/node.rb +38 -1
- data/lib/sass/tree/rule_node.rb +2 -10
- data/test/sass/conversion_test.rb +12 -0
- metadata +1 -1
data/EDGE_GEM_VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.3.
|
1
|
+
2.3.214
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.3.
|
1
|
+
2.3.214
|
@@ -46,6 +46,11 @@ module Sass::Tree
|
|
46
46
|
|
47
47
|
protected
|
48
48
|
|
49
|
+
# @see Node#to_src
|
50
|
+
def to_src(tabs, opts, fmt)
|
51
|
+
"#{' ' * tabs}@extend #{selector_to_src(@selector, tabs, opts, fmt).lstrip}#{semi fmt}\n"
|
52
|
+
end
|
53
|
+
|
49
54
|
# Runs SassScript interpolation in the selector,
|
50
55
|
# and then parses the result into a {Sass::Selector::CommaSequence}.
|
51
56
|
#
|
data/lib/sass/tree/node.rb
CHANGED
@@ -400,13 +400,50 @@ module Sass
|
|
400
400
|
# @param tabs [Fixnum] The amount of tabulation to use for the Sass code
|
401
401
|
# @param opts [{Symbol => Object}] An options hash (see {Sass::CSS#initialize})
|
402
402
|
# @param fmt [Symbol] `:sass` or `:scss`
|
403
|
-
# @return [String] The Sass or
|
403
|
+
# @return [String] The Sass or SCSS code corresponding to the children
|
404
404
|
def children_to_src(tabs, opts, fmt)
|
405
405
|
(fmt == :sass ? "\n" : " {\n") +
|
406
406
|
children.map {|c| c.send("to_#{fmt}", tabs + 1, opts)}.join.rstrip +
|
407
407
|
(fmt == :sass ? "\n" : " }\n")
|
408
408
|
end
|
409
409
|
|
410
|
+
# Converts a selector to a Sass or SCSS string.
|
411
|
+
#
|
412
|
+
# @param sel [Array<String, Sass::Script::Node>] The selector to convert
|
413
|
+
# @param tabs [Fixnum] The indentation of the selector
|
414
|
+
# @param opts [{Symbol => Object}] An options hash (see {Sass::CSS#initialize})
|
415
|
+
# @param fmt [Symbol] `:sass` or `:scss`
|
416
|
+
# @return [String] The Sass or SCSS code corresponding to the selector
|
417
|
+
def selector_to_src(sel, tabs, opts, fmt)
|
418
|
+
fmt == :sass ? selector_to_sass(sel, opts) : selector_to_scss(sel, tabs, opts)
|
419
|
+
end
|
420
|
+
|
421
|
+
# Converts a selector to a Sass string.
|
422
|
+
#
|
423
|
+
# @param sel [Array<String, Sass::Script::Node>] The selector to convert
|
424
|
+
# @param opts [{Symbol => Object}] An options hash (see {Sass::CSS#initialize})
|
425
|
+
# @return [String] The Sass code corresponding to the selector
|
426
|
+
def selector_to_sass(sel, opts)
|
427
|
+
sel.map do |r|
|
428
|
+
if r.is_a?(String)
|
429
|
+
r.gsub(/(,[ \t]*)?\n\s*/) {$1 ? $1 + "\n" : " "}
|
430
|
+
else
|
431
|
+
"\#{#{r.to_sass(opts)}}"
|
432
|
+
end
|
433
|
+
end.join
|
434
|
+
end
|
435
|
+
|
436
|
+
# Converts a selector to a SCSS string.
|
437
|
+
#
|
438
|
+
# @param sel [Array<String, Sass::Script::Node>] The selector to convert
|
439
|
+
# @param tabs [Fixnum] The indentation of the selector
|
440
|
+
# @param opts [{Symbol => Object}] An options hash (see {Sass::CSS#initialize})
|
441
|
+
# @return [String] The SCSS code corresponding to the selector
|
442
|
+
def selector_to_scss(sel, tabs, opts)
|
443
|
+
sel.map {|r| r.is_a?(String) ? r : "\#{#{r.to_sass(opts)}}"}.
|
444
|
+
join.gsub(/^[ \t]*/, ' ' * tabs)
|
445
|
+
end
|
446
|
+
|
410
447
|
# Convert any underscores in a string into hyphens,
|
411
448
|
# but only if the `:dasherize` option is set.
|
412
449
|
#
|
data/lib/sass/tree/rule_node.rb
CHANGED
@@ -84,22 +84,14 @@ module Sass::Tree
|
|
84
84
|
|
85
85
|
# @see Node#to_sass
|
86
86
|
def to_sass(tabs, opts = {})
|
87
|
-
name = rule
|
88
|
-
if r.is_a?(String)
|
89
|
-
r.gsub(/(,[ \t]*)?\n\s*/) {$1 ? $1 + "\n" : " "}
|
90
|
-
else
|
91
|
-
"\#{#{r.to_sass(opts)}}"
|
92
|
-
end
|
93
|
-
end.join
|
87
|
+
name = selector_to_sass(rule, opts)
|
94
88
|
name = "\\" + name if name[0] == ?:
|
95
89
|
name.gsub(/^/, ' ' * tabs) + children_to_src(tabs, opts, :sass)
|
96
90
|
end
|
97
91
|
|
98
92
|
# @see Node#to_scss
|
99
93
|
def to_scss(tabs, opts = {})
|
100
|
-
name = rule
|
101
|
-
join.gsub(/^[ \t]*/, ' ' * tabs)
|
102
|
-
|
94
|
+
name = selector_to_scss(rule, tabs, opts)
|
103
95
|
res = name + children_to_src(tabs, opts, :scss)
|
104
96
|
|
105
97
|
if children.last.is_a?(CommentNode) && children.last.silent
|
@@ -727,6 +727,18 @@ SASS
|
|
727
727
|
SCSS
|
728
728
|
end
|
729
729
|
|
730
|
+
def test_extend
|
731
|
+
assert_renders <<SASS, <<SCSS
|
732
|
+
.foo
|
733
|
+
@extend .bar
|
734
|
+
@extend .baz:bang
|
735
|
+
SASS
|
736
|
+
.foo {
|
737
|
+
@extend .bar;
|
738
|
+
@extend .baz:bang; }
|
739
|
+
SCSS
|
740
|
+
end
|
741
|
+
|
730
742
|
def test_argless_mixin_definition
|
731
743
|
assert_renders <<SASS, <<SCSS
|
732
744
|
=foo-bar
|