bootstrap-sass 3.1.1.0 → 3.1.1.1
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.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/.travis.yml +5 -2
- data/Gemfile +4 -0
- data/README.md +41 -20
- data/Rakefile +5 -2
- data/bootstrap-sass.gemspec +10 -7
- data/bower.json +98 -2
- data/lib/bootstrap-sass.rb +0 -1
- data/lib/bootstrap-sass/version.rb +2 -2
- data/package.json +25 -0
- data/tasks/bower.rake +33 -0
- data/tasks/converter.rb +3 -1
- data/tasks/converter/less_conversion.rb +54 -35
- data/tasks/converter/network.rb +10 -7
- data/templates/project/_variables.sass.erb +6 -0
- data/templates/project/manifest.rb +2 -2
- data/templates/project/styles.sass +3 -0
- data/test/dummy_node_mincer/apple-touch-icon-144-precomposed.png +0 -0
- data/test/dummy_node_mincer/application.css.ejs.scss +6 -0
- data/test/dummy_node_mincer/manifest.js +87 -0
- data/test/{dummy → dummy_rails}/README.rdoc +0 -0
- data/test/{dummy → dummy_rails}/Rakefile +0 -0
- data/test/{dummy → dummy_rails}/app/assets/images/.keep +0 -0
- data/test/{dummy → dummy_rails}/app/assets/javascripts/application.js +0 -0
- data/test/{dummy → dummy_rails}/app/assets/stylesheets/application.css.sass +0 -0
- data/test/{dummy → dummy_rails}/app/controllers/application_controller.rb +0 -0
- data/test/{dummy → dummy_rails}/app/controllers/pages_controller.rb +0 -0
- data/test/{dummy → dummy_rails}/app/helpers/application_helper.rb +0 -0
- data/test/{dummy → dummy_rails}/app/views/layouts/application.html.erb +0 -0
- data/test/{dummy → dummy_rails}/app/views/pages/root.html.slim +0 -0
- data/test/{dummy → dummy_rails}/bin/bundle +0 -0
- data/test/{dummy → dummy_rails}/bin/rails +0 -0
- data/test/{dummy → dummy_rails}/bin/rake +0 -0
- data/test/{dummy → dummy_rails}/config.ru +0 -0
- data/test/{dummy → dummy_rails}/config/application.rb +3 -6
- data/test/{dummy → dummy_rails}/config/boot.rb +0 -0
- data/test/{dummy → dummy_rails}/config/environment.rb +0 -0
- data/test/{dummy → dummy_rails}/config/environments/development.rb +0 -0
- data/test/{dummy → dummy_rails}/config/environments/production.rb +0 -0
- data/test/{dummy → dummy_rails}/config/environments/test.rb +0 -0
- data/test/{dummy → dummy_rails}/config/initializers/backtrace_silencers.rb +0 -0
- data/test/{dummy → dummy_rails}/config/initializers/filter_parameter_logging.rb +0 -0
- data/test/{dummy → dummy_rails}/config/initializers/inflections.rb +0 -0
- data/test/{dummy → dummy_rails}/config/initializers/mime_types.rb +0 -0
- data/test/{dummy → dummy_rails}/config/initializers/secret_token.rb +0 -0
- data/test/{dummy → dummy_rails}/config/initializers/session_store.rb +0 -0
- data/test/{dummy → dummy_rails}/config/initializers/wrap_parameters.rb +0 -0
- data/test/{dummy → dummy_rails}/config/locales/en.yml +0 -0
- data/test/{dummy → dummy_rails}/config/locales/es.yml +0 -0
- data/test/{dummy → dummy_rails}/config/routes.rb +0 -0
- data/test/{dummy → dummy_rails}/db/test.sqlite3 +0 -0
- data/test/{dummy → dummy_rails}/lib/assets/.keep +0 -0
- data/test/{dummy → dummy_rails}/log/.keep +0 -0
- data/test/{dummy → dummy_rails}/public/404.html +0 -0
- data/test/{dummy → dummy_rails}/public/422.html +0 -0
- data/test/{dummy → dummy_rails}/public/500.html +0 -0
- data/test/{dummy → dummy_rails}/public/favicon.ico +0 -0
- data/test/gemfiles/sass_3_2.gemfile +3 -0
- data/test/gemfiles/sass_3_3.gemfile +17 -0
- data/test/gemfiles/sass_head.gemfile +5 -2
- data/test/node_mincer_test.rb +35 -0
- data/test/node_sass_test.rb +15 -0
- data/test/test_helper.rb +2 -2
- data/vendor/assets/javascripts/bootstrap/affix.js +2 -4
- data/vendor/assets/javascripts/bootstrap/carousel.js +5 -5
- data/vendor/assets/javascripts/bootstrap/collapse.js +18 -13
- data/vendor/assets/javascripts/bootstrap/dropdown.js +8 -8
- data/vendor/assets/javascripts/bootstrap/modal.js +43 -15
- data/vendor/assets/javascripts/bootstrap/popover.js +1 -1
- data/vendor/assets/javascripts/bootstrap/scrollspy.js +5 -4
- data/vendor/assets/javascripts/bootstrap/tooltip.js +64 -41
- data/vendor/assets/javascripts/bootstrap/transition.js +4 -4
- data/vendor/assets/stylesheets/_bootstrap-mincer.scss +17 -0
- data/vendor/assets/stylesheets/bootstrap.scss +3 -2
- data/vendor/assets/stylesheets/bootstrap/_badges.scss +13 -11
- data/vendor/assets/stylesheets/bootstrap/_button-groups.scss +12 -2
- data/vendor/assets/stylesheets/bootstrap/_carousel.scss +12 -3
- data/vendor/assets/stylesheets/bootstrap/_code.scss +0 -1
- data/vendor/assets/stylesheets/bootstrap/_component-animations.scss +10 -4
- data/vendor/assets/stylesheets/bootstrap/_dropdowns.scss +1 -0
- data/vendor/assets/stylesheets/bootstrap/_forms.scss +62 -20
- data/vendor/assets/stylesheets/bootstrap/_glyphicons.scss +4 -0
- data/vendor/assets/stylesheets/bootstrap/_jumbotron.scss +4 -0
- data/vendor/assets/stylesheets/bootstrap/_labels.scss +11 -9
- data/vendor/assets/stylesheets/bootstrap/_list-group.scss +19 -0
- data/vendor/assets/stylesheets/bootstrap/_mixins.scss +35 -943
- data/vendor/assets/stylesheets/bootstrap/_modals.scss +11 -3
- data/vendor/assets/stylesheets/bootstrap/_navbar.scss +40 -2
- data/vendor/assets/stylesheets/bootstrap/_normalize.scss +21 -19
- data/vendor/assets/stylesheets/bootstrap/_panels.scss +2 -3
- data/vendor/assets/stylesheets/bootstrap/_popovers.scss +1 -1
- data/vendor/assets/stylesheets/bootstrap/_progress-bars.scss +16 -7
- data/vendor/assets/stylesheets/bootstrap/_responsive-embed.scss +34 -0
- data/vendor/assets/stylesheets/bootstrap/_responsive-utilities.scss +99 -0
- data/vendor/assets/stylesheets/bootstrap/_scaffolding.scss +16 -0
- data/vendor/assets/stylesheets/bootstrap/_tables.scss +2 -2
- data/vendor/assets/stylesheets/bootstrap/_type.scss +16 -6
- data/vendor/assets/stylesheets/bootstrap/_variables.scss +26 -10
- data/vendor/assets/stylesheets/bootstrap/bootstrap.scss +3 -2
- data/vendor/assets/stylesheets/bootstrap/mixins/_alerts.scss +14 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_background-variant.scss +11 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_border-radius.scss +18 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_buttons.scss +50 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_center-block.scss +7 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_clearfix.scss +22 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_forms.scss +84 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_gradients.scss +58 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +87 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_grid.scss +122 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_hide-text.scss +21 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_image.scss +33 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_labels.scss +12 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_list-group.scss +31 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +10 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss +9 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_opacity.scss +8 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_pagination.scss +23 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_panels.scss +20 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_progress-bar.scss +8 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_reset-filter.scss +8 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_resize.scss +6 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss +21 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_size.scss +10 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_tab-focus.scss +9 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_table-row.scss +28 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +11 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_text-overflow.scss +8 -0
- data/vendor/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss +224 -0
- metadata +169 -136
- data/templates/project/_variables.scss.erb +0 -3
- data/templates/project/styles.scss +0 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d3f1fad60e55fbb88ef5e8a50535ccd5a05a20a4
|
|
4
|
+
data.tar.gz: e574370f0aa62a710bb5f382a7a7582f5bb01afd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 73d37a1223e4b25fd3ecd6cab281255f9994afe8410982de4e13942f9168b967b5ec1d4f6ff8268a1bbf69194907f9f38d1e04725efbcea3a5bc8d2a83c5be03
|
|
7
|
+
data.tar.gz: 68ff6488249a052a596ec8cdfa0af5753ac9b2f55c16d3b3812651df5da63d2688c5674c548b5c898d6774697936680dbf2a1ef50e1b287bf99fe4eca433fe9f
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
language: ruby
|
|
2
2
|
rvm:
|
|
3
|
+
- 2.1.1
|
|
3
4
|
- 2.0.0
|
|
4
|
-
- 1.9.3
|
|
5
5
|
- jruby
|
|
6
|
-
- rbx
|
|
6
|
+
- rbx
|
|
7
7
|
gemfile:
|
|
8
8
|
- test/gemfiles/sass_3_2.gemfile
|
|
9
|
+
- test/gemfiles/sass_3_3.gemfile
|
|
9
10
|
- test/gemfiles/sass_head.gemfile
|
|
11
|
+
before_install:
|
|
12
|
+
- "npm install node-sass mincer ejs"
|
|
10
13
|
matrix:
|
|
11
14
|
allow_failures:
|
|
12
15
|
- gemfile: test/gemfiles/sass_head.gemfile
|
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
# Bootstrap for Sass
|
|
2
|
-
|
|
3
|
-
[](http://travis-ci.org/twbs/bootstrap-sass)
|
|
1
|
+
# Bootstrap for Sass [](http://travis-ci.org/twbs/bootstrap-sass)
|
|
4
2
|
|
|
5
3
|
`bootstrap-sass` is a Sass-powered version of [Bootstrap](http://github.com/twbs/bootstrap), ready to drop right into your Sass powered applications.
|
|
6
4
|
|
|
@@ -15,7 +13,7 @@ Please see the appropriate guide for your environment of choice:
|
|
|
15
13
|
In your Gemfile you need to add the `bootstrap-sass` gem, and ensure that the `sass-rails` gem is present - it is added to new Rails applications by default.
|
|
16
14
|
|
|
17
15
|
```ruby
|
|
18
|
-
gem 'sass-rails', '>= 3.2'
|
|
16
|
+
gem 'sass-rails', '>= 3.2'
|
|
19
17
|
gem 'bootstrap-sass', '~> 3.1.1'
|
|
20
18
|
```
|
|
21
19
|
|
|
@@ -24,8 +22,9 @@ gem 'bootstrap-sass', '~> 3.1.1'
|
|
|
24
22
|
|
|
25
23
|
#### Rails 3.2.x
|
|
26
24
|
|
|
27
|
-
For Rails 3.2.x, make sure
|
|
28
|
-
|
|
25
|
+
For Rails 3.2.x, make sure bootstrap-sass is moved out of the `:assets` group.
|
|
26
|
+
This is because, by default, assets group gems are not required in `production`.
|
|
27
|
+
However, for pre-compilation to succeed in production, `bootstrap-sass` gem must be required.
|
|
29
28
|
|
|
30
29
|
### b. Compass without Rails
|
|
31
30
|
|
|
@@ -51,10 +50,16 @@ If you are creating a new Compass project, you can generate it with bootstrap-sa
|
|
|
51
50
|
bundle exec compass create my-new-project -r bootstrap-sass --using bootstrap
|
|
52
51
|
```
|
|
53
52
|
|
|
53
|
+
or, alternatively, if you're not using a Gemfile for your dependencies:
|
|
54
|
+
|
|
55
|
+
```console
|
|
56
|
+
compass create my-new-project -r bootstrap-sass --using bootstrap
|
|
57
|
+
```
|
|
58
|
+
|
|
54
59
|
This will create a new Compass project with the following files in it:
|
|
55
60
|
|
|
56
|
-
* [_variables.scss](/templates/project/_variables.
|
|
57
|
-
* [styles.scss](/templates/project/styles.
|
|
61
|
+
* [_variables.scss](/templates/project/_variables.sass.erb) - all of bootstrap variables (override them here).
|
|
62
|
+
* [styles.scss](/templates/project/styles.sass) - main project SCSS file, import `variables` and `bootstrap`.
|
|
58
63
|
|
|
59
64
|
Some bootstrap-sass mixins may conflict with the Compass ones.
|
|
60
65
|
If this happens, change the import order so that Compass mixins are loaded later.
|
|
@@ -67,20 +72,33 @@ Require the gem, and load paths and Sass helpers will be configured automaticall
|
|
|
67
72
|
require 'bootstrap-sass'
|
|
68
73
|
```
|
|
69
74
|
|
|
70
|
-
### d. Bower
|
|
75
|
+
### d. Node.js / Bower
|
|
71
76
|
|
|
72
|
-
Using bootstrap-sass as a Bower package is still being tested
|
|
77
|
+
Using bootstrap-sass as a Bower package is still being tested. It is compatible with node-sass 0.8.3+. You can install it with:
|
|
73
78
|
|
|
74
79
|
```bash
|
|
75
|
-
bower install
|
|
80
|
+
bower install bootstrap-sass-official
|
|
76
81
|
```
|
|
77
82
|
|
|
78
|
-
`bootstrap-sass` is taken so make sure you use the
|
|
83
|
+
`bootstrap-sass` is taken so make sure you use the command above.
|
|
79
84
|
|
|
80
85
|
Sass, JS, and all other assets are located at [vendor/assets](/vendor/assets).
|
|
81
86
|
|
|
82
|
-
|
|
87
|
+
#### Mincer
|
|
83
88
|
|
|
89
|
+
If you use [mincer][mincer] with node-sass, import bootstrap into a `.css.ejs.scss` file like so:
|
|
90
|
+
|
|
91
|
+
```scss
|
|
92
|
+
// Import mincer asset paths helper integration
|
|
93
|
+
@import "bootstrap-mincer";
|
|
94
|
+
@import "bootstrap";
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
See also this [example manifest.js](/test/dummy_node_mincer/manifest.js) for mincer.
|
|
98
|
+
|
|
99
|
+
#### Number precision
|
|
100
|
+
|
|
101
|
+
bootstrap-sass [requires](https://github.com/twbs/bootstrap-sass/issues/409) minimum [Sass number precision][sass-precision] of 10 (default is 5).
|
|
84
102
|
|
|
85
103
|
When using ruby Sass compiler with the bower version you can enforce the limit with:
|
|
86
104
|
|
|
@@ -88,14 +106,16 @@ When using ruby Sass compiler with the bower version you can enforce the limit w
|
|
|
88
106
|
::Sass::Script::Number.precision = [10, ::Sass::Script::Number.precision].max
|
|
89
107
|
```
|
|
90
108
|
|
|
109
|
+
Precision option is now available in libsass, but it has not made into node-sass yet.
|
|
110
|
+
|
|
91
111
|
#### JS and fonts
|
|
92
112
|
|
|
93
|
-
Assets are discovered automatically on Rails, Sprockets, and
|
|
113
|
+
Assets are discovered automatically on Rails, Sprockets, Compass, and Node + Mincer, using native asset path helpers.
|
|
94
114
|
|
|
95
115
|
Otherwise the fonts are referenced as:
|
|
96
116
|
|
|
97
117
|
```sass
|
|
98
|
-
"#{$icon-font-path}
|
|
118
|
+
"#{$icon-font-path}#{$icon-font-name}.eot"
|
|
99
119
|
```
|
|
100
120
|
|
|
101
121
|
`$icon-font-path` defaults to `bootstrap/`.
|
|
@@ -152,7 +172,7 @@ In `application.sass`, replace `@import 'bootstrap'` with:
|
|
|
152
172
|
|
|
153
173
|
### Javascript
|
|
154
174
|
|
|
155
|
-
We have a helper that includes all Bootstrap javascripts. If you use Rails (or Sprockets separately),
|
|
175
|
+
We have a helper that includes all Bootstrap javascripts. If you use Rails (or Sprockets separately),
|
|
156
176
|
put this in your Javascript manifest (usually in `application.js`) to load the files in the [correct order](/vendor/assets/javascripts/bootstrap.js):
|
|
157
177
|
|
|
158
178
|
```js
|
|
@@ -183,12 +203,12 @@ Keeping bootstrap-sass in sync with upstream changes from Bootstrap used to be a
|
|
|
183
203
|
Upstream changes to the Bootstrap project can now be pulled in using the `convert` rake task.
|
|
184
204
|
|
|
185
205
|
Here's an example run that would pull down the master branch from the main [twbs/bootstrap](https://github.com/twbs/bootstrap) repo:
|
|
186
|
-
|
|
206
|
+
|
|
187
207
|
rake convert
|
|
188
|
-
|
|
189
|
-
This will convert the latest LESS to
|
|
208
|
+
|
|
209
|
+
This will convert the latest LESS to Sass and update to the latest JS.
|
|
190
210
|
To convert a specific branch or version, pass the branch name or the commit hash as the first task argument:
|
|
191
|
-
|
|
211
|
+
|
|
192
212
|
rake convert[e8a1df5f060bf7e6631554648e0abde150aedbe4]
|
|
193
213
|
|
|
194
214
|
The latest converter script is located [here][converter] and does the following:
|
|
@@ -226,3 +246,4 @@ Michael Hartl's [Rails Tutorial](http://railstutorial.org/), [gitlabhq](http://g
|
|
|
226
246
|
[antirequire]: https://github.com/twbs/bootstrap-sass/issues/79#issuecomment-4428595
|
|
227
247
|
[jsdocs]: http://getbootstrap.com/javascript/#transitions
|
|
228
248
|
[sass-precision]: http://sass-lang.com/documentation/Sass/Script/Number.html#precision-class_method
|
|
249
|
+
[mincer]: https://github.com/nodeca/mincer
|
data/Rakefile
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
load './tasks/bower.rake'
|
|
2
|
+
|
|
1
3
|
require 'rake/testtask'
|
|
2
4
|
Rake::TestTask.new do |t|
|
|
3
5
|
t.libs << "test"
|
|
@@ -37,13 +39,14 @@ task :compile, :css_path do |t, args|
|
|
|
37
39
|
require 'term/ansicolor'
|
|
38
40
|
|
|
39
41
|
path = 'vendor/assets/stylesheets'
|
|
42
|
+
css_path = args.with_defaults(css_path: 'tmp')[:css_path]
|
|
40
43
|
puts Term::ANSIColor.bold "Compiling SCSS in #{path}"
|
|
44
|
+
Dir.mkdir(css_path) unless File.directory?(css_path)
|
|
41
45
|
%w(bootstrap bootstrap/_theme).each do |file|
|
|
42
|
-
save_path = "#{
|
|
46
|
+
save_path = "#{css_path}/#{file.sub(/(^|\/)?_+/, '\1').sub('/', '-')}.css"
|
|
43
47
|
puts Term::ANSIColor.cyan(" #{save_path}") + '...'
|
|
44
48
|
engine = Sass::Engine.for_file("#{path}/#{file}.scss", syntax: :scss, load_paths: [path])
|
|
45
49
|
css = engine.render
|
|
46
|
-
File.mkdir('tmp') unless File.directory?('tmp')
|
|
47
50
|
File.open(save_path, 'w') { |f| f.write css }
|
|
48
51
|
end
|
|
49
52
|
end
|
data/bootstrap-sass.gemspec
CHANGED
|
@@ -11,17 +11,20 @@ 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_development_dependency 'compass'
|
|
15
|
-
s.add_development_dependency 'term-ansicolor'
|
|
16
|
-
s.add_development_dependency 'sass-rails', '>= 3.2'
|
|
17
14
|
s.add_runtime_dependency 'sass', '~> 3.2'
|
|
18
15
|
|
|
19
|
-
|
|
20
|
-
s.add_development_dependency '
|
|
21
|
-
s.add_development_dependency '
|
|
22
|
-
s.add_development_dependency 'jquery-rails'
|
|
16
|
+
# Dummy Rails app dependencies
|
|
17
|
+
s.add_development_dependency 'sprockets-rails', '>= 2.0.1'
|
|
18
|
+
s.add_development_dependency 'jquery-rails', '>= 3.1.0'
|
|
23
19
|
s.add_development_dependency 'slim-rails'
|
|
24
20
|
s.add_development_dependency 'uglifier'
|
|
21
|
+
# Compass dummy app
|
|
22
|
+
s.add_development_dependency 'compass'
|
|
23
|
+
# Integration testing
|
|
24
|
+
s.add_development_dependency 'capybara'
|
|
25
|
+
s.add_development_dependency 'poltergeist'
|
|
26
|
+
# Converter
|
|
27
|
+
s.add_development_dependency 'term-ansicolor'
|
|
25
28
|
|
|
26
29
|
s.files = `git ls-files`.split("\n")
|
|
27
30
|
s.test_files = `git ls-files -- test/*`.split("\n")
|
data/bower.json
CHANGED
|
@@ -9,7 +9,96 @@
|
|
|
9
9
|
"Gleb Mazovetskiy"
|
|
10
10
|
],
|
|
11
11
|
"description": "bootstrap-sass is a Sass-powered version of Bootstrap, ready to drop right into your Sass powered applications.",
|
|
12
|
-
"main": [
|
|
12
|
+
"main": [
|
|
13
|
+
"vendor/assets/stylesheets/_bootstrap-mincer.scss",
|
|
14
|
+
"vendor/assets/stylesheets/bootstrap/_alerts.scss",
|
|
15
|
+
"vendor/assets/stylesheets/bootstrap/_badges.scss",
|
|
16
|
+
"vendor/assets/stylesheets/bootstrap/_breadcrumbs.scss",
|
|
17
|
+
"vendor/assets/stylesheets/bootstrap/_button-groups.scss",
|
|
18
|
+
"vendor/assets/stylesheets/bootstrap/_buttons.scss",
|
|
19
|
+
"vendor/assets/stylesheets/bootstrap/_carousel.scss",
|
|
20
|
+
"vendor/assets/stylesheets/bootstrap/_close.scss",
|
|
21
|
+
"vendor/assets/stylesheets/bootstrap/_code.scss",
|
|
22
|
+
"vendor/assets/stylesheets/bootstrap/_component-animations.scss",
|
|
23
|
+
"vendor/assets/stylesheets/bootstrap/_dropdowns.scss",
|
|
24
|
+
"vendor/assets/stylesheets/bootstrap/_forms.scss",
|
|
25
|
+
"vendor/assets/stylesheets/bootstrap/_glyphicons.scss",
|
|
26
|
+
"vendor/assets/stylesheets/bootstrap/_grid.scss",
|
|
27
|
+
"vendor/assets/stylesheets/bootstrap/_input-groups.scss",
|
|
28
|
+
"vendor/assets/stylesheets/bootstrap/_jumbotron.scss",
|
|
29
|
+
"vendor/assets/stylesheets/bootstrap/_labels.scss",
|
|
30
|
+
"vendor/assets/stylesheets/bootstrap/_list-group.scss",
|
|
31
|
+
"vendor/assets/stylesheets/bootstrap/_media.scss",
|
|
32
|
+
"vendor/assets/stylesheets/bootstrap/_mixins.scss",
|
|
33
|
+
"vendor/assets/stylesheets/bootstrap/_modals.scss",
|
|
34
|
+
"vendor/assets/stylesheets/bootstrap/_navbar.scss",
|
|
35
|
+
"vendor/assets/stylesheets/bootstrap/_navs.scss",
|
|
36
|
+
"vendor/assets/stylesheets/bootstrap/_normalize.scss",
|
|
37
|
+
"vendor/assets/stylesheets/bootstrap/_pager.scss",
|
|
38
|
+
"vendor/assets/stylesheets/bootstrap/_pagination.scss",
|
|
39
|
+
"vendor/assets/stylesheets/bootstrap/_panels.scss",
|
|
40
|
+
"vendor/assets/stylesheets/bootstrap/_popovers.scss",
|
|
41
|
+
"vendor/assets/stylesheets/bootstrap/_print.scss",
|
|
42
|
+
"vendor/assets/stylesheets/bootstrap/_progress-bars.scss",
|
|
43
|
+
"vendor/assets/stylesheets/bootstrap/_responsive-embed.scss",
|
|
44
|
+
"vendor/assets/stylesheets/bootstrap/_responsive-utilities.scss",
|
|
45
|
+
"vendor/assets/stylesheets/bootstrap/_scaffolding.scss",
|
|
46
|
+
"vendor/assets/stylesheets/bootstrap/_tables.scss",
|
|
47
|
+
"vendor/assets/stylesheets/bootstrap/_theme.scss",
|
|
48
|
+
"vendor/assets/stylesheets/bootstrap/_thumbnails.scss",
|
|
49
|
+
"vendor/assets/stylesheets/bootstrap/_tooltip.scss",
|
|
50
|
+
"vendor/assets/stylesheets/bootstrap/_type.scss",
|
|
51
|
+
"vendor/assets/stylesheets/bootstrap/_utilities.scss",
|
|
52
|
+
"vendor/assets/stylesheets/bootstrap/_variables.scss",
|
|
53
|
+
"vendor/assets/stylesheets/bootstrap/_wells.scss",
|
|
54
|
+
"vendor/assets/stylesheets/bootstrap/bootstrap.scss",
|
|
55
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_alerts.scss",
|
|
56
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_background-variant.scss",
|
|
57
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_border-radius.scss",
|
|
58
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_buttons.scss",
|
|
59
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_center-block.scss",
|
|
60
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_clearfix.scss",
|
|
61
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_forms.scss",
|
|
62
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_gradients.scss",
|
|
63
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_grid-framework.scss",
|
|
64
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_grid.scss",
|
|
65
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_hide-text.scss",
|
|
66
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_image.scss",
|
|
67
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_labels.scss",
|
|
68
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_list-group.scss",
|
|
69
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_nav-divider.scss",
|
|
70
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss",
|
|
71
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_opacity.scss",
|
|
72
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_pagination.scss",
|
|
73
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_panels.scss",
|
|
74
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_progress-bar.scss",
|
|
75
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_reset-filter.scss",
|
|
76
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_resize.scss",
|
|
77
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss",
|
|
78
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_size.scss",
|
|
79
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_tab-focus.scss",
|
|
80
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_table-row.scss",
|
|
81
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss",
|
|
82
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_text-overflow.scss",
|
|
83
|
+
"vendor/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss",
|
|
84
|
+
"vendor/assets/stylesheets/bootstrap.scss",
|
|
85
|
+
"vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.eot",
|
|
86
|
+
"vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.svg",
|
|
87
|
+
"vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf",
|
|
88
|
+
"vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.woff",
|
|
89
|
+
"vendor/assets/javascripts/bootstrap/affix.js",
|
|
90
|
+
"vendor/assets/javascripts/bootstrap/alert.js",
|
|
91
|
+
"vendor/assets/javascripts/bootstrap/button.js",
|
|
92
|
+
"vendor/assets/javascripts/bootstrap/carousel.js",
|
|
93
|
+
"vendor/assets/javascripts/bootstrap/collapse.js",
|
|
94
|
+
"vendor/assets/javascripts/bootstrap/dropdown.js",
|
|
95
|
+
"vendor/assets/javascripts/bootstrap/tab.js",
|
|
96
|
+
"vendor/assets/javascripts/bootstrap/transition.js",
|
|
97
|
+
"vendor/assets/javascripts/bootstrap/scrollspy.js",
|
|
98
|
+
"vendor/assets/javascripts/bootstrap/modal.js",
|
|
99
|
+
"vendor/assets/javascripts/bootstrap/tooltip.js",
|
|
100
|
+
"vendor/assets/javascripts/bootstrap/popover.js"
|
|
101
|
+
],
|
|
13
102
|
"keywords": [
|
|
14
103
|
"twbs",
|
|
15
104
|
"bootstrap",
|
|
@@ -17,6 +106,13 @@
|
|
|
17
106
|
],
|
|
18
107
|
"license": "MIT",
|
|
19
108
|
"ignore": [
|
|
20
|
-
"**/.*",
|
|
109
|
+
"**/.*",
|
|
110
|
+
"lib",
|
|
111
|
+
"tasks",
|
|
112
|
+
"templates",
|
|
113
|
+
"test",
|
|
114
|
+
"*.gemspec",
|
|
115
|
+
"Rakefile",
|
|
116
|
+
"Gemfile"
|
|
21
117
|
]
|
|
22
118
|
}
|
data/lib/bootstrap-sass.rb
CHANGED
data/package.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "bootstrap-sass",
|
|
3
|
+
"version": "3.1.1",
|
|
4
|
+
"description": "bootstrap-sass is a Sass-powered version of Bootstrap, ready to drop right into your Sass powered applications.",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git://github.com/twbs/bootstrap-sass"
|
|
9
|
+
},
|
|
10
|
+
"keywords": [
|
|
11
|
+
"bootstrap",
|
|
12
|
+
"sass",
|
|
13
|
+
"css"
|
|
14
|
+
],
|
|
15
|
+
"contributors": [
|
|
16
|
+
"Thomas McDonald",
|
|
17
|
+
"Tristan Harward",
|
|
18
|
+
"Peter Gumeson",
|
|
19
|
+
"Gleb Mazovetskiy"
|
|
20
|
+
],
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"bugs": {
|
|
23
|
+
"url": "https://github.com/twbs/bootstrap-sass/issues"
|
|
24
|
+
}
|
|
25
|
+
}
|
data/tasks/bower.rake
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require 'find'
|
|
2
|
+
require 'bootstrap-sass'
|
|
3
|
+
require 'json'
|
|
4
|
+
require 'pathname'
|
|
5
|
+
|
|
6
|
+
namespace :bower do
|
|
7
|
+
|
|
8
|
+
find_files = ->(path) {
|
|
9
|
+
Find.find(Pathname.new(path).relative_path_from(Pathname.new Dir.pwd).to_s).map do |path|
|
|
10
|
+
path if File.file?(path)
|
|
11
|
+
end.compact
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
desc 'update main and version in bower.json'
|
|
15
|
+
task :spec do
|
|
16
|
+
Dir.chdir Bootstrap.gem_path do
|
|
17
|
+
spec = JSON.parse(File.read 'bower.json')
|
|
18
|
+
js_paths = File.read(File.join Bootstrap.javascripts_path, 'bootstrap.js').lines.map do |line|
|
|
19
|
+
line.strip if line.sub!(%r(//\s*=\s*require\s*(.*)\s*), 'vendor/assets/javascripts/\1.js')
|
|
20
|
+
end.compact
|
|
21
|
+
|
|
22
|
+
spec['main'] = find_files.(Bootstrap.stylesheets_path) +
|
|
23
|
+
find_files.(Bootstrap.fonts_path) +
|
|
24
|
+
js_paths
|
|
25
|
+
|
|
26
|
+
spec['version'] = Bootstrap::VERSION[0..-3]
|
|
27
|
+
|
|
28
|
+
File.open('bower.json', 'w') do |f|
|
|
29
|
+
f.puts JSON.pretty_generate(spec)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
data/tasks/converter.rb
CHANGED
|
@@ -59,13 +59,15 @@ class Converter
|
|
|
59
59
|
|
|
60
60
|
@save_to.each { |_, v| FileUtils.mkdir_p(v) }
|
|
61
61
|
|
|
62
|
+
process_font_assets
|
|
62
63
|
process_stylesheet_assets
|
|
63
64
|
process_javascript_assets
|
|
64
|
-
process_font_assets
|
|
65
65
|
store_version
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
def save_file(path, content, mode='w')
|
|
69
|
+
dir = File.dirname(path)
|
|
70
|
+
FileUtils.mkdir_p(dir) unless File.directory?(dir)
|
|
69
71
|
File.open(path, mode) { |file| file.write(content) }
|
|
70
72
|
end
|
|
71
73
|
|
|
@@ -26,12 +26,12 @@ class Converter
|
|
|
26
26
|
SCSS_MIXIN_DEF_ARGS_RE = /[\w\-,\s$:#%()]*/
|
|
27
27
|
LESS_MIXIN_DEF_ARGS_RE = /[\w\-,;.\s@:#%()]*/
|
|
28
28
|
|
|
29
|
-
# These mixins
|
|
29
|
+
# These mixins will get vararg definitions in SCSS (not supported by LESS):
|
|
30
30
|
NESTED_MIXINS = {'#gradient' => 'gradient'}
|
|
31
31
|
|
|
32
32
|
# These mixins will get vararg definitions in SCSS (not supported by LESS):
|
|
33
33
|
VARARG_MIXINS = %w(
|
|
34
|
-
transition transition-duration transition-property transition-transform box-shadow
|
|
34
|
+
scale transition transition-duration transition-property transition-transform box-shadow
|
|
35
35
|
)
|
|
36
36
|
|
|
37
37
|
# Convert a snippet of bootstrap LESS to Scss
|
|
@@ -45,7 +45,7 @@ class Converter
|
|
|
45
45
|
def load_shared
|
|
46
46
|
@shared_mixins ||= begin
|
|
47
47
|
log_status ' Reading shared mixins from mixins.less'
|
|
48
|
-
read_mixins read_files('less',
|
|
48
|
+
read_mixins read_files('less', bootstrap_less_files.grep(/mixins\//)).values.join("\n"), nested: NESTED_MIXINS
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
|
|
@@ -59,27 +59,31 @@ class Converter
|
|
|
59
59
|
log_processing name
|
|
60
60
|
# apply common conversions
|
|
61
61
|
file = convert_less(file)
|
|
62
|
+
if name.start_with?('mixins/')
|
|
63
|
+
file = varargify_mixin_definitions(file, *VARARG_MIXINS)
|
|
64
|
+
%w(responsive-(in)?visibility input-size text-emphasis-variant bg-variant).each do |mixin|
|
|
65
|
+
file = parameterize_mixin_parent_selector file, mixin if file =~ /#{mixin}/
|
|
66
|
+
end
|
|
67
|
+
NESTED_MIXINS.each do |sel, name|
|
|
68
|
+
file = flatten_mixins(file, sel, name) if /#{Regexp.escape(sel)}/ =~ file
|
|
69
|
+
end
|
|
70
|
+
file = replace_all file, /(?<=[.-])\$state/, '#{$state}' if file =~ /[.-]\$state/
|
|
71
|
+
end
|
|
62
72
|
case name
|
|
63
|
-
when 'mixins.less'
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
end
|
|
67
|
-
file = varargify_mixin_definitions(file, *VARARG_MIXINS)
|
|
68
|
-
file = deinterpolate_vararg_mixins(file)
|
|
69
|
-
%w(responsive-(in)?visibility input-size text-emphasis-variant bg-variant).each do |mixin|
|
|
70
|
-
file = parameterize_mixin_parent_selector file, mixin
|
|
71
|
-
end
|
|
72
|
-
file = replace_ms_filters(file)
|
|
73
|
-
file = replace_all file, /(?<=[.-])\$state/, '#{$state}'
|
|
73
|
+
when 'mixins/buttons.less'
|
|
74
|
+
file = replace_all file, /(\.dropdown-toggle)&/, '&\1'
|
|
75
|
+
when 'mixins/list-group.less'
|
|
74
76
|
file = replace_rules(file, ' .list-group-item-') { |rule| extract_nested_rule rule, 'a&' }
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
#
|
|
80
|
-
file =
|
|
81
|
-
|
|
77
|
+
when 'mixins/gradients.less'
|
|
78
|
+
file = replace_ms_filters(file)
|
|
79
|
+
file = deinterpolate_vararg_mixins(file)
|
|
80
|
+
when 'mixins/vendor-prefixes.less'
|
|
81
|
+
# remove second scale mixins as this is handled via vararg in the first one
|
|
82
|
+
file = replace_rules(file, '.scale(@ratioX; @ratioY)') {}
|
|
83
|
+
when 'mixins/grid-framework.less'
|
|
82
84
|
file = convert_grid_mixins file
|
|
85
|
+
when 'component-animations.less'
|
|
86
|
+
file = extract_nested_rule file, "#{SELECTOR_RE}&\\.in"
|
|
83
87
|
when 'responsive-utilities.less'
|
|
84
88
|
file = apply_mixin_parent_selector file, '\.(?:visible|hidden)'
|
|
85
89
|
when 'variables.less'
|
|
@@ -104,9 +108,10 @@ class Converter
|
|
|
104
108
|
file = replace_all file, /(\s*)\.navbar-(right|left)\s*\{\s*@extend\s*\.pull-(right|left);\s*/, "\\1.navbar-\\2 {\\1 float: \\2 !important;\\1"
|
|
105
109
|
when 'tables.less'
|
|
106
110
|
file = replace_all file, /(@include\s*table-row-variant\()(\w+)/, "\\1'\\2'"
|
|
107
|
-
when 'thumbnails.less'
|
|
111
|
+
when 'thumbnails.less', 'labels.less', 'badges.less'
|
|
108
112
|
file = extract_nested_rule file, 'a&'
|
|
109
113
|
when 'glyphicons.less'
|
|
114
|
+
file = bootstrap_font_files.map { |p| %Q(//= depend_on_asset "bootstrap/#{File.basename(p)}") } * "\n" + "\n" + file
|
|
110
115
|
file = replace_all file, /\#\{(url\(.*?\))}/, '\1'
|
|
111
116
|
file = replace_rules(file, '@font-face') { |rule|
|
|
112
117
|
rule = replace_all rule, /(\$icon-font(?:-\w+)+)/, '#{\1}'
|
|
@@ -119,7 +124,10 @@ class Converter
|
|
|
119
124
|
end
|
|
120
125
|
|
|
121
126
|
name = name.sub(/\.less$/, '.scss')
|
|
122
|
-
path =
|
|
127
|
+
path = File.join save_to, name
|
|
128
|
+
unless name == 'bootstrap.scss'
|
|
129
|
+
path = File.join File.dirname(path), '_' + File.basename(path)
|
|
130
|
+
end
|
|
123
131
|
save_file(path, file)
|
|
124
132
|
log_processed File.basename(path)
|
|
125
133
|
end
|
|
@@ -130,7 +138,9 @@ class Converter
|
|
|
130
138
|
end
|
|
131
139
|
|
|
132
140
|
def bootstrap_less_files
|
|
133
|
-
@bootstrap_less_files ||= get_paths_by_type('less', /\.less$/)
|
|
141
|
+
@bootstrap_less_files ||= get_paths_by_type('less', /\.less$/) +
|
|
142
|
+
get_paths_by_type('mixins', /\.less$/,
|
|
143
|
+
get_tree(get_tree_sha('mixins', get_tree(get_tree_sha('less'))))).map { |p| "mixins/#{p}" }
|
|
134
144
|
end
|
|
135
145
|
|
|
136
146
|
# apply general less to scss conversion
|
|
@@ -138,15 +148,16 @@ class Converter
|
|
|
138
148
|
# get local mixin names before converting the definitions
|
|
139
149
|
mixins = @shared_mixins + read_mixins(file)
|
|
140
150
|
file = replace_vars(file)
|
|
141
|
-
file = replace_file_imports(file)
|
|
142
151
|
file = replace_mixin_definitions(file)
|
|
143
152
|
file = replace_mixins(file, mixins)
|
|
144
153
|
file = replace_spin(file)
|
|
154
|
+
file = replace_fadein(file)
|
|
145
155
|
file = replace_image_urls(file)
|
|
146
156
|
file = replace_escaping(file)
|
|
147
157
|
file = convert_less_ampersand(file)
|
|
148
158
|
file = deinterpolate_vararg_mixins(file)
|
|
149
159
|
file = replace_calculation_semantics(file)
|
|
160
|
+
file = replace_file_imports(file)
|
|
150
161
|
file
|
|
151
162
|
end
|
|
152
163
|
|
|
@@ -183,7 +194,7 @@ SASS
|
|
|
183
194
|
mixin_all_grid_columns css, selector: '.col-#{$class}-#{$i}', to: '$grid-columns'
|
|
184
195
|
end
|
|
185
196
|
file = replace_rules file, /@mixin calc-grid-column/ do |css|
|
|
186
|
-
css = indent css.gsub(/.*when (.*?) {/, '@if \1 {').gsub(/(
|
|
197
|
+
css = indent css.gsub(/.*when (.*?) {/, '@if \1 {').gsub(/(\$[\w-]+)\s+=\s+(\w+)/, '\1 == \2').gsub(/(?<=-)(\$[a-z]+)/, '#{\1}')
|
|
187
198
|
if css =~ /== width/
|
|
188
199
|
css = "@mixin calc-grid-column($index, $class, $type) {\n#{css}"
|
|
189
200
|
elsif css =~ /== offset/
|
|
@@ -279,7 +290,7 @@ SASS
|
|
|
279
290
|
|
|
280
291
|
# @import "file.less" to "#{target_path}file;"
|
|
281
292
|
def replace_file_imports(less, target_path = '')
|
|
282
|
-
less.gsub %r([@\$]import ["|']([\w
|
|
293
|
+
less.gsub %r([@\$]import ["|']([\w\-/]+).less["|'];),
|
|
283
294
|
%Q(@import "#{target_path}\\1";)
|
|
284
295
|
end
|
|
285
296
|
|
|
@@ -320,15 +331,15 @@ SASS
|
|
|
320
331
|
matches = []
|
|
321
332
|
# first find the rules, and remove them
|
|
322
333
|
file = replace_rules(file, "\s*#{selector}", comments: true) { |rule, pos, css|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
indent "// [converter] extracted #{get_selector(rule)} to #{
|
|
334
|
+
new_sel = new_selector || "#{get_selector(rule).gsub(/&/, selector_for_pos(css, pos.begin))}"
|
|
335
|
+
matches << [rule, pos, new_sel]
|
|
336
|
+
indent "// [converter] extracted #{get_selector(rule)} to #{new_sel}".tr("\n", ' ').squeeze(' '), indent_width(rule)
|
|
326
337
|
}
|
|
327
338
|
raise "extract_nested_rule: no such selector: #{selector}" if matches.empty?
|
|
328
|
-
log_transform selector, new_selector
|
|
329
339
|
# replace rule selector with new_selector
|
|
330
340
|
matches.each do |m|
|
|
331
|
-
m[0].sub! /(#{COMMENT_RE}*)^(\s*).*?(\s*){/m, "\\1\\2#{
|
|
341
|
+
m[0].sub! /(#{COMMENT_RE}*)^(\s*).*?(\s*){/m, "\\1\\2#{m[2]}\\3{"
|
|
342
|
+
log_transform selector, m[2]
|
|
332
343
|
end
|
|
333
344
|
replace_substrings_at file,
|
|
334
345
|
matches.map { |_, pos| close_brace_pos(file, pos.begin, 1) + 1 },
|
|
@@ -440,6 +451,10 @@ SASS
|
|
|
440
451
|
less.gsub(/(?![\-$@.])spin(?!-)/, 'adjust-hue')
|
|
441
452
|
end
|
|
442
453
|
|
|
454
|
+
def replace_fadein(less)
|
|
455
|
+
less.gsub(/(?![\-$@.])fadein\((.*?),\s*(.*?)%\)/) { "rgba(#{$1}, #{$2.to_i / 100.0})" }
|
|
456
|
+
end
|
|
457
|
+
|
|
443
458
|
def replace_image_urls(less)
|
|
444
459
|
less.gsub(/background-image: url\("?(.*?)"?\);/) { |s| replace_asset_url s, :image }
|
|
445
460
|
end
|
|
@@ -488,11 +503,14 @@ SASS
|
|
|
488
503
|
# to:
|
|
489
504
|
# @mixin transition($transition...) {
|
|
490
505
|
def varargify_mixin_definitions(scss, *mixins)
|
|
491
|
-
log_transform *mixins
|
|
492
506
|
scss = scss.dup
|
|
507
|
+
replaced = []
|
|
493
508
|
mixins.each do |mixin|
|
|
494
|
-
scss.gsub! /(@mixin\s*#{Regexp.quote(mixin)})\((#{SCSS_MIXIN_DEF_ARGS_RE})\)/, '\1(\2...)'
|
|
509
|
+
if scss.gsub! /(@mixin\s*#{Regexp.quote(mixin)})\((#{SCSS_MIXIN_DEF_ARGS_RE})\)/, '\1(\2...)'
|
|
510
|
+
replaced << mixin
|
|
511
|
+
end
|
|
495
512
|
end
|
|
513
|
+
log_transform *replaced unless replaced.empty?
|
|
496
514
|
scss
|
|
497
515
|
end
|
|
498
516
|
|
|
@@ -511,7 +529,8 @@ SASS
|
|
|
511
529
|
|
|
512
530
|
# get full selector for rule_block
|
|
513
531
|
def get_selector(rule_block)
|
|
514
|
-
/^\s*(#{SELECTOR_RE}?)\s*\{/.match(rule_block) && $1 && $1.strip
|
|
532
|
+
sel = /^\s*(#{SELECTOR_RE}?)\s*\{/.match(rule_block) && $1 && $1.strip
|
|
533
|
+
sel.sub /\s*\{\n\s.*/m, ''
|
|
515
534
|
end
|
|
516
535
|
|
|
517
536
|
# replace CSS rule blocks matching rule_prefix with yield(rule_block, rule_pos)
|