tasks/converter/less_conversion.rb in bootstrap-sass-3.3.7 vs tasks/converter/less_conversion.rb in bootstrap-sass-3.4.0
- old
+ new
@@ -65,10 +65,11 @@
log_status ' Converting LESS files to Scss:'
files.each do |name, file|
log_processing name
# apply common conversions
file = convert_less(file)
+ file = replace_all file, %r{// stylelint-disable.*?\n+}, '', optional: true
if name.start_with?('mixins/')
file = varargify_mixin_definitions(file, *VARARG_MIXINS)
%w(responsive-(in)?visibility input-size text-emphasis-variant bg-variant).each do |mixin|
file = parameterize_mixin_parent_selector file, mixin if file =~ /#{mixin}/
end
@@ -124,14 +125,11 @@
when 'tables.less'
file = replace_all file, /(@include\s*table-row-variant\()(\w+)/, "\\1'\\2'"
when 'thumbnails.less', 'labels.less', 'badges.less', 'buttons.less'
file = extract_nested_rule file, 'a&'
when 'glyphicons.less'
- file = replace_rules(file, /\s*@font-face/) { |rule|
- rule = replace_all rule, /(\$icon-font(?:-\w+)+)/, '#{\1}'
- replace_asset_url rule, :font
- }
+ file = replace_rules(file, /\s*@font-face/) { |rule| replace_asset_url rule, :font }
when 'type.less'
file = apply_mixin_parent_selector(file, '\.(text|bg)-(success|primary|info|warning|danger)')
# .bg-primary will not get patched automatically as it includes an additional rule. fudge for now
file = replace_all(file, " @include bg-variant($brand-primary);\n}", "}\n@include bg-variant('.bg-primary', $brand-primary);")
end
@@ -323,14 +321,14 @@
def replace_file_imports(less, target_path = '')
less.gsub %r([@\$]import ["|']([\w\-/]+).less["|'];),
%Q(@import "#{target_path}\\1";)
end
- def replace_all(file, regex, replacement = nil, &block)
+ def replace_all(file, regex, replacement = nil, optional: false, &block)
log_transform regex, replacement
new_file = file.gsub(regex, replacement, &block)
- raise "replace_all #{regex}, #{replacement} NO MATCH" if file == new_file
+ raise "replace_all #{regex}, #{replacement} NO MATCH" if !optional && file == new_file
new_file
end
# @mixin a() { tr& { color:white } }
# to:
@@ -463,11 +461,11 @@
# change Microsoft filters to Sass calling convention
def replace_ms_filters(file)
log_transform
file.gsub(
- /filter: e\(%\("progid:DXImageTransform.Microsoft.gradient\(startColorstr='%d', endColorstr='%d', GradientType=(\d)\)",argb\(([\-$\w]+)\),argb\(([\-$\w]+)\)\)\);/,
+ /filter: e\(%\("progid:DXImageTransform.Microsoft.gradient\(startColorstr='%d', endColorstr='%d', GradientType=(\d)\)", ?argb\(([\-$\w]+)\), ?argb\(([\-$\w]+)\)\)\);/,
%Q(filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='\#{ie-hex-str(\\2)}', endColorstr='\#{ie-hex-str(\\3)}', GradientType=\\1);)
)
end
# unwraps topmost rule block
@@ -509,10 +507,11 @@
end
def replace_escaping(less)
less = less.gsub(/~"([^"]+)"/, '\1').gsub(/~'([^']+)'/, '\1') # Get rid of ~"" escape
less.gsub!(/\$\{([^}]+)\}/, '$\1') # Get rid of @{} escape
- less.gsub!(/"([^"\n]*)(\$[\w\-]+)([^"\n]*)"/, '"\1#{\2}\3"') # interpolate variable in string, e.g. url("$file-1x") => url("#{$file-1x}")
+ # interpolate variables in strings, e.g. url("$file-1x") => url("#{$file-1x}")
+ less.gsub!(/"[^"\n]*"/) { |str| str.gsub(/\$[^"\n$.\\]+/, '#{\0}') }
less.gsub(/(\W)e\(%\("?([^"]*)"?\)\)/, '\1\2') # Get rid of e(%("")) escape
end
def insert_default_vars(scss)
log_transform