extract-from-css
Advanced tools
Comparing version 0.3.1 to 0.4.0
@@ -5,6 +5,3 @@ | ||
/** | ||
* dot followed by multiple ocurrences of: | ||
* - alphabetical letter, underscore or dash, or | ||
* - non-ascii character, or | ||
* - escaped character | ||
* dot followed by an identifier | ||
* @type {RegExp} | ||
@@ -30,2 +27,7 @@ */ | ||
/** | ||
* Extracts class names from CSS rules (as AST) | ||
* @param {Object} rules | ||
* @return {Array.<string>} list of class names in those rules | ||
*/ | ||
function extractClassNamesFromRules(rules) { | ||
@@ -32,0 +34,0 @@ var rule; |
@@ -5,6 +5,3 @@ | ||
/** | ||
* number sign followed by multiple ocurrences of: | ||
* - alphabetical letter, underscore or dash, or | ||
* - non-ascii character, or | ||
* - escaped character | ||
* number sign followed by an identifier | ||
* @type {RegExp} | ||
@@ -30,2 +27,7 @@ */ | ||
/** | ||
* Extracts ids from CSS rules (as AST) | ||
* @param {Object} rules | ||
* @return {Array.<string>} list of ids in those rules | ||
*/ | ||
function extractIdsFromRules(rules) { | ||
@@ -32,0 +34,0 @@ var rule; |
var cssParser = require('css'); | ||
var extractClassesFromRules = require('./extract-classes-from-rules'); | ||
@@ -28,5 +29,31 @@ var extractIdsFromRules = require('./extract-ids-from-rules'); | ||
module.exports = { | ||
extractClasses: extractClasses, | ||
extractIds: extractIds | ||
}; | ||
var extractMethods = { | ||
extractClassesFromRules: extractClassesFromRules, | ||
extractIdsFromRules: extractIdsFromRules | ||
}; | ||
function capitalize(string) { | ||
return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase(); | ||
} | ||
function extract(features, code) { | ||
var ast = cssParser.parse(code); | ||
var rules = ast.stylesheet.rules; | ||
var method, methodName, feature; | ||
var result = {}; | ||
var i = 0; | ||
while (feature = features[i++]) { | ||
methodName = 'extract' + capitalize(feature) + 'FromRules'; | ||
if (method = extractMethods[methodName]) { | ||
result[feature] = method(rules); | ||
} else { | ||
throw new Error('Unsupported feature ' + feature); | ||
} | ||
} | ||
return result; | ||
} | ||
extract.extractClasses = extractClasses; | ||
extract.extractIds = extractIds; | ||
module.exports = extract; |
{ | ||
"name": "extract-from-css", | ||
"version": "0.3.1", | ||
"version": "0.4.0", | ||
"description": "Extract information from CSS code", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
@@ -22,8 +22,17 @@ # Extract from CSS | ||
var extract = require('extract-from-css'); | ||
var code = '.list-item { background: red; } ' + | ||
'/* comment */ ' + | ||
'#main-header { background: black; } ' + | ||
'.list-item-title:hover { font-weight: bold}'; | ||
var code = '.list-item { background: red; } \ | ||
/* comment */ \ | ||
#main-header { background: black; } \ | ||
.list-item-title:hover { font-weight: bold; } '; | ||
extract(['ids', 'classes'], code); | ||
// { | ||
// ids: [ 'main-header' ], | ||
// classes: [ 'list-item', 'list-item-title' ] | ||
// } | ||
extract.extractClasses(code); | ||
// [ 'list-item', 'list-item-title' ] | ||
extract.extractIds(code); | ||
@@ -30,0 +39,0 @@ // [ 'main-header' ] |
@@ -18,7 +18,8 @@ | ||
samples.forEach(function(sample, index) { | ||
suite.add('extract ids and classes from sample #' + index, function() { | ||
extract(['ids', 'classes'], sample); | ||
}); | ||
suite.add('extractClasses from sample #' + index, function() { | ||
extractClasses(sample); | ||
}); | ||
}); | ||
samples.forEach(function(sample, index) { | ||
suite.add('extractIds from sample #' + index, function() { | ||
@@ -30,5 +31,10 @@ extractIds(sample); | ||
suite.on('cycle', function(event) { | ||
console.log(String(event.target)); | ||
var stats = event.target.stats; | ||
var showStats = ['mean', 'deviation']; | ||
var statsSummary = showStats.map(function(statName) { | ||
return statName + '=' + stats[statName].toFixed(4); | ||
}); | ||
console.log(event.target.name + ' (' + statsSummary.join(', ') + ')'); | ||
}); | ||
suite.run(); |
567337
15
738
88