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:
authorGleb Mazovetskiy <glex.spb@gmail.com>2013-12-18 21:46:31 +0400
committerGleb Mazovetskiy <glex.spb@gmail.com>2013-12-18 21:46:31 +0400
commit694e4cfc7f1cd618e9fafc9e5a6d9a1066235dc4 (patch)
tree2e93521433de9c542e0bd17461ce3c948c3217ae
parentb9bb1967d3e8c3e0f95a6253273affbd6e80eba9 (diff)
update converter
-rw-r--r--lib/bootstrap-sass/version.rb2
-rw-r--r--tasks/converter/less_conversion.rb48
2 files changed, 34 insertions, 16 deletions
diff --git a/lib/bootstrap-sass/version.rb b/lib/bootstrap-sass/version.rb
index 5d90f194..f05868fc 100644
--- a/lib/bootstrap-sass/version.rb
+++ b/lib/bootstrap-sass/version.rb
@@ -1,4 +1,4 @@
module Bootstrap
VERSION = '3.0.3.0'
- BOOTSTRAP_SHA = '6d03173a1aad98e75f7d33e65b411c519176c59a'
+ BOOTSTRAP_SHA = '671fb7020bdaa807da6be2e23b779c65cb52a4d6'
end
diff --git a/tasks/converter/less_conversion.rb b/tasks/converter/less_conversion.rb
index 22e386b4..f5ae53b7 100644
--- a/tasks/converter/less_conversion.rb
+++ b/tasks/converter/less_conversion.rb
@@ -9,9 +9,9 @@ require_relative 'char_string_scanner'
class Converter
module LessConversion
# Some regexps for matching bits of SCSS:
- selector_char = '\[\]$\w\-{}#,.:&>@'
+ SELECTOR_CHAR = '\[\]$\w\-{}#,.:&>@'
# 1 selector (the part before the {)
- SELECTOR_RE = /[#{selector_char}]+[#{selector_char}\s]*/
+ SELECTOR_RE = /[#{SELECTOR_CHAR}]+[#{SELECTOR_CHAR}\s]*/
# 1 // comment
COMMENT_RE = %r((?:^[ \t]*//[^\n]*\n))
# 1 {, except when part of @{ and #{
@@ -56,10 +56,12 @@ class Converter
end
file = varargify_mixin_definitions(file, *VARARG_MIXINS)
file = deinterpolate_vararg_mixins(file)
- file = parameterize_mixin_parent_selector file, 'responsive-(in)?visibility'
- file = parameterize_mixin_parent_selector file, 'input-size'
+ %w(responsive-(in)?visibility input-size).each do |mixin|
+ file = parameterize_mixin_parent_selector file, mixin
+ end
file = replace_ms_filters(file)
- file = replace_all file, /\.\$state/, '.#{$state}'
+ file = replace_all file, /(?<=[.-])\$state/, '#{$state}'
+ file = replace_rules(file, ' .list-group-item-') { |rule| extract_nested_rule rule, 'a&' }
file = replace_all file, /,\s*\.open \.dropdown-toggle& \{(.*?)\}/m,
" {\\1}\n .open & { &.dropdown-toggle {\\1} }"
file = convert_grid_mixins file
@@ -67,6 +69,8 @@ class Converter
file = apply_mixin_parent_selector(file, '&\.(visible|hidden)')
file = apply_mixin_parent_selector(file, '(?<!&)\.(visible|hidden)')
file = replace_rules(file, ' @media') { |r| unindent(r, 2) }
+ when 'type.less'
+ file = extract_nested_rule file, ' a&:'
when 'variables.less'
file = insert_default_vars(file)
file = <<-SCSS + file
@@ -78,7 +82,8 @@ $bootstrap-sass-asset-helper: true !default;
# extract .close { button& {...} } rule
file = extract_nested_rule file, 'button&'
when 'dropdowns.less'
- file = replace_all file, /(\s*)@extend \.pull-right-dropdown-menu;/, "\\1right: 0;\\1left: auto;"
+ file = replace_all file, /(\s*)@extend \.dropdown-menu-right;/, '\1right: 0;\1left: auto;'
+ file = replace_all file, /(\s*)@extend \.dropdown-menu-left;/, '\left: 0;\right: auto;'
when 'forms.less'
file = extract_nested_rule file, 'textarea&'
file = apply_mixin_parent_selector(file, '\.input-(?:sm|lg)')
@@ -89,7 +94,7 @@ $bootstrap-sass-asset-helper: true !default;
when 'thumbnails.less'
file = extract_nested_rule file, 'a&'
when 'glyphicons.less'
- file = replace_all file, /\#\{(url\(.*?\))}/, '\1'
+ file = replace_all file, /\#\{(url\(.*?\))}/, '\1'
file = replace_rules(file, '@font-face') { |rule|
rule = replace_all rule, /(\$icon-font-\w+)/, '#{\1}'
replace_asset_url rule, :font
@@ -136,7 +141,7 @@ $bootstrap-sass-asset-helper: true !default;
else
'.col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}'
end
- body = (css =~ /\$list \{\n(.*?)\n[ ]*\}/m) && $1
+ body = (css =~ /\$list \{\n(.*?)\n[ ]*\}/m) && $1
unindent <<-SASS, 8
// [converter] Grid converted to use SASS cycles (LESS uses recursive nested mixin defs not supported by SASS)
#{mxn_def.strip}
@@ -266,7 +271,7 @@ $bootstrap-sass-asset-helper: true !default;
def parameterize_mixin_parent_selector(file, rule_sel)
log_transform rule_sel
param = '$parent'
- replace_rules(file, '^[ \t]*@mixin\s*' + rule_sel) do |mxn_css|
+ replace_rules(file, '^\s*@mixin\s*' + rule_sel) do |mxn_css|
mxn_css.sub! /(?=@mixin)/, "// [converter] $parent hack\n"
# insert param into mixin def
mxn_css.sub!(/(@mixin [\w-]+)\(([\$\w\-,\s]*)\)/) { "#{$1}(#{param}#{', ' if $2 && !$2.empty?}#{$2})" }
@@ -309,7 +314,7 @@ $bootstrap-sass-asset-helper: true !default;
replace_rules file, '\s*' + rule_sel, comments: false do |rule, rule_pos, css|
body = unwrap_rule_block(rule.dup).strip
next rule unless body =~ /^@include \w+/m || body =~ /^@media/ && body =~ /\{\s*@include/
- rule =~ /(#{COMMENT_RE}*)(#{SELECTOR_RE})\{/
+ rule =~ /(#{COMMENT_RE}*)([#{SELECTOR_CHAR}]+?)\s*#{RULE_OPEN_BRACE_RE}/
cmt, sel = $1, $2.strip
# take one up selector chain if this is an &. selector
if sel.start_with?('&')
@@ -334,12 +339,13 @@ $bootstrap-sass-asset-helper: true !default;
end
# Replaces the following:
- # .mixin() -> @include mixin()
- # #scope > .mixin() -> @include scope-mixin()
+ # .mixin() -> @include mixin()
+ # #scope > .mixin() -> @include scope-mixin()
+ # &:extend(.mixin all) -> @include mixin()
def replace_mixins(less, mixin_names)
mixin_pattern = /(\s+)(([#|\.][\w-]+\s*>\s*)*)\.([\w-]+\(.*\))(?!\s\{)/
- less.gsub(mixin_pattern) do |match|
+ less = less.gsub(mixin_pattern) do |match|
matches = match.scan(mixin_pattern).flatten
scope = matches[1] || ''
if scope != ''
@@ -352,6 +358,18 @@ $bootstrap-sass-asset-helper: true !default;
"#{matches.first}@extend .#{scope}#{matches.last.gsub(/\(\)/, '')}"
end
end
+
+ #require 'byebug'; byebug
+ less.gsub /&:extend\((#{SELECTOR_RE}) all\)/ do
+ selector = $1
+ selector =~ /\.([\w-]+)/
+ mixin = $1
+ if mixin && mixin_names.include?(mixin)
+ "@include #{mixin}()"
+ else
+ "@extend #{selector}"
+ end
+ end
end
# change Microsoft filters to SASS calling convention
@@ -484,7 +502,7 @@ $bootstrap-sass-asset-helper: true !default;
options = {comments: true}.merge(options || {})
less = less.dup
s = CharStringScanner.new(less)
- rule_re = /(?:#{rule_prefix}[^{]*#{RULE_OPEN_BRACE_RE})/
+ rule_re = /(?:#{rule_prefix}[#{SELECTOR_CHAR})=(\s]*?#{RULE_OPEN_BRACE_RE})/
if options[:comments]
rule_start_re = /(?:#{COMMENT_RE}*)^#{rule_re}/
else
@@ -564,7 +582,7 @@ $bootstrap-sass-asset-helper: true !default;
# get the pos of css def at pos (search backwards)
def css_def_pos(css, pos, depth = -1)
to = open_brace_pos(css, pos, depth)
- prev_def = to - (css[0..to].reverse.index('}') || to) + 1
+ prev_def = to - (css[0..to].reverse.index(RULE_CLOSE_BRACE_RE_REVERSE) || to) + 1
from = prev_def + 1 + (css[prev_def + 1..-1] =~ %r(^\s*[^\s/]))
(from..to - 1)
end