Socket
Socket
Sign inDemoInstall

rework

Package Overview
Dependencies
Maintainers
1
Versions
45
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rework - npm Package Compare versions

Comparing version 0.12.2 to 0.13.0

lib/visit.js

2

component.json
{
"name": "rework",
"version": "0.12.2",
"version": "0.13.0",
"description": "CSS manipulations built on CSSOM",

@@ -5,0 +5,0 @@ "keywords": ["css", "manipulation", "preprocess", "transform"],

0.13.0 / 2013-02-26
==================
* refactor url() with visitor
* refactor references() with visitor
* refactor prefixValue() with visitor
* refactor mixin with visitor
* refactor ease plugin with visitor
* refactor colors plugin with visitor
* add visit.declarations() helper
0.12.2 / 2013-02-12

@@ -3,0 +14,0 @@ ==================

@@ -6,3 +6,4 @@

var parse = require('color-parser');
var parse = require('color-parser')
, visit = require('../visit');

@@ -26,6 +27,3 @@ /**

return function(style, rework){
style.rules.forEach(function(rule){
if (!rule.declarations) return;
substitute(rule.declarations);
});
visit.declarations(style, substitute);
}

@@ -75,2 +73,2 @@ };

}
}
}
/**
* Module dependencies.
*/
var visit = require('../visit');
/**
* Easing functions.

@@ -41,13 +47,13 @@ */

* Provide additional easing functions:
*
*
* #logo {
* transition: all 500ms ease-out-back;
* }
*
*
* yields:
*
*
* #logo {
* transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1.275)
* }
*
*
*/

@@ -57,6 +63,3 @@

return function(style, rework){
style.rules.forEach(function(rule){
if (!rule.declarations) return;
substitute(rule.declarations);
});
visit.declarations(style, substitute);
}

@@ -83,2 +86,2 @@ };

}
}
}

@@ -6,3 +6,4 @@

var utils = require('../utils');
var utils = require('../utils')
, visit = require('../visit');

@@ -16,3 +17,5 @@ /**

return function(style, rework){
rules(style.rules, mixins);
visit.declarations(style, function(declarations){
mixin(declarations, mixins);
});
}

@@ -22,17 +25,2 @@ };

/**
* Visit `rules`.
*
* @param {Array} rules
* @param {Object} mixins
* @api private
*/
function rules(arr, mixins) {
arr.forEach(function(rule){
if (rule.rules) rules(rule.rules, mixins);
if (rule.declarations) visit(rule.declarations, mixins);
});
}
/**
* Visit declarations and apply mixins.

@@ -45,3 +33,3 @@ *

function visit(declarations, mixins) {
function mixin(declarations, mixins) {
for (var i = 0; i < declarations.length; ++i) {

@@ -48,0 +36,0 @@ var decl = declarations[i];

/**
* Module dependencies.
*/
var visit = require('../visit');
/**
* Prefix `value`.

@@ -23,8 +29,5 @@ *

style.rules.forEach(function(rule){
if (!rule.declarations) return;
var decl;
for (var i = 0; i < rule.declarations.length; ++i) {
decl = rule.declarations[i];
visit.declarations(style, function(declarations){
for (var i = 0; i < declarations.length; ++i) {
var decl = declarations[i];
if (!~decl.value.indexOf(value)) continue;

@@ -37,3 +40,3 @@

if (~decl.value.indexOf('-' + value)) continue;
// vendor prefixed props

@@ -45,3 +48,3 @@ vendors.forEach(function(vendor){

rule.declarations.splice(i++, 0, {
declarations.splice(i++, 0, {
property: prop,

@@ -54,2 +57,2 @@ value: decl.value.replace(value, vendor + value)

}
};
};
/**
* Module dependencies.
*/
var visit = require('../visit');
/**
* Prefix `prop`.

@@ -24,53 +30,32 @@ *

return function visit(style, rework){
return function(style, rework){
vendors = vendors || rework.prefixes;
visit.declarations(style, function(declarations, node){
var only = node.vendor;
var isKeyframes = !! node.keyframes;
style.rules.forEach(function(rule){
if (rule.rules) return visit(rule, rework);
if (rule.keyframes) return prefixKeyframes(props, vendors, rule);
if (rule.declarations) prefix(props, vendors, rule.declarations);
});
}
};
for (var i = 0; i < props.length; ++i) {
var prop = props[i];
/**
* Prefix values within keyframes.
*
* @api private
*/
for (var j = 0, len = declarations.length; j < len; ++j) {
var decl = declarations[j];
if (prop != decl.property) continue;
function prefixKeyframes(props, vendors, rule) {
rule.keyframes.forEach(function(keyframe){
if (!rule.vendor) return;
prefix(props, vendors, keyframe.declarations, rule.vendor);
});
}
// vendor prefixed props
for (var k = 0; k < vendors.length; ++k) {
if (!only && isKeyframes) continue;
if (only && only != vendors[k]) continue;
declarations.push({
property: vendors[k] + decl.property,
value: decl.value
});
}
/**
* Prefix declarations.
*
* @api private
*/
function prefix(props, vendors, declarations, only) {
for (var i = 0; i < props.length; ++i) {
var prop = props[i];
for (var j = 0, len = declarations.length; j < len; ++j) {
var decl = declarations[j];
if (prop != decl.property) continue;
// vendor prefixed props
vendors.forEach(function(vendor){
if (only && only != vendor) return;
declarations.push({
property: vendor + decl.property,
value: decl.value
});
});
// original prop
declarations.push(decl);
declarations.splice(j, 1);
}
// original prop
declarations.push(decl);
declarations.splice(j, 1);
}
}
});
}
}
};
/**
* Module dependencies.
*/
var visit = require('../visit');
/**
* Provide property reference support.

@@ -23,6 +29,3 @@ *

return function(style, rework){
style.rules.forEach(function(rule){
if (!rule.declarations) return;
substitute(rule.declarations);
});
visit.declarations(style, substitute);
}

@@ -29,0 +32,0 @@ };

@@ -6,17 +6,18 @@

var utils = require('../utils');
var utils = require('../utils')
, visit = require('../visit');
/**
* Map `url()` calls.
*
*
* body {
* background: url(/images/bg.png);
* }
*
*
* yields:
*
*
* body {
* background: url(http://example.com/images/bg.png);
* }
*
*
*/

