Socket
Socket
Sign inDemoInstall

extract-from-css

Package Overview
Dependencies
9
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.3.1 to 0.4.0

spec/extract-spec.js

10

lib/extract-classes-from-rules.js

@@ -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;

35

lib/index.js
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();
SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc