diff options
author | Gleb Mazovetskiy <glex.spb@gmail.com> | 2014-06-17 05:17:29 +0400 |
---|---|---|
committer | Gleb Mazovetskiy <glex.spb@gmail.com> | 2014-06-17 05:17:29 +0400 |
commit | f9af31710f660abea648229504daad7ce259ee70 (patch) | |
tree | bdfb06b50a30d32b66afac78ed0d1e16589d8021 /tasks | |
parent | dd4957d4ae45ad5615c00bd3764bbda1feaa502f (diff) |
assigning a variable in mixin overrides outer scope #636
Diffstat (limited to 'tasks')
-rw-r--r-- | tasks/converter/less_conversion.rb | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/tasks/converter/less_conversion.rb b/tasks/converter/less_conversion.rb index a79be3c3..3a1b9650 100644 --- a/tasks/converter/less_conversion.rb +++ b/tasks/converter/less_conversion.rb @@ -167,13 +167,17 @@ class Converter # convert recursively evaluated selector $list to @for loop def mixin_all_grid_columns(css, selector: raise('pass class'), from: 1, to: raise('pass to')) mxn_def = css.each_line.first.strip + # inject local variables as default arguments + # this is to avoid overwriting outer variables with the same name with Sass <= 3.3 + # see also: https://github.com/twbs/bootstrap-sass/issues/636 + locals = <<-SASS.strip + $i: #{from}, $list: "#{selector}" + SASS + mxn_def.sub!(/(\(?)(\)\s*\{)/) { "#{$1}#{', ' if $1.empty?}#{locals}#{$2}" } step_body = (css =~ /\$list \{\n(.*?)\n[ ]*\}/m) && $1 <<-SASS // [converter] This is defined recursively in LESS, but Sass supports real loops #{mxn_def} - $list: ''; - $i: #{from}; - $list: "#{selector}"; @for $i from (#{from} + 1) through #{to} { $list: "\#{$list}, #{selector}"; } |