bootstrap-sass 3.3.1.0 → 3.3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of bootstrap-sass might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.travis.yml +1 -3
- data/CONTRIBUTING.md +8 -1
- data/README.md +30 -36
- data/assets/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
- data/assets/fonts/bootstrap/glyphicons-halflings-regular.svg +273 -214
- data/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
- data/assets/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
- data/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
- data/assets/javascripts/bootstrap.js +1081 -1079
- data/assets/javascripts/bootstrap.min.js +7 -0
- data/assets/javascripts/bootstrap/affix.js +4 -4
- data/assets/javascripts/bootstrap/alert.js +3 -3
- data/assets/javascripts/bootstrap/button.js +3 -3
- data/assets/javascripts/bootstrap/carousel.js +7 -10
- data/assets/javascripts/bootstrap/collapse.js +4 -4
- data/assets/javascripts/bootstrap/dropdown.js +3 -3
- data/assets/javascripts/bootstrap/modal.js +3 -3
- data/assets/javascripts/bootstrap/popover.js +7 -13
- data/assets/javascripts/bootstrap/scrollspy.js +3 -3
- data/assets/javascripts/bootstrap/tab.js +3 -3
- data/assets/javascripts/bootstrap/tooltip.js +10 -16
- data/assets/javascripts/bootstrap/transition.js +2 -2
- data/assets/stylesheets/_bootstrap-compass.scss +2 -0
- data/assets/stylesheets/_bootstrap-mincer.scss +2 -0
- data/assets/stylesheets/_bootstrap-sprockets.scss +2 -0
- data/assets/stylesheets/bootstrap/_alerts.scss +5 -0
- data/assets/stylesheets/bootstrap/_badges.scss +4 -0
- data/assets/stylesheets/bootstrap/_breadcrumbs.scss +1 -1
- data/assets/stylesheets/bootstrap/_button-groups.scss +2 -2
- data/assets/stylesheets/bootstrap/_buttons.scss +1 -1
- data/assets/stylesheets/bootstrap/_carousel.scss +8 -6
- data/assets/stylesheets/bootstrap/_close.scss +1 -0
- data/assets/stylesheets/bootstrap/_dropdowns.scss +2 -1
- data/assets/stylesheets/bootstrap/_forms.scss +41 -19
- data/assets/stylesheets/bootstrap/_glyphicons.scss +265 -198
- data/assets/stylesheets/bootstrap/_jumbotron.scss +1 -0
- data/assets/stylesheets/bootstrap/_media.scss +14 -0
- data/assets/stylesheets/bootstrap/_navbar.scss +1 -0
- data/assets/stylesheets/bootstrap/_panels.scss +5 -1
- data/assets/stylesheets/bootstrap/_popovers.scss +1 -1
- data/assets/stylesheets/bootstrap/_responsive-utilities.scss +4 -1
- data/assets/stylesheets/bootstrap/_tables.scss +3 -3
- data/assets/stylesheets/bootstrap/_theme.scss +3 -2
- data/assets/stylesheets/bootstrap/_tooltip.scss +1 -1
- data/assets/stylesheets/bootstrap/_variables.scss +6 -8
- data/assets/stylesheets/bootstrap/mixins/_hide-text.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_opacity.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss +1 -1
- data/bootstrap-sass.gemspec +2 -2
- data/bower.json +3 -13
- data/lib/bootstrap-sass.rb +16 -4
- data/lib/bootstrap-sass/engine.rb +1 -1
- data/lib/bootstrap-sass/version.rb +2 -2
- data/package.json +2 -2
- data/tasks/bower.rake +1 -4
- data/tasks/converter.rb +1 -1
- data/tasks/converter/fonts_conversion.rb +1 -1
- data/tasks/converter/js_conversion.rb +6 -4
- data/tasks/converter/less_conversion.rb +23 -15
- data/templates/project/_bootstrap-variables.sass +6 -9
- data/templates/project/styles.sass +3 -0
- data/test/dummy_rails/config/environments/test.rb +2 -0
- data/test/sprockets_rails_test.rb +1 -1
- metadata +23 -21
@@ -331,6 +331,7 @@
|
|
331
331
|
}
|
332
332
|
// Menu position and menu caret support for dropups via extra dropup class
|
333
333
|
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
|
334
|
+
margin-bottom: 0;
|
334
335
|
@include border-top-radius($navbar-border-radius);
|
335
336
|
@include border-bottom-radius(0);
|
336
337
|
}
|
@@ -11,7 +11,7 @@
|
|
11
11
|
display: none;
|
12
12
|
max-width: $popover-max-width;
|
13
13
|
padding: 1px;
|
14
|
-
// Reset font and text
|
14
|
+
// Reset font and text properties given new insertion method
|
15
15
|
font-family: $font-family-base;
|
16
16
|
font-size: $font-size-base;
|
17
17
|
font-weight: normal;
|
@@ -26,7 +26,10 @@
|
|
26
26
|
// Visibility utilities
|
27
27
|
// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0
|
28
28
|
|
29
|
-
@include responsive-invisibility('.visible-xs
|
29
|
+
@include responsive-invisibility('.visible-xs');
|
30
|
+
@include responsive-invisibility('.visible-sm');
|
31
|
+
@include responsive-invisibility('.visible-md');
|
32
|
+
@include responsive-invisibility('.visible-lg');
|
30
33
|
|
31
34
|
.visible-xs-block,
|
32
35
|
.visible-xs-inline,
|
@@ -111,7 +111,7 @@ th {
|
|
111
111
|
// Default zebra-stripe styles (alternating gray and transparent backgrounds)
|
112
112
|
|
113
113
|
.table-striped {
|
114
|
-
> tbody > tr:nth-
|
114
|
+
> tbody > tr:nth-of-type(odd) {
|
115
115
|
background-color: $table-bg-accent;
|
116
116
|
}
|
117
117
|
}
|
@@ -133,7 +133,7 @@ th {
|
|
133
133
|
// Reset default table behavior
|
134
134
|
|
135
135
|
table col[class*="col-"] {
|
136
|
-
position: static; // Prevent border hiding in Firefox and IE9
|
136
|
+
position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
|
137
137
|
float: none;
|
138
138
|
display: table-column;
|
139
139
|
}
|
@@ -141,7 +141,7 @@ table {
|
|
141
141
|
td,
|
142
142
|
th {
|
143
143
|
&[class*="col-"] {
|
144
|
-
position: static; // Prevent border hiding in Firefox and IE9
|
144
|
+
position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
|
145
145
|
float: none;
|
146
146
|
display: table-cell;
|
147
147
|
}
|
@@ -36,7 +36,7 @@
|
|
36
36
|
// Mixin for generating new styles
|
37
37
|
@mixin btn-styles($btn-color: #555) {
|
38
38
|
@include gradient-vertical($start-color: $btn-color, $end-color: darken($btn-color, 12%));
|
39
|
-
@include reset-filter; // Disable gradients for IE9 because filter bleeds through rounded corners
|
39
|
+
@include reset-filter; // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620
|
40
40
|
background-repeat: repeat-x;
|
41
41
|
border-color: darken($btn-color, 14%);
|
42
42
|
|
@@ -52,6 +52,7 @@
|
|
52
52
|
border-color: darken($btn-color, 14%);
|
53
53
|
}
|
54
54
|
|
55
|
+
&.disabled,
|
55
56
|
&:disabled,
|
56
57
|
&[disabled] {
|
57
58
|
background-color: darken($btn-color, 12%);
|
@@ -130,7 +131,7 @@
|
|
130
131
|
// Inverted navbar
|
131
132
|
.navbar-inverse {
|
132
133
|
@include gradient-vertical($start-color: lighten($navbar-inverse-bg, 10%), $end-color: $navbar-inverse-bg);
|
133
|
-
@include reset-filter; // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered
|
134
|
+
@include reset-filter; // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257
|
134
135
|
|
135
136
|
.navbar-nav > .open > a,
|
136
137
|
.navbar-nav > .active > a {
|
@@ -9,7 +9,7 @@
|
|
9
9
|
z-index: $zindex-tooltip;
|
10
10
|
display: block;
|
11
11
|
visibility: visible;
|
12
|
-
// Reset font and text
|
12
|
+
// Reset font and text properties given new insertion method
|
13
13
|
font-family: $font-family-base;
|
14
14
|
font-size: $font-size-small;
|
15
15
|
font-weight: normal;
|
@@ -1,8 +1,4 @@
|
|
1
|
-
|
2
|
-
// When there no function is defined, `fn('')` is parsed as string that equals the right hand side
|
3
|
-
// NB: in Sass 3.3 there is a native function: function-exists(twbs-font-path)
|
4
|
-
$bootstrap-sass-asset-helper: (twbs-font-path("") != unquote('twbs-font-path("")')) !default;
|
5
|
-
|
1
|
+
$bootstrap-sass-asset-helper: false !default;
|
6
2
|
//
|
7
3
|
// Variables
|
8
4
|
// --------------------------------------------------
|
@@ -19,7 +15,7 @@ $gray: lighten($gray-base, 33.5%) !default; // #555
|
|
19
15
|
$gray-light: lighten($gray-base, 46.7%) !default; // #777
|
20
16
|
$gray-lighter: lighten($gray-base, 93.5%) !default; // #eee
|
21
17
|
|
22
|
-
$brand-primary: darken(#428bca, 6.5%) !default;
|
18
|
+
$brand-primary: darken(#428bca, 6.5%) !default; // #337ab7
|
23
19
|
$brand-success: #5cb85c !default;
|
24
20
|
$brand-info: #5bc0de !default;
|
25
21
|
$brand-warning: #f0ad4e !default;
|
@@ -82,7 +78,8 @@ $headings-color: inherit !default;
|
|
82
78
|
|
83
79
|
//** Load fonts from this directory.
|
84
80
|
|
85
|
-
// [converter]
|
81
|
+
// [converter] If $bootstrap-sass-asset-helper if used, provide path relative to the assets load path.
|
82
|
+
// [converter] This is because some asset helpers, such as Sprockets, do not work with file-relative paths.
|
86
83
|
$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
|
87
84
|
|
88
85
|
//** File name for all font files.
|
@@ -107,7 +104,7 @@ $padding-small-horizontal: 10px !default;
|
|
107
104
|
$padding-xs-vertical: 1px !default;
|
108
105
|
$padding-xs-horizontal: 5px !default;
|
109
106
|
|
110
|
-
$line-height-large: 1.
|
107
|
+
$line-height-large: 1.3333333 !default; // extra decimals for Win 8.1 Chrome
|
111
108
|
$line-height-small: 1.5 !default;
|
112
109
|
|
113
110
|
$border-radius-base: 4px !default;
|
@@ -195,6 +192,7 @@ $input-border: #ccc !default;
|
|
195
192
|
|
196
193
|
// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
|
197
194
|
//** Default `.form-control` border radius
|
195
|
+
// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
|
198
196
|
$input-border-radius: $border-radius-base !default;
|
199
197
|
//** Large `.form-control` border radius
|
200
198
|
$input-border-radius-large: $border-radius-large !default;
|
@@ -102,7 +102,7 @@
|
|
102
102
|
// Firefox
|
103
103
|
&::-moz-placeholder {
|
104
104
|
color: $color;
|
105
|
-
opacity: 1; //
|
105
|
+
opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526
|
106
106
|
}
|
107
107
|
&:-ms-input-placeholder { color: $color; } // Internet Explorer 10+
|
108
108
|
&::-webkit-input-placeholder { color: $color; } // Safari and Chrome
|
data/bootstrap-sass.gemspec
CHANGED
@@ -11,7 +11,8 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.homepage = "https://github.com/twbs/bootstrap-sass"
|
12
12
|
s.license = 'MIT'
|
13
13
|
|
14
|
-
s.add_runtime_dependency 'sass', '
|
14
|
+
s.add_runtime_dependency 'sass', '>= 3.2.19'
|
15
|
+
s.add_runtime_dependency 'autoprefixer-rails', '>= 5.0.0.1'
|
15
16
|
|
16
17
|
# Testing dependencies
|
17
18
|
s.add_development_dependency 'minitest', '~> 5.4.0'
|
@@ -24,7 +25,6 @@ Gem::Specification.new do |s|
|
|
24
25
|
s.add_development_dependency 'activesupport', '>= 4.1.5'
|
25
26
|
s.add_development_dependency 'json', '>= 1.8.1'
|
26
27
|
s.add_development_dependency 'sprockets-rails', '>= 2.1.3'
|
27
|
-
s.add_development_dependency 'autoprefixer-rails', '~> 1.1'
|
28
28
|
s.add_development_dependency 'jquery-rails', '>= 3.1.0'
|
29
29
|
s.add_development_dependency 'slim-rails'
|
30
30
|
s.add_development_dependency 'uglifier'
|
data/bower.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "bootstrap-sass",
|
3
|
-
"version": "3.3.
|
3
|
+
"version": "3.3.2",
|
4
4
|
"homepage": "https://github.com/twbs/bootstrap-sass",
|
5
5
|
"authors": [
|
6
6
|
"Thomas McDonald",
|
@@ -15,18 +15,8 @@
|
|
15
15
|
"assets/fonts/bootstrap/glyphicons-halflings-regular.svg",
|
16
16
|
"assets/fonts/bootstrap/glyphicons-halflings-regular.ttf",
|
17
17
|
"assets/fonts/bootstrap/glyphicons-halflings-regular.woff",
|
18
|
-
"assets/
|
19
|
-
"assets/javascripts/bootstrap
|
20
|
-
"assets/javascripts/bootstrap/button.js",
|
21
|
-
"assets/javascripts/bootstrap/carousel.js",
|
22
|
-
"assets/javascripts/bootstrap/collapse.js",
|
23
|
-
"assets/javascripts/bootstrap/dropdown.js",
|
24
|
-
"assets/javascripts/bootstrap/tab.js",
|
25
|
-
"assets/javascripts/bootstrap/transition.js",
|
26
|
-
"assets/javascripts/bootstrap/scrollspy.js",
|
27
|
-
"assets/javascripts/bootstrap/modal.js",
|
28
|
-
"assets/javascripts/bootstrap/tooltip.js",
|
29
|
-
"assets/javascripts/bootstrap/popover.js"
|
18
|
+
"assets/fonts/bootstrap/glyphicons-halflings-regular.woff2",
|
19
|
+
"assets/javascripts/bootstrap.js"
|
30
20
|
],
|
31
21
|
"keywords": [
|
32
22
|
"twbs",
|
data/lib/bootstrap-sass.rb
CHANGED
@@ -4,7 +4,13 @@ module Bootstrap
|
|
4
4
|
# Inspired by Kaminari
|
5
5
|
def load!
|
6
6
|
register_compass_extension if compass?
|
7
|
-
|
7
|
+
|
8
|
+
if rails?
|
9
|
+
register_rails_engine
|
10
|
+
elsif sprockets?
|
11
|
+
register_sprockets
|
12
|
+
end
|
13
|
+
|
8
14
|
configure_sass
|
9
15
|
end
|
10
16
|
|
@@ -30,7 +36,7 @@ module Bootstrap
|
|
30
36
|
end
|
31
37
|
|
32
38
|
# Environment detection helpers
|
33
|
-
def
|
39
|
+
def sprockets?
|
34
40
|
defined?(::Sprockets)
|
35
41
|
end
|
36
42
|
|
@@ -49,8 +55,8 @@ module Bootstrap
|
|
49
55
|
|
50
56
|
::Sass.load_paths << stylesheets_path
|
51
57
|
|
52
|
-
# bootstrap requires minimum precision of
|
53
|
-
::Sass::Script::Number.precision = [
|
58
|
+
# bootstrap requires minimum precision of 8, see https://github.com/twbs/bootstrap-sass/issues/409
|
59
|
+
::Sass::Script::Number.precision = [8, ::Sass::Script::Number.precision].max
|
54
60
|
end
|
55
61
|
|
56
62
|
def register_compass_extension
|
@@ -66,6 +72,12 @@ module Bootstrap
|
|
66
72
|
def register_rails_engine
|
67
73
|
require 'bootstrap-sass/engine'
|
68
74
|
end
|
75
|
+
|
76
|
+
def register_sprockets
|
77
|
+
Sprockets.append_path(stylesheets_path)
|
78
|
+
Sprockets.append_path(fonts_path)
|
79
|
+
Sprockets.append_path(javascripts_path)
|
80
|
+
end
|
69
81
|
end
|
70
82
|
end
|
71
83
|
|
@@ -5,7 +5,7 @@ module Bootstrap
|
|
5
5
|
%w(stylesheets javascripts fonts images).each do |sub|
|
6
6
|
app.config.assets.paths << root.join('assets', sub).to_s
|
7
7
|
end
|
8
|
-
app.config.assets.precompile << %r(bootstrap/glyphicons-halflings-regular\.(?:eot|svg|ttf|
|
8
|
+
app.config.assets.precompile << %r(bootstrap/glyphicons-halflings-regular\.(?:eot|svg|ttf|woff2?)$)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
data/package.json
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
{
|
2
2
|
"name": "bootstrap-sass",
|
3
|
-
"version": "3.3.
|
3
|
+
"version": "3.3.2",
|
4
4
|
"description": "bootstrap-sass is a Sass-powered version of Bootstrap, ready to drop right into your Sass powered applications.",
|
5
|
-
"main": "
|
5
|
+
"main": "assets/javascripts/bootstrap.js",
|
6
6
|
"repository": {
|
7
7
|
"type": "git",
|
8
8
|
"url": "git://github.com/twbs/bootstrap-sass"
|
data/tasks/bower.rake
CHANGED
@@ -15,14 +15,11 @@ namespace :bower do
|
|
15
15
|
require 'bootstrap-sass'
|
16
16
|
Dir.chdir Bootstrap.gem_path do
|
17
17
|
spec = JSON.parse(File.read 'bower.json')
|
18
|
-
js_paths = File.read(File.join Bootstrap.javascripts_path, 'bootstrap-sprockets.js').lines.map do |line|
|
19
|
-
line.strip if line.sub!(%r(//\s*=\s*require\s*(?:./)?(.*)\s*), 'assets/javascripts/\1.js')
|
20
|
-
end.compact
|
21
18
|
|
22
19
|
spec['main'] =
|
23
20
|
find_files.(File.join(Bootstrap.stylesheets_path, '_bootstrap.scss')) +
|
24
21
|
find_files.(Bootstrap.fonts_path) +
|
25
|
-
|
22
|
+
%w(assets/javascripts/bootstrap.js)
|
26
23
|
|
27
24
|
spec['version'] = Bootstrap::VERSION[0..-3]
|
28
25
|
|
data/tasks/converter.rb
CHANGED
@@ -50,7 +50,7 @@ class Converter
|
|
50
50
|
def_delegators :@logger, :log, :log_status, :log_processing, :log_transform, :log_file_info, :log_processed, :log_http_get_file, :log_http_get_files, :silence_log
|
51
51
|
|
52
52
|
def process_bootstrap
|
53
|
-
log_status "Convert Bootstrap LESS to
|
53
|
+
log_status "Convert Bootstrap LESS to Sass"
|
54
54
|
puts " repo : #@repo_url"
|
55
55
|
puts " branch : #@branch_sha #@repo_url/tree/#@branch"
|
56
56
|
puts " save to: #{@save_to.to_json}"
|
@@ -12,14 +12,16 @@ class Converter
|
|
12
12
|
|
13
13
|
log_status 'Updating javascript manifest'
|
14
14
|
manifest = ''
|
15
|
-
cat = ''
|
16
15
|
bootstrap_js_files.each do |name|
|
17
|
-
cat << contents[name] + "\n"
|
18
16
|
name = name.gsub(/\.js$/, '')
|
19
17
|
manifest << "//= require ./bootstrap/#{name}\n"
|
20
18
|
end
|
21
|
-
|
22
|
-
|
19
|
+
dist_js = read_files('dist/js', %w(bootstrap.js bootstrap.min.js))
|
20
|
+
{
|
21
|
+
'assets/javascripts/bootstrap-sprockets.js' => manifest,
|
22
|
+
'assets/javascripts/bootstrap.js' => dist_js['bootstrap.js'],
|
23
|
+
'assets/javascripts/bootstrap.min.js' => dist_js['bootstrap.min.js'],
|
24
|
+
}.each do |path, content|
|
23
25
|
save_file path, content
|
24
26
|
log_processed path
|
25
27
|
end
|
@@ -95,14 +95,10 @@ class Converter
|
|
95
95
|
file = apply_mixin_parent_selector file, '\.(?:visible|hidden)'
|
96
96
|
when 'variables.less'
|
97
97
|
file = insert_default_vars(file)
|
98
|
-
file =
|
99
|
-
// When true, asset path helpers are used, otherwise the regular CSS `url()` is used.
|
100
|
-
// When there no function is defined, `fn('')` is parsed as string that equals the right hand side
|
101
|
-
// NB: in Sass 3.3 there is a native function: function-exists(twbs-font-path)
|
102
|
-
$bootstrap-sass-asset-helper: #{sass_fn_exists('twbs-font-path')} !default;
|
103
|
-
SCSS
|
98
|
+
file = ['$bootstrap-sass-asset-helper: false !default;', file].join("\n")
|
104
99
|
file = replace_all file, %r{(\$icon-font-path): \s*"(.*)" (!default);}, "\n" + unindent(<<-SCSS, 14)
|
105
|
-
// [converter]
|
100
|
+
// [converter] If $bootstrap-sass-asset-helper if used, provide path relative to the assets load path.
|
101
|
+
// [converter] This is because some asset helpers, such as Sprockets, do not work with file-relative paths.
|
106
102
|
\\1: if($bootstrap-sass-asset-helper, "bootstrap/", "\\2bootstrap/") \\3;
|
107
103
|
SCSS
|
108
104
|
when 'close.less'
|
@@ -114,6 +110,9 @@ class Converter
|
|
114
110
|
when 'forms.less'
|
115
111
|
file = extract_nested_rule file, 'textarea&'
|
116
112
|
file = apply_mixin_parent_selector(file, '\.input-(?:sm|lg)')
|
113
|
+
file = replace_rules file, /\.form-group-(?:sm|lg)/ do |rule|
|
114
|
+
apply_mixin_parent_selector rule, '.form-control'
|
115
|
+
end
|
117
116
|
when 'navbar.less'
|
118
117
|
file = replace_all file, /(\s*)\.navbar-(right|left)\s*\{\s*@extend\s*\.pull-(right|left);\s*/, "\\1.navbar-\\2 {\\1 float: \\2 !important;\\1"
|
119
118
|
when 'tables.less'
|
@@ -146,7 +145,7 @@ class Converter
|
|
146
145
|
# generate variables template
|
147
146
|
save_file 'templates/project/_bootstrap-variables.sass',
|
148
147
|
"// Override Bootstrap variables here (defaults from bootstrap-sass v#{Bootstrap::VERSION}):\n\n" +
|
149
|
-
File.read("#{save_to}/_variables.scss").gsub(/^(?=\$)/, '// ').gsub(/ !default;/, '')
|
148
|
+
File.read("#{save_to}/_variables.scss").lines[1..-1].join.gsub(/^(?=\$)/, '// ').gsub(/ !default;/, '')
|
150
149
|
end
|
151
150
|
|
152
151
|
def bootstrap_less_files
|
@@ -171,6 +170,7 @@ class Converter
|
|
171
170
|
file = deinterpolate_vararg_mixins(file)
|
172
171
|
file = replace_calculation_semantics(file)
|
173
172
|
file = replace_file_imports(file)
|
173
|
+
file = unquote_utf8_escape_sequences(file)
|
174
174
|
file
|
175
175
|
end
|
176
176
|
|
@@ -206,7 +206,7 @@ class Converter
|
|
206
206
|
SASS
|
207
207
|
end
|
208
208
|
|
209
|
-
# convert grid mixins LESS when =>
|
209
|
+
# convert grid mixins LESS when => Sass @if
|
210
210
|
def convert_grid_mixins(file)
|
211
211
|
file = replace_rules file, /@mixin make-grid-columns/, comments: false do |css, pos|
|
212
212
|
mixin_all_grid_columns css, selector: '.col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}', to: '$grid-columns'
|
@@ -263,8 +263,8 @@ SASS
|
|
263
263
|
|
264
264
|
# margin: a -b
|
265
265
|
# LESS: sets 2 values
|
266
|
-
#
|
267
|
-
# This wraps a and -b so they evaluates to 2 values in
|
266
|
+
# Sass: sets 1 value (a-b)
|
267
|
+
# This wraps a and -b so they evaluates to 2 values in Sass
|
268
268
|
def replace_calculation_semantics(file)
|
269
269
|
# split_prop_val.call('(@navbar-padding-vertical / 2) -@navbar-padding-horizontal')
|
270
270
|
# #=> ["(navbar-padding-vertical / 2)", "-navbar-padding-horizontal"]
|
@@ -315,6 +315,12 @@ SASS
|
|
315
315
|
%Q(@import "#{target_path}\\1";)
|
316
316
|
end
|
317
317
|
|
318
|
+
# Unquote escape sequences, e.g. content: "#{$sep}\00a0" to content: #{$sep}\00a0
|
319
|
+
# Works around Sass 3.4 issue: https://github.com/sass/sass/issues/1395
|
320
|
+
def unquote_utf8_escape_sequences(scss)
|
321
|
+
scss.gsub /\"((?:#\{[^}]+\})?\\[a-f0-9]{4,}?)\"/, '\1'
|
322
|
+
end
|
323
|
+
|
318
324
|
def replace_all(file, regex, replacement = nil, &block)
|
319
325
|
log_transform regex, replacement
|
320
326
|
new_file = file.gsub(regex, replacement, &block)
|
@@ -384,8 +390,10 @@ SASS
|
|
384
390
|
end
|
385
391
|
# unwrap, and replace @include
|
386
392
|
unindent unwrap_rule_block(rule).gsub(/(@include [\w-]+)\(?([\$\w\-,\s]*)\)?/) {
|
387
|
-
args = $2
|
388
|
-
|
393
|
+
name, args = $1, $2
|
394
|
+
sel.gsub(/\s+/, ' ').split(/,\s*/ ).map { |sel_part|
|
395
|
+
"#{cmt}#{name}('#{sel_part}'#{', ' if args && !args.empty?}#{args})"
|
396
|
+
}.join(";\n")
|
389
397
|
}
|
390
398
|
end
|
391
399
|
end
|
@@ -449,7 +457,7 @@ SASS
|
|
449
457
|
end
|
450
458
|
end
|
451
459
|
|
452
|
-
# change Microsoft filters to
|
460
|
+
# change Microsoft filters to Sass calling convention
|
453
461
|
def replace_ms_filters(file)
|
454
462
|
log_transform
|
455
463
|
file.gsub(
|
@@ -497,7 +505,7 @@ SASS
|
|
497
505
|
end
|
498
506
|
|
499
507
|
def replace_escaping(less)
|
500
|
-
less = less.gsub(/~"([^"]+)"/, '
|
508
|
+
less = less.gsub(/~"([^"]+)"/, '\1').gsub(/~'([^']+)'/, '\1') # Get rid of ~"" escape
|
501
509
|
less.gsub!(/\$\{([^}]+)\}/, '$\1') # Get rid of @{} escape
|
502
510
|
less.gsub!(/"([^"\n]*)(\$[\w\-]+)([^"\n]*)"/, '"\1#{\2}\3"') # interpolate variable in string, e.g. url("$file-1x") => url("#{$file-1x}")
|
503
511
|
less.gsub(/(\W)e\(%\("?([^"]*)"?\)\)/, '\1\2') # Get rid of e(%("")) escape
|