autoprefixer-rails 0.1.20130409 → 0.2.20130413

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,2 +1,6 @@
1
+ == 0.2 (Hear Me Roar!)
2
+ * Update parse libraries.
3
+ * Add inspect method and rake tast.
4
+
1
5
  == 0.1 (Fire and Blood)
2
6
  * Initial release.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- autoprefixer-rails (0.1.20130409)
4
+ autoprefixer-rails (0.2.20130413)
5
5
  execjs
6
6
 
7
7
  GEM
@@ -36,7 +36,7 @@ GEM
36
36
  multi_json (~> 1.0)
37
37
  arel (3.0.2)
38
38
  builder (3.0.4)
39
- diff-lcs (1.2.2)
39
+ diff-lcs (1.2.3)
40
40
  erubis (2.7.0)
41
41
  execjs (1.4.0)
42
42
  multi_json (~> 1.0)
@@ -98,7 +98,7 @@ GEM
98
98
  libv8 (~> 3.11.8.12)
99
99
  ref
100
100
  thor (0.18.1)
101
- tilt (1.3.6)
101
+ tilt (1.3.7)
102
102
  treetop (1.4.12)
103
103
  polyglot
104
104
  polyglot (>= 0.3.1)
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Autoprefixer Rails
2
2
 
3
- Parse CSS and add prefixed properties and values when it really necessary
4
- for selected browsers.
3
+ Parse CSS and add prefixed properties and values by
4
+ [Can I Use](http://caniuse.com/) database for actual browsers.
5
5
 
6
6
  This gem provides Ruby and Ruby on Rails integration with
7
7
  [Autoprefixer](https://github.com/ai/autoprefixer) JS library.
@@ -15,9 +15,8 @@ a {
15
15
  }
16
16
  ```
17
17
 
18
- Autoprefixer will see in own database (from [Can I Use](http://caniuse.com/))
19
- with current browser statistics and properties support and adds only
20
- actual prefixes by Assets Pipeline:
18
+ Autoprefixer will take database with current browser statistics
19
+ and properties support and adds only actual prefixes by Assets Pipeline:
21
20
 
22
21
  ```css
23
22
  a {
@@ -5,11 +5,9 @@ Gem::Specification.new do |s|
5
5
  s.name = 'autoprefixer-rails'
6
6
  s.version = AutoprefixerRails::VERSION.dup
7
7
  s.date = Time.now.strftime('%Y-%m-%d')
8
- s.summary = 'Parse CSS and add only actual prefixed'
9
- s.description = <<-EOF
10
- Parse CSS and add prefixed properties and values
11
- when it really necessary for selected browsers.
12
- EOF
8
+ s.summary = 'Parse CSS and add only actual prefixed by Can I Use database'
9
+ s.description = 'Parse CSS and add prefixed properties and values ' +
10
+ 'by Can I Use database for actual browsers'
13
11
 
14
12
  s.files = `git ls-files`.split("\n")
15
13
  s.test_files = `git ls-files -- {spec}/*`.split("\n")
@@ -50,6 +50,11 @@ module AutoprefixerRails
50
50
  def self.compiler
51
51
  @compiler ||= ExecJS.compile("window = this;\n" + js_file.read)
52
52
  end
53
+
54
+ # Return string with selected browsers and prefixed CSS properties and values
55
+ def self.inspect(browsers = [])
56
+ compiler.call('autoprefixer.inspect', browsers)
57
+ end
53
58
  end
54
59
 
55
60
  if defined?(Rails)
@@ -20,11 +20,21 @@ require 'sprockets/railtie'
20
20
 
21
21
  module AutoprefixedRails
22
22
  class Railtie < ::Rails::Railtie
23
+ rake_tasks do |app|
24
+ require 'rake/autoprefixer_tasks'
25
+ Rake::AutoprefixerTasks.new(browsers(app))
26
+ end
27
+
23
28
  initializer :setup_autoprefixer do |app|
29
+ dirs = [app.root.join('app/'), app.root.join('lib/')]
30
+ AutoprefixerRails.install(app.assets, browsers(app), :dirs => dirs)
31
+ end
32
+
33
+ # Read browsers requirements from application config
34
+ def browsers(app)
24
35
  file = app.root.join('config/autoprefixer.yml')
25
36
  config = file.exist? ? YAML.load_file(file) : { 'browsers' => [] }
26
- dirs = [app.root.join('app/'), app.root.join('lib/')]
27
- AutoprefixerRails.install(app.assets, config['browsers'], :dirs => dirs)
37
+ config['browsers']
28
38
  end
29
39
  end
30
40
  end
@@ -1,3 +1,3 @@
1
1
  module AutoprefixerRails
2
- VERSION = '0.1.20130409'.freeze unless defined? AutoprefixerRails::VERSION
2
+ VERSION = '0.2.20130413'.freeze unless defined? AutoprefixerRails::VERSION
3
3
  end
@@ -0,0 +1,45 @@
1
+ =begin
2
+ Copyright 2013 Andrey “A.I.” Sitnik <andrey@sitnik.ru>,
3
+ sponsored by Evil Martians.
4
+
5
+ This program is free software: you can redistribute it and/or modify
6
+ it under the terms of the GNU Lesser General Public License as published by
7
+ the Free Software Foundation, either version 3 of the License, or
8
+ (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU Lesser General Public License for more details.
14
+
15
+ You should have received a copy of the GNU Lesser General Public License
16
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ =end
18
+
19
+ require 'rake'
20
+ require 'rake/tasklib'
21
+ require 'autoprefixer-rails'
22
+
23
+ module Rake
24
+ # Define task to inspect Autoprefixer browsers, properties and values.
25
+ # Call it from your `Rakefile`:
26
+ #
27
+ # AutoprefixerTasks.new(['> 1%', 'opera 12'])
28
+ class AutoprefixerTasks < Rake::TaskLib
29
+ attr_reader :browsers
30
+
31
+ def initialize(browsers = [])
32
+ @browsers = browsers
33
+ define
34
+ end
35
+
36
+ def define
37
+ namespace :autoprefixer do
38
+ desc 'Show selected browsers and prefixed CSS properties and values'
39
+ task :inspect do
40
+ puts AutoprefixerRails.inspect(@browsers)
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
data/spec/app/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require File.expand_path('../config/application', __FILE__)
2
+ App::Application.load_tasks
@@ -27,4 +27,10 @@ describe AutoprefixerRails do
27
27
  assets['app/assets/stylesheets/test.css'].to_s.should ==
28
28
  "a { transition: all 1s }\n"
29
29
  end
30
+
31
+ it "should inspect" do
32
+ inspect = AutoprefixerRails.inspect(['chrome 25'])
33
+ inspect.should =~ /Browsers:\n Chrome 25\n\n/
34
+ inspect.should =~ / transition: webkit/
35
+ end
30
36
  end
data/spec/rails_spec.rb CHANGED
@@ -13,3 +13,11 @@ describe CssController, :type => :controller do
13
13
  response.body.should == ".f { transition: none }\n"
14
14
  end
15
15
  end
16
+
17
+ describe 'Rake task' do
18
+ it "should inspect" do
19
+ inspect = `cd spec/app; bundle exec rake autoprefixer:inspect`
20
+ inspect.should =~ /Browsers:\n Chrome 25\n\n/
21
+ inspect.should =~ / transition: webkit/
22
+ end
23
+ end
@@ -1,30 +1,4 @@
1
- /*
2
- * Copyright 2013 Andrey Sitnik <andrey@sitnik.ru>,
3
- * sponsored by Evil Martians.
4
- *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU Lesser General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- * GNU Lesser General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public License
16
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
-
19
- ;(function(){
20
-
21
-
22
- /**
23
- * hasOwnProperty.
24
- */
25
-
26
- var has = Object.prototype.hasOwnProperty;
27
-
1
+ ;(function () {
28
2
  /**
29
3
  * Require the given path.
30
4
  *
@@ -101,10 +75,10 @@ require.resolve = function(path) {
101
75
 
102
76
  for (var i = 0; i < paths.length; i++) {
103
77
  var path = paths[i];
104
- if (has.call(require.modules, path)) return path;
78
+ if (require.modules.hasOwnProperty(path)) return path;
105
79
  }
106
80
 
107
- if (has.call(require.aliases, index)) {
81
+ if (require.aliases.hasOwnProperty(index)) {
108
82
  return require.aliases[index];
109
83
  }
110
84
  };
@@ -158,7 +132,7 @@ require.register = function(path, definition) {
158
132
  */
159
133
 
160
134
  require.alias = function(from, to) {
161
- if (!has.call(require.modules, from)) {
135
+ if (!require.modules.hasOwnProperty(from)) {
162
136
  throw new Error('Failed to alias "' + from + '", it does not exist');
163
137
  }
164
138
  require.aliases[to] = from;
@@ -220,7 +194,7 @@ require.relative = function(parent) {
220
194
  */
221
195
 
222
196
  localRequire.exists = function(path) {
223
- return has.call(require.modules, localRequire.resolve(path));
197
+ return require.modules.hasOwnProperty(localRequire.resolve(path));
224
198
  };
225
199
 
226
200
  return localRequire;
@@ -261,10 +235,10 @@ module.exports = function(css){
261
235
  var node;
262
236
  var rules = [];
263
237
  whitespace();
264
- comments();
238
+ comments(rules);
265
239
  while (css[0] != '}' && (node = atrule() || rule())) {
266
- comments();
267
240
  rules.push(node);
241
+ comments(rules);
268
242
  }
269
243
  return rules;
270
244
  }
@@ -292,8 +266,11 @@ module.exports = function(css){
292
266
  * Parse comments;
293
267
  */
294
268
 
295
- function comments() {
296
- while (comment()) ;
269
+ function comments(rules) {
270
+ rules = rules || [];
271
+ var c;
272
+ while (c = comment()) rules.push(c);
273
+ return rules;
297
274
  }
298
275
 
299
276
  /**
@@ -305,9 +282,10 @@ module.exports = function(css){
305
282
  var i = 2;
306
283
  while ('*' != css[i] || '/' != css[i + 1]) ++i;
307
284
  i += 2;
285
+ var comment = css.slice(2, i - 2);
308
286
  css = css.slice(i);
309
287
  whitespace();
310
- return true;
288
+ return { comment: comment };
311
289
  }
312
290
  }
313
291
 
@@ -399,6 +377,25 @@ module.exports = function(css){
399
377
  };
400
378
  }
401
379
 
380
+ /**
381
+ * Parse supports.
382
+ */
383
+
384
+ function supports() {
385
+ var m = match(/^@supports *([^{]+)/);
386
+ if (!m) return;
387
+ var supports = m[1].trim();
388
+
389
+ if (!open()) return;
390
+ comments();
391
+
392
+ var style = rules();
393
+
394
+ if (!close()) return;
395
+
396
+ return { supports: supports, rules: style };
397
+ }
398
+
402
399
  /**
403
400
  * Parse media.
404
401
  */
@@ -418,6 +415,51 @@ module.exports = function(css){
418
415
  return { media: media, rules: style };
419
416
  }
420
417
 
418
+ /**
419
+ * Parse paged media.
420
+ */
421
+
422
+ function atpage() {
423
+ var m = match(/^@page */);
424
+ if (!m) return;
425
+
426
+ var sel = selector() || [];
427
+ var decls = [];
428
+
429
+ if (!open()) return;
430
+ comments();
431
+
432
+ // declarations
433
+ var decl;
434
+ while (decl = declaration() || atmargin()) {
435
+ decls.push(decl);
436
+ comments();
437
+ }
438
+
439
+ if (!close()) return;
440
+
441
+ return {
442
+ type: "page",
443
+ selectors: sel,
444
+ declarations: decls
445
+ };
446
+ }
447
+
448
+ /**
449
+ * Parse margin at-rules
450
+ */
451
+
452
+ function atmargin() {
453
+ var m = match(/^@([a-z\-]+) */);
454
+ if (!m) return;
455
+ var type = m[1]
456
+
457
+ return {
458
+ type: type,
459
+ declarations: declarations()
460
+ }
461
+ }
462
+
421
463
  /**
422
464
  * Parse import
423
465
  */
@@ -434,6 +476,14 @@ module.exports = function(css){
434
476
  return _atrule('charset');
435
477
  }
436
478
 
479
+ /**
480
+ * Parse namespace
481
+ */
482
+
483
+ function atnamespace() {
484
+ return _atrule('namespace')
485
+ }
486
+
437
487
  /**
438
488
  * Parse non-block at-rules
439
489
  */
@@ -474,8 +524,11 @@ module.exports = function(css){
474
524
  function atrule() {
475
525
  return keyframes()
476
526
  || media()
527
+ || supports()
477
528
  || atimport()
478
- || atcharset();
529
+ || atcharset()
530
+ || atnamespace()
531
+ || atpage();
479
532
  }
480
533
 
481
534
  /**
@@ -532,6 +585,7 @@ Compiler.prototype.compile = function(node){
532
585
  */
533
586
 
534
587
  Compiler.prototype.visit = function(node){
588
+ if (node.comment) return this.comment(node);
535
589
  if (node.charset) return this.charset(node);
536
590
  if (node.keyframes) return this.keyframes(node);
537
591
  if (node.media) return this.media(node);
@@ -539,6 +593,15 @@ Compiler.prototype.visit = function(node){
539
593
  return this.rule(node);
540
594
  };
541
595
 
596
+ /**
597
+ * Visit comment node.
598
+ */
599
+
600
+ Compiler.prototype.comment = function(node){
601
+ if (this.compress) return '';
602
+ return '/*' + node.comment + '*/';
603
+ };
604
+
542
605
  /**
543
606
  * Visit import node.
544
607
  */
@@ -633,6 +696,8 @@ Compiler.prototype.keyframe = function(node){
633
696
  */
634
697
 
635
698
  Compiler.prototype.rule = function(node){
699
+ var indent = this.indent();
700
+
636
701
  if (this.compress) {
637
702
  return node.selectors.join(',')
638
703
  + '{'
@@ -640,7 +705,7 @@ Compiler.prototype.rule = function(node){
640
705
  + '}';
641
706
  }
642
707
 
643
- return this.indent() + node.selectors.join(',\n')
708
+ return node.selectors.map(function(s){ return indent + s }).join(',\n')
644
709
  + ' {\n'
645
710
  + this.indent(1)
646
711
  + node.declarations.map(this.declaration, this).join(';\n')
@@ -1106,7 +1171,7 @@ exports.basename = function(path){
1106
1171
  };
1107
1172
 
1108
1173
  exports.dirname = function(path){
1109
- return path.split('/').slice(0, -1).join('/') || '.';
1174
+ return path.split('/').slice(0, -1).join('/') || '.';
1110
1175
  };
1111
1176
 
1112
1177
  exports.extname = function(path){
@@ -1116,18 +1181,17 @@ exports.extname = function(path){
1116
1181
  return '.' + ext;
1117
1182
  };
1118
1183
  });
1119
- require.register("rework/index.js", function(exports, require, module){
1184
+ require.register("visionmedia-rework/index.js", function(exports, require, module){
1120
1185
 
1121
1186
  module.exports = require('./lib/rework');
1122
1187
  });
1123
- require.register("rework/lib/rework.js", function(exports, require, module){
1188
+ require.register("visionmedia-rework/lib/rework.js", function(exports, require, module){
1124
1189
 
1125
1190
  /**
1126
1191
  * Module dependencies.
1127
1192
  */
1128
1193
 
1129
- var css = require('css')
1130
- , visit = require('./visit');
1194
+ var css = require('css');
1131
1195
 
1132
1196
  /**
1133
1197
  * Expose `rework`.
@@ -1139,7 +1203,13 @@ exports = module.exports = rework;
1139
1203
  * Expose `visit` helpers.
1140
1204
  */
1141
1205
 
1142
- exports.visit = visit;
1206
+ exports.visit = require('./visit');
1207
+
1208
+ /**
1209
+ * Expose prefix properties.
1210
+ */
1211
+
1212
+ exports.properties = require('./properties');
1143
1213
 
1144
1214
  /**
1145
1215
  * Initialize a new stylesheet `Rework` with `str`.
@@ -1210,6 +1280,7 @@ Rework.prototype.toString = function(options){
1210
1280
 
1211
1281
  exports.media = require('./plugins/media');
1212
1282
  exports.mixin = exports.mixins = require('./plugins/mixin');
1283
+ exports.function = exports.functions = require('./plugins/function');
1213
1284
  exports.prefix = require('./plugins/prefix');
1214
1285
  exports.colors = require('./plugins/colors');
1215
1286
  exports.extend = require('./plugins/extend');
@@ -1222,9 +1293,10 @@ exports.at2x = require('./plugins/at2x');
1222
1293
  exports.url = require('./plugins/url');
1223
1294
  exports.ease = require('./plugins/ease');
1224
1295
  exports.vars = require('./plugins/vars');
1296
+ exports.inline = require('./plugins/inline');
1225
1297
 
1226
1298
  });
1227
- require.register("rework/lib/utils.js", function(exports, require, module){
1299
+ require.register("visionmedia-rework/lib/utils.js", function(exports, require, module){
1228
1300
 
1229
1301
  /**
1230
1302
  * Strip `str` quotes.
@@ -1239,7 +1311,7 @@ exports.stripQuotes = function(str) {
1239
1311
  return str;
1240
1312
  };
1241
1313
  });
1242
- require.register("rework/lib/visit.js", function(exports, require, module){
1314
+ require.register("visionmedia-rework/lib/visit.js", function(exports, require, module){
1243
1315
 
1244
1316
  /**
1245
1317
  * Visit `node`'s declarations recursively and
@@ -1274,14 +1346,147 @@ exports.declarations = function(node, fn){
1274
1346
  };
1275
1347
 
1276
1348
  });
1277
- require.register("rework/lib/plugins/url.js", function(exports, require, module){
1349
+ require.register("visionmedia-rework/lib/properties.js", function(exports, require, module){
1350
+
1351
+ /**
1352
+ * Prefixed properties.
1353
+ */
1354
+
1355
+ module.exports = [
1356
+ 'animation',
1357
+ 'animation-delay',
1358
+ 'animation-direction',
1359
+ 'animation-duration',
1360
+ 'animation-fill-mode',
1361
+ 'animation-iteration-count',
1362
+ 'animation-name',
1363
+ 'animation-play-state',
1364
+ 'animation-timing-function',
1365
+ 'appearance',
1366
+ 'background-visibility',
1367
+ 'background-composite',
1368
+ 'blend-mode',
1369
+ 'border-bottom-left-radius',
1370
+ 'border-bottom-right-radius',
1371
+ 'border-fit',
1372
+ 'border-image',
1373
+ 'border-vertical-spacing',
1374
+ 'box-align',
1375
+ 'box-direction',
1376
+ 'box-flex',
1377
+ 'box-flex-group',
1378
+ 'box-lines',
1379
+ 'box-ordinal-group',
1380
+ 'box-orient',
1381
+ 'box-pack',
1382
+ 'box-reflect',
1383
+ 'box-sizing',
1384
+ 'clip-path',
1385
+ 'column-count',
1386
+ 'column-width',
1387
+ 'column-min-width',
1388
+ 'column-width-policy',
1389
+ 'column-gap',
1390
+ 'column-rule',
1391
+ 'column-rule-color',
1392
+ 'column-rule-style',
1393
+ 'column-rule-width',
1394
+ 'column-span',
1395
+ 'flex',
1396
+ 'flex-basis',
1397
+ 'flex-direction',
1398
+ 'flex-flow',
1399
+ 'flex-grow',
1400
+ 'flex-shrink',
1401
+ 'flex-wrap',
1402
+ 'flex-flow-from',
1403
+ 'flex-flow-into',
1404
+ 'font-smoothing',
1405
+ 'transform',
1406
+ 'transform-origin',
1407
+ 'transform-origin-x',
1408
+ 'transform-origin-y',
1409
+ 'transform-origin-z',
1410
+ 'transform-style',
1411
+ 'transition',
1412
+ 'transition-delay',
1413
+ 'transition-duration',
1414
+ 'transition-property',
1415
+ 'transition-timing-function',
1416
+ 'user-drag',
1417
+ 'user-modify',
1418
+ 'user-select',
1419
+ 'wrap',
1420
+ 'wrap-flow',
1421
+ 'wrap-margin',
1422
+ 'wrap-padding',
1423
+ 'wrap-through'
1424
+ ];
1425
+
1426
+ });
1427
+ require.register("visionmedia-rework/lib/plugins/function.js", function(exports, require, module){
1428
+
1429
+ /**
1430
+ * Module dependencies.
1431
+ */
1432
+
1433
+ var visit = require('../visit')
1434
+ , utils = require('../utils');
1435
+
1436
+ /**
1437
+ * Define custom function.
1438
+ */
1439
+
1440
+ module.exports = function(functions) {
1441
+ if (!functions) throw new Error('functions object required');
1442
+ return function(style, rework){
1443
+ visit.declarations(style, function(declarations){
1444
+ for (var name in functions) {
1445
+ func(declarations, name, functions[name]);
1446
+ }
1447
+ });
1448
+ }
1449
+ };
1450
+
1451
+ /**
1452
+ * Escape regexp codes in string.
1453
+ *
1454
+ * @param {String} s
1455
+ * @api private
1456
+ */
1457
+
1458
+ function escape(s) {
1459
+ return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
1460
+ }
1461
+
1462
+ /**
1463
+ * Visit declarations and apply functions.
1464
+ *
1465
+ * @param {Array} declarations
1466
+ * @param {Object} functions
1467
+ * @api private
1468
+ */
1469
+
1470
+ function func(declarations, name, func) {
1471
+ var regexp = new RegExp(escape(name) + '\\(([^\)]+)\\)', 'g');
1472
+ declarations.forEach(function(decl){
1473
+ if (!~decl.value.indexOf(name + '(')) return;
1474
+ decl.value = decl.value.replace(regexp, function(_, args){
1475
+ args = args.split(/,\s*/).map(utils.stripQuotes);
1476
+ return func.apply(decl, args);
1477
+ });
1478
+ });
1479
+ }
1480
+
1481
+ });
1482
+ require.register("visionmedia-rework/lib/plugins/url.js", function(exports, require, module){
1278
1483
 
1279
1484
  /**
1280
1485
  * Module dependencies.
1281
1486
  */
1282
1487
 
1283
1488
  var utils = require('../utils')
1284
- , visit = require('../visit');
1489
+ , func = require('./function');
1285
1490
 
1286
1491
  /**
1287
1492
  * Map `url()` calls.
@@ -1299,21 +1504,15 @@ var utils = require('../utils')
1299
1504
  */
1300
1505
 
1301
1506
  module.exports = function(fn) {
1302
- return function(style, rework){
1303
- visit.declarations(style, function(declarations){
1304
- declarations.forEach(function(decl, i){
1305
- if (!~decl.value.indexOf('url(')) return;
1306
- decl.value = decl.value.replace(/url\(([^)]+)\)/g, function(_, url){
1307
- url = utils.stripQuotes(url);
1308
- return 'url("' + fn(url) + '")';
1309
- });
1310
- });
1311
- });
1312
- }
1507
+ return func({ url: url });
1508
+
1509
+ function url(path){
1510
+ return 'url("' + fn(path) + '")';
1511
+ };
1313
1512
  };
1314
1513
 
1315
1514
  });
1316
- require.register("rework/lib/plugins/vars.js", function(exports, require, module){
1515
+ require.register("visionmedia-rework/lib/plugins/vars.js", function(exports, require, module){
1317
1516
 
1318
1517
  /**
1319
1518
  * Module dependencies.
@@ -1340,12 +1539,13 @@ var visit = require('../visit');
1340
1539
  *
1341
1540
  */
1342
1541
 
1343
- module.exports = function() {
1344
- var map = {};
1542
+ module.exports = function(map) {
1543
+ map = map || {};
1345
1544
 
1346
1545
  function replace(str) {
1347
1546
  return str.replace(/\bvar\((.*?)\)/g, function(_, name){
1348
1547
  var val = map[name];
1548
+ if (!val) throw new Error('variable "' + name + '" is undefined');
1349
1549
  if (val.match(/\bvar\(/)) val = replace(val);
1350
1550
  return val;
1351
1551
  });
@@ -1370,7 +1570,7 @@ module.exports = function() {
1370
1570
  };
1371
1571
 
1372
1572
  });
1373
- require.register("rework/lib/plugins/ease.js", function(exports, require, module){
1573
+ require.register("visionmedia-rework/lib/plugins/ease.js", function(exports, require, module){
1374
1574
 
1375
1575
  /**
1376
1576
  * Module dependencies.
@@ -1457,7 +1657,7 @@ function substitute(declarations) {
1457
1657
  }
1458
1658
 
1459
1659
  });
1460
- require.register("rework/lib/plugins/at2x.js", function(exports, require, module){
1660
+ require.register("visionmedia-rework/lib/plugins/at2x.js", function(exports, require, module){
1461
1661
 
1462
1662
  /**
1463
1663
  * Module dependencies.
@@ -1548,14 +1748,14 @@ function backgroundWithURL(decl) {
1548
1748
  }
1549
1749
 
1550
1750
  });
1551
- require.register("rework/lib/plugins/colors.js", function(exports, require, module){
1751
+ require.register("visionmedia-rework/lib/plugins/colors.js", function(exports, require, module){
1552
1752
 
1553
1753
  /**
1554
1754
  * Module dependencies.
1555
1755
  */
1556
1756
 
1557
1757
  var parse = require('color-parser')
1558
- , visit = require('../visit');
1758
+ , functions = require('./function');
1559
1759
 
1560
1760
  /**
1561
1761
  * Provide color manipulation helpers:
@@ -1573,57 +1773,22 @@ var parse = require('color-parser')
1573
1773
  */
1574
1774
 
1575
1775
  module.exports = function() {
1576
- return function(style, rework){
1577
- visit.declarations(style, substitute);
1578
- }
1776
+ return functions({
1777
+ rgba: function(color, alpha){
1778
+ if (2 == arguments.length) {
1779
+ var c = parse(color.trim());
1780
+ var args = [c.r, c.g, c.b, alpha];
1781
+ } else {
1782
+ var args = [].slice.call(arguments);
1783
+ }
1784
+
1785
+ return 'rgba(' + args.join(', ') + ')';
1786
+ }
1787
+ });
1579
1788
  };
1580
1789
 
1581
- /**
1582
- * Substitute easing functions.
1583
- *
1584
- * @api private
1585
- */
1586
-
1587
- function substitute(declarations) {
1588
- for (var i = 0; i < declarations.length; ++i) {
1589
- var decl = declarations[i];
1590
- var val = decl.value;
1591
- var index = val.indexOf('rgba');
1592
- if (-1 == index) continue;
1593
-
1594
- // grab rgba(...) value
1595
- var rgba = val.slice(index, val.indexOf(')', index));
1596
-
1597
- // arity > 2
1598
- if (rgba.split(',').length > 2) continue;
1599
-
1600
- // color
1601
- var c = rgba.slice(rgba.indexOf('(') + 1, rgba.indexOf(',')).trim();
1602
- c = parse(c);
1603
-
1604
- // alpha
1605
- var a = rgba.slice(rgba.indexOf(',') + 1, rgba.length);
1606
- a = parseFloat(a);
1607
-
1608
- // format
1609
- c = 'rgba('
1610
- + c.r
1611
- + ','
1612
- + c.g
1613
- + ','
1614
- + c.b
1615
- + ','
1616
- + a
1617
- + ')';
1618
-
1619
- // replace
1620
- decl.value = val.replace(rgba + ')', c);
1621
- }
1622
- }
1623
-
1624
1790
  });
1625
- require.register("rework/lib/plugins/extend.js", function(exports, require, module){
1626
-
1791
+ require.register("visionmedia-rework/lib/plugins/extend.js", function(exports, require, module){
1627
1792
  /**
1628
1793
  * Module dependencies.
1629
1794
  */
@@ -1636,16 +1801,28 @@ var debug = require('debug')('rework:extend');
1636
1801
 
1637
1802
  module.exports = function() {
1638
1803
  debug('use extend');
1639
- return function(style, rework){
1804
+ return function(style, rework) {
1640
1805
  var map = {};
1641
- style.rules.forEach(function(rule){
1642
- if (!rule.declarations) return;
1643
- rule.selectors.forEach(function(sel, i){
1806
+ var rules = style.rules.length;
1807
+
1808
+ for (var j = 0; j < rules; j++) {
1809
+ var rule = style.rules[j];
1810
+ if (!rule || !rule.selectors) return;
1811
+
1812
+ // map selectors
1813
+ rule.selectors.forEach(function(sel, i) {
1644
1814
  map[sel] = rule;
1645
1815
  if ('%' == sel[0]) rule.selectors.splice(i, 1);
1646
1816
  });
1817
+
1818
+ // visit extend: properties
1647
1819
  visit(rule, map);
1648
- });
1820
+
1821
+ // clean up empty rules
1822
+ if (!rule.declarations.length) {
1823
+ style.rules.splice(j--, 1);
1824
+ }
1825
+ };
1649
1826
  }
1650
1827
  };
1651
1828
 
@@ -1668,12 +1845,12 @@ function visit(rule, map) {
1668
1845
  if (!extend) throw new Error('failed to extend "' + val + '"');
1669
1846
 
1670
1847
  var keys = Object.keys(map);
1671
- keys.forEach(function(key){
1848
+ keys.forEach(function(key) {
1672
1849
  if (0 != key.indexOf(val)) return;
1673
1850
  var extend = map[key];
1674
1851
  var suffix = key.replace(val, '');
1675
1852
  debug('extend %j with %j', rule.selectors, extend.selectors);
1676
- extend.selectors = extend.selectors.concat(rule.selectors.map(function(sel){
1853
+ extend.selectors = extend.selectors.concat(rule.selectors.map(function(sel) {
1677
1854
  return sel + suffix;
1678
1855
  }));
1679
1856
  });
@@ -1683,7 +1860,7 @@ function visit(rule, map) {
1683
1860
  }
1684
1861
 
1685
1862
  });
1686
- require.register("rework/lib/plugins/mixin.js", function(exports, require, module){
1863
+ require.register("visionmedia-rework/lib/plugins/mixin.js", function(exports, require, module){
1687
1864
 
1688
1865
  /**
1689
1866
  * Module dependencies.
@@ -1738,7 +1915,7 @@ function mixin(declarations, mixins) {
1738
1915
  }
1739
1916
 
1740
1917
  });
1741
- require.register("rework/lib/plugins/keyframes.js", function(exports, require, module){
1918
+ require.register("visionmedia-rework/lib/plugins/keyframes.js", function(exports, require, module){
1742
1919
 
1743
1920
  /**
1744
1921
  * Prefix keyframes.
@@ -1830,7 +2007,7 @@ function cloneKeyframe(keyframe) {
1830
2007
  return clone;
1831
2008
  }
1832
2009
  });
1833
- require.register("rework/lib/plugins/references.js", function(exports, require, module){
2010
+ require.register("visionmedia-rework/lib/plugins/references.js", function(exports, require, module){
1834
2011
 
1835
2012
  /**
1836
2013
  * Module dependencies.
@@ -1887,7 +2064,7 @@ function substitute(declarations) {
1887
2064
  }
1888
2065
 
1889
2066
  });
1890
- require.register("rework/lib/plugins/opacity.js", function(exports, require, module){
2067
+ require.register("visionmedia-rework/lib/plugins/opacity.js", function(exports, require, module){
1891
2068
 
1892
2069
  /**
1893
2070
  * Add IE opacity support.
@@ -1937,7 +2114,7 @@ module.exports = function() {
1937
2114
  }
1938
2115
  };
1939
2116
  });
1940
- require.register("rework/lib/plugins/prefix-selectors.js", function(exports, require, module){
2117
+ require.register("visionmedia-rework/lib/plugins/prefix-selectors.js", function(exports, require, module){
1941
2118
 
1942
2119
  /**
1943
2120
  * Prefix selectors with `str`.
@@ -1966,7 +2143,7 @@ module.exports = function(str) {
1966
2143
  }
1967
2144
  };
1968
2145
  });
1969
- require.register("rework/lib/plugins/prefix-value.js", function(exports, require, module){
2146
+ require.register("visionmedia-rework/lib/plugins/prefix-value.js", function(exports, require, module){
1970
2147
 
1971
2148
  /**
1972
2149
  * Module dependencies.
@@ -2023,7 +2200,7 @@ module.exports = function(value, vendors) {
2023
2200
  };
2024
2201
 
2025
2202
  });
2026
- require.register("rework/lib/plugins/media.js", function(exports, require, module){
2203
+ require.register("visionmedia-rework/lib/plugins/media.js", function(exports, require, module){
2027
2204
 
2028
2205
  /**
2029
2206
  * Module dependencies.
@@ -2055,7 +2232,7 @@ module.exports = function(obj) {
2055
2232
  }
2056
2233
  };
2057
2234
  });
2058
- require.register("rework/lib/plugins/prefix.js", function(exports, require, module){
2235
+ require.register("visionmedia-rework/lib/plugins/prefix.js", function(exports, require, module){
2059
2236
 
2060
2237
  /**
2061
2238
  * Module dependencies.
@@ -2118,67 +2295,11 @@ module.exports = function(prop, vendors) {
2118
2295
  };
2119
2296
 
2120
2297
  });
2121
- require.alias("visionmedia-css/index.js", "rework/deps/css/index.js");
2122
- require.alias("visionmedia-css-parse/index.js", "visionmedia-css/deps/css-parse/index.js");
2298
+ require.register("autoprefixer/data/browsers.js", function(exports, require, module){
2299
+ // Don't edit this files, because it's autogenerated.
2300
+ // See updaters/ dir for generator. Run bin/update to update.
2123
2301
 
2124
- require.alias("visionmedia-css-stringify/index.js", "visionmedia-css/deps/css-stringify/index.js");
2125
-
2126
- require.alias("visionmedia-debug/index.js", "rework/deps/debug/index.js");
2127
- require.alias("visionmedia-debug/debug.js", "rework/deps/debug/debug.js");
2128
-
2129
- require.alias("component-color-parser/index.js", "rework/deps/color-parser/index.js");
2130
- require.alias("component-color-parser/colors.js", "rework/deps/color-parser/colors.js");
2131
-
2132
- require.alias("component-path/index.js", "rework/deps/path/index.js");
2133
-
2134
- if (typeof exports == "object") {
2135
- module.exports = require("rework");
2136
- } else if (typeof define == "function" && define.amd) {
2137
- define(function(){ return require("rework"); });
2138
- } else {
2139
- window["rework"] = require("rework");
2140
- }})();
2141
- (function () {
2142
-
2143
- // Return array, that doesn’t contain duplicates.
2144
- var uniq = function (array) {
2145
- var filtered = [];
2146
- array.forEach(function (i) {
2147
- if ( filtered.indexOf(i) === -1 ) {
2148
- filtered.push(i);
2149
- }
2150
- });
2151
- return filtered;
2152
- };
2153
-
2154
- // Parse CSS and add prefixed properties and values, when it really necessary
2155
- // for selected browsers.
2156
- //
2157
- // var prefixed = autoprefixer.compile(css);
2158
- //
2159
- // By default, it add prefixes for last 2 releases of each browsers.
2160
- // You can use global statistics to select browsers:
2161
- //
2162
- // autoprefixer.compile(css, '> 1%');
2163
- //
2164
- // versions fo each browsers:
2165
- //
2166
- // autoprefixer.compile(css, 'last 1 version');
2167
- //
2168
- // or set them manually:
2169
- //
2170
- // autoprefixer.compile(css, ['chrome 26', 'ff 20', 'ie 10']);
2171
- //
2172
- // If you want to combine Autoprefixer with another Rework filters,
2173
- // you can use it as separated filter:
2174
- //
2175
- // rework(css).
2176
- // use(autoprefixer.filter(last 1 version')).
2177
- // toString();
2178
- var autoprefixer = {
2179
- // Load data
2180
- data: {
2181
- browsers: {
2302
+ module.exports = {
2182
2303
  chrome: {
2183
2304
  prefix: "-webkit-",
2184
2305
  versions: [
@@ -2381,8 +2502,14 @@ var autoprefixer = {
2381
2502
  0
2382
2503
  ]
2383
2504
  }
2384
- },
2385
- props: {
2505
+ };
2506
+
2507
+ });
2508
+ require.register("autoprefixer/data/props.js", function(exports, require, module){
2509
+ // Don't edit this files, because it's autogenerated.
2510
+ // See updaters/ dir for generator. Run bin/update to update.
2511
+
2512
+ module.exports = {
2386
2513
  "@keyframes": {
2387
2514
  browsers: [
2388
2515
  "ff 5",
@@ -5654,7 +5781,155 @@ var autoprefixer = {
5654
5781
  "ios 5.1"
5655
5782
  ]
5656
5783
  }
5657
- }
5784
+ };
5785
+
5786
+ });
5787
+ require.register("autoprefixer/lib/autoprefixer/inspect.js", function(exports, require, module){
5788
+ /*
5789
+ * Copyright 2013 Andrey Sitnik <andrey@sitnik.ru>,
5790
+ * sponsored by Evil Martians.
5791
+ *
5792
+ * This program is free software: you can redistribute it and/or modify
5793
+ * it under the terms of the GNU Lesser General Public License as published by
5794
+ * the Free Software Foundation, either version 3 of the License, or
5795
+ * (at your option) any later version.
5796
+ *
5797
+ * This program is distributed in the hope that it will be useful,
5798
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
5799
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5800
+ * GNU Lesser General Public License for more details.
5801
+ *
5802
+ * You should have received a copy of the GNU Lesser General Public License
5803
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
5804
+ */
5805
+ 'use strict';
5806
+
5807
+ var autoprefixer = require('../autoprefixer.js');
5808
+
5809
+ var transition;
5810
+ var format = function (props) {
5811
+ transition = false;
5812
+ return props.map(function (prop) {
5813
+ var name = prop.name;
5814
+ if (prop.transition) {
5815
+ name += '*';
5816
+ transition = true;
5817
+ }
5818
+ return ' ' + name + ': ' + prop.prefixes.map(function (i) {
5819
+ return i.replace(/^-(.*)-$/g, '$1');
5820
+ }).join(', ');
5821
+ }).join("\n");
5822
+ };
5823
+
5824
+ // Show, what browser, properties and values will used by autoprefixed
5825
+ // with this `req`.
5826
+ var inspect = function (reqs) {
5827
+ var browsers = autoprefixer.parse(reqs || []);
5828
+ var props = autoprefixer.props(browsers);
5829
+
5830
+ var name, version, last, selected = [];
5831
+ for (var i = 0; i < browsers.length; i++) {
5832
+ version = browsers[i].split(' ')[1];
5833
+ if ( browsers[i].indexOf(last) == 0 ) {
5834
+ selected[selected.length - 1] += ', ' + version;
5835
+ } else {
5836
+ last = browsers[i].split(' ')[0];
5837
+ if ( last == 'ie' ) {
5838
+ name = 'IE';
5839
+ } else if ( last == 'ff' ) {
5840
+ name = 'Firefox';
5841
+ } else if ( last == 'ios' ) {
5842
+ name = 'iOS';
5843
+ } else {
5844
+ name = last.slice(0, 1).toUpperCase() + last.slice(1);
5845
+ }
5846
+ selected.push(name + ' ' + version);
5847
+ }
5848
+ }
5849
+
5850
+ var properties = props.filter(function (i) { return !i.onlyValue; });
5851
+ var values = props.filter(function (i) { return i.onlyValue; });
5852
+
5853
+ var out = "Browsers:\n" +
5854
+ selected.map(function (i) { return ' ' + i; }).join("\n") + "\n";
5855
+
5856
+ if ( properties.length > 0 ) {
5857
+ out += "\nProperties:\n" + format(properties) + "\n";
5858
+ if ( transition ) {
5859
+ out += "* - properties, which can be used in transition\n"
5860
+ }
5861
+ }
5862
+ if ( values.length > 0 ) {
5863
+ out += "\nValues:\n" + format(values) + "\n"
5864
+ }
5865
+ return out;
5866
+ };
5867
+
5868
+ module.exports = inspect;
5869
+
5870
+ });
5871
+ require.register("autoprefixer/lib/autoprefixer.js", function(exports, require, module){
5872
+ /*
5873
+ * Copyright 2013 Andrey Sitnik <andrey@sitnik.ru>,
5874
+ * sponsored by Evil Martians.
5875
+ *
5876
+ * This program is free software: you can redistribute it and/or modify
5877
+ * it under the terms of the GNU Lesser General Public License as published by
5878
+ * the Free Software Foundation, either version 3 of the License, or
5879
+ * (at your option) any later version.
5880
+ *
5881
+ * This program is distributed in the hope that it will be useful,
5882
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
5883
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5884
+ * GNU Lesser General Public License for more details.
5885
+ *
5886
+ * You should have received a copy of the GNU Lesser General Public License
5887
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
5888
+ */
5889
+ 'use strict';
5890
+
5891
+ var rework = require('rework');
5892
+
5893
+ // Return array, that doesn’t contain duplicates.
5894
+ var uniq = function (array) {
5895
+ var filtered = [];
5896
+ array.forEach(function (i) {
5897
+ if ( filtered.indexOf(i) === -1 ) {
5898
+ filtered.push(i);
5899
+ }
5900
+ });
5901
+ return filtered;
5902
+ };
5903
+
5904
+ // Parse CSS and add prefixed properties and values by Can I Use database
5905
+ // for actual browsers.
5906
+ //
5907
+ // var prefixed = autoprefixer.compile(css);
5908
+ //
5909
+ // By default, it add prefixes for last 2 releases of each browsers.
5910
+ // You can use global statistics to select browsers:
5911
+ //
5912
+ // autoprefixer.compile(css, '> 1%');
5913
+ //
5914
+ // versions fo each browsers:
5915
+ //
5916
+ // autoprefixer.compile(css, 'last 1 version');
5917
+ //
5918
+ // or set them manually:
5919
+ //
5920
+ // autoprefixer.compile(css, ['chrome 26', 'ff 20', 'ie 10']);
5921
+ //
5922
+ // If you want to combine Autoprefixer with another Rework filters,
5923
+ // you can use it as separated filter:
5924
+ //
5925
+ // rework(css).
5926
+ // use(autoprefixer.filter(last 1 version')).
5927
+ // toString();
5928
+ var autoprefixer = {
5929
+ // Load data
5930
+ data: {
5931
+ browsers: require('../data/browsers'),
5932
+ props: require('../data/props')
5658
5933
  },
5659
5934
 
5660
5935
  // Parse `css` by Rework and add prefixed properties for browsers
@@ -5799,5 +6074,52 @@ var autoprefixer = {
5799
6074
  }
5800
6075
  };
5801
6076
 
5802
- window.autoprefixer = autoprefixer;
5803
- })();
6077
+ module.exports = autoprefixer;
6078
+
6079
+ });
6080
+ require.alias("visionmedia-rework/index.js", "autoprefixer/deps/rework/index.js");
6081
+ require.alias("visionmedia-rework/lib/rework.js", "autoprefixer/deps/rework/lib/rework.js");
6082
+ require.alias("visionmedia-rework/lib/utils.js", "autoprefixer/deps/rework/lib/utils.js");
6083
+ require.alias("visionmedia-rework/lib/visit.js", "autoprefixer/deps/rework/lib/visit.js");
6084
+ require.alias("visionmedia-rework/lib/properties.js", "autoprefixer/deps/rework/lib/properties.js");
6085
+ require.alias("visionmedia-rework/lib/plugins/function.js", "autoprefixer/deps/rework/lib/plugins/function.js");
6086
+ require.alias("visionmedia-rework/lib/plugins/url.js", "autoprefixer/deps/rework/lib/plugins/url.js");
6087
+ require.alias("visionmedia-rework/lib/plugins/vars.js", "autoprefixer/deps/rework/lib/plugins/vars.js");
6088
+ require.alias("visionmedia-rework/lib/plugins/ease.js", "autoprefixer/deps/rework/lib/plugins/ease.js");
6089
+ require.alias("visionmedia-rework/lib/plugins/at2x.js", "autoprefixer/deps/rework/lib/plugins/at2x.js");
6090
+ require.alias("visionmedia-rework/lib/plugins/colors.js", "autoprefixer/deps/rework/lib/plugins/colors.js");
6091
+ require.alias("visionmedia-rework/lib/plugins/extend.js", "autoprefixer/deps/rework/lib/plugins/extend.js");
6092
+ require.alias("visionmedia-rework/lib/plugins/mixin.js", "autoprefixer/deps/rework/lib/plugins/mixin.js");
6093
+ require.alias("visionmedia-rework/lib/plugins/keyframes.js", "autoprefixer/deps/rework/lib/plugins/keyframes.js");
6094
+ require.alias("visionmedia-rework/lib/plugins/references.js", "autoprefixer/deps/rework/lib/plugins/references.js");
6095
+ require.alias("visionmedia-rework/lib/plugins/opacity.js", "autoprefixer/deps/rework/lib/plugins/opacity.js");
6096
+ require.alias("visionmedia-rework/lib/plugins/prefix-selectors.js", "autoprefixer/deps/rework/lib/plugins/prefix-selectors.js");
6097
+ require.alias("visionmedia-rework/lib/plugins/prefix-value.js", "autoprefixer/deps/rework/lib/plugins/prefix-value.js");
6098
+ require.alias("visionmedia-rework/lib/plugins/media.js", "autoprefixer/deps/rework/lib/plugins/media.js");
6099
+ require.alias("visionmedia-rework/lib/plugins/prefix.js", "autoprefixer/deps/rework/lib/plugins/prefix.js");
6100
+ require.alias("visionmedia-css/index.js", "visionmedia-rework/deps/css/index.js");
6101
+ require.alias("visionmedia-css-parse/index.js", "visionmedia-css/deps/css-parse/index.js");
6102
+
6103
+ require.alias("visionmedia-css-stringify/index.js", "visionmedia-css/deps/css-stringify/index.js");
6104
+
6105
+ require.alias("visionmedia-debug/index.js", "visionmedia-rework/deps/debug/index.js");
6106
+ require.alias("visionmedia-debug/debug.js", "visionmedia-rework/deps/debug/debug.js");
6107
+
6108
+ require.alias("component-color-parser/index.js", "visionmedia-rework/deps/color-parser/index.js");
6109
+ require.alias("component-color-parser/colors.js", "visionmedia-rework/deps/color-parser/colors.js");
6110
+
6111
+ require.alias("component-path/index.js", "visionmedia-rework/deps/path/index.js");
6112
+
6113
+ require.register('visionmedia-rework/lib/plugins/inline.js', function(_, _, module){
6114
+ module.exports = function () {};
6115
+ });
6116
+
6117
+ var autoprefixer = require('autoprefixer/lib/autoprefixer.js');
6118
+ autoprefixer.inspect = require('autoprefixer/lib/autoprefixer/inspect.js');
6119
+ if (typeof exports == 'object') {
6120
+ module.exports = autoprefixer;
6121
+ } else if (typeof define == 'function' && define.amd) {
6122
+ define(function(){ return autoprefixer; });
6123
+ } else {
6124
+ this['autoprefixer'] = autoprefixer;
6125
+ } })();
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autoprefixer-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.20130409
4
+ version: 0.2.20130413
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-09 00:00:00.000000000 Z
12
+ date: 2013-04-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: execjs
@@ -27,8 +27,8 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
- description: ! " Parse CSS and add prefixed properties and values\n when it
31
- really necessary for selected browsers.\n"
30
+ description: Parse CSS and add prefixed properties and values by Can I Use database
31
+ for actual browsers
32
32
  email: andrey@sitnik.ru
33
33
  executables: []
34
34
  extensions: []
@@ -50,7 +50,9 @@ files:
50
50
  - lib/autoprefixer-rails.rb
51
51
  - lib/autoprefixer-rails/railtie.rb
52
52
  - lib/autoprefixer-rails/version.rb
53
+ - lib/rake/autoprefixer_tasks.rb
53
54
  - spec/app/.gitignore
55
+ - spec/app/Rakefile
54
56
  - spec/app/app/assets/stylesheets/test.css
55
57
  - spec/app/app/controllers/application_controller.rb
56
58
  - spec/app/app/controllers/css_controller.rb
@@ -80,7 +82,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
80
82
  version: '0'
81
83
  segments:
82
84
  - 0
83
- hash: 2468643414422888895
85
+ hash: 3802016816897382572
84
86
  required_rubygems_version: !ruby/object:Gem::Requirement
85
87
  none: false
86
88
  requirements:
@@ -89,11 +91,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
91
  version: '0'
90
92
  segments:
91
93
  - 0
92
- hash: 2468643414422888895
94
+ hash: 3802016816897382572
93
95
  requirements: []
94
96
  rubyforge_project:
95
97
  rubygems_version: 1.8.23
96
98
  signing_key:
97
99
  specification_version: 3
98
- summary: Parse CSS and add only actual prefixed
100
+ summary: Parse CSS and add only actual prefixed by Can I Use database
99
101
  test_files: []