diff options
Diffstat (limited to 'tasks/converter/less_conversion.rb')
-rw-r--r-- | tasks/converter/less_conversion.rb | 36 |
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) |