csss
Advanced tools
Comparing version 0.4.7 to 0.4.8
62
csss.js
@@ -345,9 +345,14 @@ #!/usr/bin/env node | ||
/* merge multiple selectors outside media queries */ | ||
_.each(selectors, function (selector) { | ||
if (selector.length > 1) { | ||
for (var selector in selectors) { | ||
if (selectors[selector].length > 1) { | ||
var last, rl, lDec = []; | ||
_.each(selector, function (sel, i) { | ||
selectors[selector] = _.uniq(selectors[selector]); | ||
for (var i = 0; i < selectors[selector].length; i++) { | ||
var sel = selectors[selector][i]; | ||
mergedCSSObjRules[sel].selectors = mergedCSSObjRules[sel].selectors; | ||
if (i === 0) { | ||
last = selector[selector.length - 1]; | ||
last = selectors[selector][selectors[selector].length - 1]; | ||
rl = rules[last]; | ||
@@ -359,16 +364,14 @@ _.each(rl.declarations, function (d) { | ||
if (i !== selector.length - 1) { | ||
if (i !== selectors[selector].length - 1) { | ||
//console.log(rules[last]); | ||
//console.log(rules[sel]); | ||
var rs = rules[sel]; | ||
var sDec = []; | ||
_.each(rs.declarations, function (d) { | ||
sDec.push(d.property); | ||
}); | ||
//exact the same selector | .text = .text | ||
if (rs.selectors.length === 1 && rl.selectors.length === 1 && rs.selectors[0] === rl.selectors[0]) { | ||
if (rs.selectors.length === 1 && rl.selectors.length === 1 && selector === rl.selectors[0]) { | ||
/* exact the same selector | ||
.text = .text */ | ||
var sDec = []; | ||
_.each(rs.declarations, function (d) { | ||
sDec.push(d.property); | ||
}); | ||
if (_.isEqual(sDec, lDec)) { | ||
@@ -390,2 +393,19 @@ //exact the same properties | ||
} else if (rs.selectors.length > 1) { | ||
/* different set of selectors | ||
.text, .title | .text */ | ||
if (_.isEqual(sDec, lDec)) { | ||
//exact the same properties | ||
if (_.difference(rs.selectors, rl.selectors).length === 0) { | ||
/* same set of selectors | ||
.text, .title | .text, .title */ | ||
removePos.push(sel); | ||
mergedSelectors++; | ||
} else { | ||
mergedCSSObjRules[sel].selectors = _.difference(mergedCSSObjRules[sel].selectors, mergedCSSObjRules[last].selectors); | ||
} | ||
} | ||
} | ||
@@ -399,10 +419,12 @@ | ||
}); | ||
duplicateSelectors += selector.length; | ||
} | ||
duplicateSelectors += selectors[selector].length; | ||
} | ||
}); | ||
} | ||
if (removePos.length > 0) { | ||
//order by index desc | ||
removePos = _.sortBy(removePos, function (num) { | ||
removePos = _.sortBy(_.uniq(removePos), function (num) { | ||
return num * -1; | ||
@@ -434,3 +456,3 @@ }); | ||
} else { | ||
csss.printMergeSuccess(newFile); | ||
console.log(csss.printMergeSuccess(newFile)); | ||
} | ||
@@ -449,3 +471,3 @@ }); | ||
console.log(consoleOutput); | ||
return consoleOutput; | ||
} | ||
@@ -452,0 +474,0 @@ |
{ | ||
"name": "csss", | ||
"version": "0.4.7", | ||
"description": "CSSS is a tool that detects multiple CSS selectors from your stylesheets and it works across multiple files.", | ||
"version": "0.4.8", | ||
"description": "A tool to detect multiple CSS selectors from your stylesheets and it works across multiple files.", | ||
"author": "Anthony Weber", | ||
@@ -41,4 +41,5 @@ "license": "ISC", | ||
"underscore": "^1.7.0", | ||
"request-promise": "^0.3.3" | ||
"request-promise": "^0.4.0", | ||
"mocha": "^2.1.0" | ||
} | ||
} |
[![NPM version](https://img.shields.io/npm/v/csss.svg?style=flat)](https://www.npmjs.com/package/csss) | ||
[![Build Status](https://travis-ci.org/webycel/csss.svg?branch=merging)](https://travis-ci.org/webycel/csss) | ||
[![Dependency Status](https://img.shields.io/david/webycel/csss.svg?style=flat)](https://david-dm.org/webycel/csss) | ||
@@ -3,0 +5,0 @@ # CSS Shampoo |
@@ -29,3 +29,3 @@ 'use strict'; | ||
beforeEach(function () { | ||
resultsShouldBe = 'undefined\u001b[7m\u001b[31mC\u001b[39m\u001b[33mS\u001b[39m\u001b[32mS\u001b[39m\u001b[34mS\u001b[39m \u001b[31mS\u001b[39m\u001b[33mT\u001b[39m\u001b[32mA\u001b[39m\u001b[34mR\u001b[39m\u001b[35mT\u001b[39m\u001b[31m\n\u001b[39m\u001b[33m\r\u001b[39m\u001b[32m\n\u001b[39m\u001b[34m\r\u001b[39m\u001b[27m\u001b[4mLooking for muliple selectors in\n\r\u001b[24m\u001b[34m./test/css/test-selectors.css\u001b[39m\n\r\n\r\u001b[31m\u001b[1mDUPLICATE: \u001b[22m.r1_text\u001b[39m\n\r line 2\n\r line 7\n\r line 15\n\r line 20\n\r\u001b[32m sharing 3 properties\n\u001b[39m\n\r\u001b[31m\u001b[1mDUPLICATE: \u001b[22m.r1_title\u001b[39m\n\r line 12\n\r line 25\n\r\u001b[32m sharing 1 property\n\u001b[39m\n\r\u001b[31m\u001b[1mDUPLICATE: \u001b[22m.r2_title\u001b[39m\n\r line 31\n\r line 39\n\r line 43\n\r\u001b[32m sharing 2 properties\n\u001b[39m\n\r\u001b[31m\u001b[1mDUPLICATE: \u001b[22m.m_text\u001b[39m\u001b[34m @media screen\u001b[39m\n\r line 51\n\r line 55\n\r\u001b[32m sharing 2 properties\n\u001b[39m\n\r\u001b[31m\u001b[1mDUPLICATE: \u001b[22m.m_text\u001b[39m\u001b[34m @media print\u001b[39m\n\r line 61\n\r line 65\n\r\u001b[32m sharing 2 properties\n\u001b[39m\n\r\u001b[33mDuplicate selectors: 22\n\r\n\r\u001b[39m\u001b[7m\u001b[31mC\u001b[39m\u001b[33mS\u001b[39m\u001b[32mS\u001b[39m\u001b[34mS\u001b[39m \u001b[31mE\u001b[39m\u001b[33mN\u001b[39m\u001b[32mD\u001b[39m\u001b[27m'; | ||
resultsShouldBe = 'undefined\u001b[7m\u001b[31mC\u001b[39m\u001b[33mS\u001b[39m\u001b[32mS\u001b[39m\u001b[34mS\u001b[39m \u001b[31mS\u001b[39m\u001b[33mT\u001b[39m\u001b[32mA\u001b[39m\u001b[34mR\u001b[39m\u001b[35mT\u001b[39m\u001b[31m\n\u001b[39m\u001b[33m\r\u001b[39m\u001b[32m\n\u001b[39m\u001b[34m\r\u001b[39m\u001b[27m\u001b[4mLooking for muliple selectors in\n\r\u001b[24m\u001b[34m./test/css/test-selectors.css\u001b[39m\n\r\n\r\u001b[31m\u001b[1mDUPLICATE: \u001b[22m.r1_text\u001b[39m\n\r line 2\n\r line 7\n\r line 15\n\r line 20\n\r\u001b[32m sharing 3 properties\n\u001b[39m\n\r\u001b[31m\u001b[1mDUPLICATE: \u001b[22m.r1_title\u001b[39m\n\r line 12\n\r line 25\n\r\u001b[32m sharing 1 property\n\u001b[39m\n\r\u001b[31m\u001b[1mDUPLICATE: \u001b[22m.r2_title\u001b[39m\n\r line 31\n\r line 39\n\r line 43\n\r\u001b[32m sharing 2 properties\n\u001b[39m\n\r\u001b[31m\u001b[1mDUPLICATE: \u001b[22m.m_text\u001b[39m\u001b[34m @media screen\u001b[39m\n\r line 51\n\r line 55\n\r\u001b[32m sharing 2 properties\n\u001b[39m\n\r\u001b[31m\u001b[1mDUPLICATE: \u001b[22m.m_text\u001b[39m\u001b[34m @media print\u001b[39m\n\r line 61\n\r line 65\n\r\u001b[32m sharing 2 properties\n\u001b[39m\n\r\u001b[33mDuplicate selectors: 28\n\r\n\r\u001b[39m\u001b[7m\u001b[31mC\u001b[39m\u001b[33mS\u001b[39m\u001b[32mS\u001b[39m\u001b[34mS\u001b[39m \u001b[31mE\u001b[39m\u001b[33mN\u001b[39m\u001b[32mD\u001b[39m\u001b[27m'; | ||
}); | ||
@@ -32,0 +32,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
40169
16
40
8
+ Addedmocha@^2.1.0
+ Addedansi-regex@2.1.1(transitive)
+ Addedansi-styles@2.2.1(transitive)
+ Addedchalk@1.1.3(transitive)
+ Addedcommander@0.6.12.3.0(transitive)
+ Addeddebug@2.2.0(transitive)
+ Addeddiff@1.4.0(transitive)
+ Addedescape-string-regexp@1.0.2(transitive)
+ Addedglob@3.2.11(transitive)
+ Addedgrowl@1.9.2(transitive)
+ Addedhas-ansi@2.0.0(transitive)
+ Addedjade@0.26.3(transitive)
+ Addedlodash@3.10.1(transitive)
+ Addedlru-cache@2.7.3(transitive)
+ Addedminimatch@0.3.0(transitive)
+ Addedminimist@0.0.8(transitive)
+ Addedmkdirp@0.3.00.5.1(transitive)
+ Addedmocha@2.5.3(transitive)
+ Addedms@0.7.1(transitive)
+ Addedrequest-promise@0.4.3(transitive)
+ Addedsigmund@1.0.1(transitive)
+ Addedstrip-ansi@3.0.1(transitive)
+ Addedsupports-color@1.2.02.0.0(transitive)
+ Addedto-iso-string@0.0.2(transitive)
- Removedansi-regex@0.2.1(transitive)
- Removedansi-styles@1.1.0(transitive)
- Removedchalk@0.5.1(transitive)
- Removedescape-string-regexp@1.0.5(transitive)
- Removedhas-ansi@0.1.0(transitive)
- Removedlodash@2.4.2(transitive)
- Removedrequest-promise@0.3.3(transitive)
- Removedstrip-ansi@0.3.0(transitive)
- Removedsupports-color@0.2.0(transitive)
Updatedrequest-promise@^0.4.0