From b128aad311dab536382c6f86ede78320576780f4 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Wed, 1 Nov 2017 22:33:19 +0530 Subject: [PATCH] add method removeCSSRule with test --- src/utils.js | 13 +++++++++++++ test/utils.spec.js | 13 ++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/utils.js b/src/utils.js index 654aa59..2284a0e 100644 --- a/src/utils.js +++ b/src/utils.js @@ -180,6 +180,18 @@ function buildCSSRule(rule, styleMap, cssRulesString = '') { return `${cssRulesString}${getCSSRuleBlock(rule, styleMap)}`; } +function removeCSSRule(rule, cssRulesString = '') { + const rulePatternStr = `${escapeRegExp(rule)} {([^}]*)}`; + const rulePattern = new RegExp(rulePatternStr, 'g'); + let output = cssRulesString; + + if (cssRulesString && cssRulesString.match(rulePattern)) { + output = cssRulesString.replace(rulePattern, ''); + } + + return output.trim(); +} + export default { getHeaderHTML, getBodyHTML, @@ -191,6 +203,7 @@ export default { namespaceSelector, getCSSString, buildCSSRule, + removeCSSRule, makeDataAttributeString, getDefault, escapeRegExp diff --git a/test/utils.spec.js b/test/utils.spec.js index 2362607..3d61164 100644 --- a/test/utils.spec.js +++ b/test/utils.spec.js @@ -4,7 +4,8 @@ import chai from 'chai'; import { makeDataAttributeString, getCSSString, - buildCSSRule, + buildCSSRule, + removeCSSRule } from '../src/utils.js'; chai.expect(); @@ -67,4 +68,14 @@ describe('#utils', () => { .to.be.equal('.test { width: 5px; height: 19px; margin-top: 3px; }.test2 { height: 45px; }'); }); }); + + describe('removeCSSRule', () => { + it('should remove the css rule based on the selector', () => { + const rule = '.test'; + const cssRuleString = `.test {margin-top: 2px;} .test2 {color: blue;}`; + + expect(removeCSSRule(rule, cssRuleString)) + .to.be.equal('.test2 {color: blue;}'); + }) + }) });