@@ -26,36 +27,12 @@

return function(style, rework){
rules(style.rules, fn);
visit.declarations(style, function(declarations){
declarations.forEach(function(decl, i){
if (!~decl.value.indexOf('url(')) return;
decl.value = decl.value.replace(/url\(([^)]+)\)/g, function(_, url){
url = utils.stripQuotes(url);
return 'url("' + fn(url) + '")';
});
});
});
}
};
/**
* Visit `rules`.
*
* @param {Array} rules
* @param {Function} fn
* @api private
*/
function rules(arr, fn) {
arr.forEach(function(rule){
if (rule.rules) rules(rule.rules, fn);
if (rule.declarations) url(rule, fn);
});
}
/**
* Map url().
*
* @api private
*/
function url(rule, fn) {
rule.declarations = rule.declarations.map(function(decl, i){
if (!~decl.value.indexOf('url(')) return decl;
decl.value = decl.value.replace(/url\(([^)]+)\)/g, function(_, url){
url = utils.stripQuotes(url);
return 'url("' + fn(url) + '")';
});
return decl;
});
}
/**
* Module dependencies.
*/
var visit = require('../visit');
/**
* Add variable support.
*
*
*
* :root {
* var-header-color: #06c;
* }
*
* h1 {
* background-color: var(header-color);
* }
*
* yields:
*
*
*
* h1 {
* background-color: #06c;
* }
*
*/

@@ -23,7 +39,5 @@

return function vars(style){
// map variables
style.rules.forEach(function(rule){
if (rule.rules) vars(rule);
if (!rule.declarations) return;
rule.declarations.forEach(function(decl, i){
visit.declarations(style, function(declarations, node){
// map vars
declarations.forEach(function(decl){
if (0 != decl.property.indexOf('var-')) return;

@@ -33,8 +47,5 @@ var name = decl.property.replace('var-', '');

});
});
// substitute values
style.rules.forEach(function(rule){
if (!rule.declarations) return;
rule.declarations.forEach(function(decl, i){
// substitute values
declarations.forEach(function(decl){
if (!decl.value.match(/\bvar\(/)) return;

@@ -45,2 +56,2 @@ decl.value = replace(decl.value);

}
};
};

@@ -6,3 +6,4 @@

var css = require('css');
var css = require('css')
, visit = require('./visit');

@@ -16,2 +17,8 @@ /**

/**
* Expose `visit` helpers.
*/
exports.visit = visit;
/**
* Initialize a new stylesheet `Rework` with `str`.

@@ -18,0 +25,0 @@ *

{
"name": "rework",
"version": "0.12.2",
"version": "0.13.0",
"description": "CSS manipulations built on CSSOM",

@@ -5,0 +5,0 @@ "keywords": ["css", "manipulation", "preprocess", "transform"],

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc