Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap-sass.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorApril Arcus <ril@google.com>2022-02-28 09:13:32 +0300
committerGleb Mazovetskiy <glex.spb@gmail.com>2022-02-28 10:45:28 +0300
commit96917c6cb9b2d5d83076fa63daaf344d224e773e (patch)
treeaa98f680f3edc542f0f3afe55dfba0a917603546
parente2ecd0305ac49f9fe5fc57f0317d14ade8b1b268 (diff)
replace_division: balance parens
-rw-r--r--tasks/converter/less_conversion.rb36
1 files changed, 34 insertions, 2 deletions
diff --git a/tasks/converter/less_conversion.rb b/tasks/converter/less_conversion.rb
index 61e2146b..f28f4ee7 100644
--- a/tasks/converter/less_conversion.rb
+++ b/tasks/converter/less_conversion.rb
@@ -184,9 +184,41 @@ class Converter
end
def replace_division(less)
- re = /(?<!\w)\(\s*([^(]+?)\s+\/\s+([^)]+?)\s*\)/
+ re = %r{
+ (?<expression>
+ (?<callee>[[:alpha:]\.]+)?
+ \(
+ (?:
+ (?>
+ (?<dividend>
+ [^()/]+
+ |
+ \([^/]+\)
+ )
+ \s+
+ /
+ \s+
+ (?<divisor>
+ [^()/]+
+ |
+ \([^/]+\)
+ )
+ )
+ |
+ \g<expression>
+ )
+ \)
+ )
+ }x
return less if less !~ re
- "@use \"sass:math\";\n" + less.gsub(re, 'math.div(\1, \2)')
+ "@use \"sass:math\";\n" + less.gsub(re) do
+ named_captures = $~.named_captures
+ callee = named_captures['callee']
+ dividend = named_captures['dividend']
+ divisor = named_captures['divisor']
+ expression = "math.div(#{dividend}, #{divisor})"
+ callee.nil? ? expression : "#{callee}(#{expression})"
+ end
end
def sass_fn_exists(fn)