MCPcopy
hub / github.com/DevCloudFE/ng-devui / cssReplaceVarValue

Function cssReplaceVarValue

scripts/themeable/custom-theme-webpack-loader.js:99–138  ·  view source on GitHub ↗

* * @param {*} css css文本内容 * @param {*} reg 匹配的正则 * @param {*} replaceFn 正则的替换函数 * @param {*} fallBackHandler 处理回落的正则和替换函数 * @param {} fallbackStrategy 策略

(css, reg, replaceFn, fallBackHandler = null, fallbackStrategy = 'enforce')

Source from the content-addressed store, hash-verified

97 * @param {} fallbackStrategy 策略
98 */
99function cssReplaceVarValue(css, reg, replaceFn, fallBackHandler = null, fallbackStrategy = 'enforce') {
100 const replaceOriginValue = (reg,replaceFn,fallBackHandler,fallbackStrategy) => {
101 return {
102 postcssPlugin: 'postcss-plugin-replace-var-value',
103 Once(root, { result }) {
104 root.walkDecls(decl => {
105 if (decl.type !== 'comment' && decl.value && decl.value.match(reg)) {
106 var newDecl = decl.clone({ value: decl.value.replace(reg, replaceFn) });
107 decl.replaceWith(newDecl);
108 if (fallBackHandler) {
109 var declPrev = newDecl.prev();
110 var regFallback = fallBackHandler.reg;
111 var replaceFnFallBack = fallBackHandler.replaceFn;
112 if (declPrev && declPrev.type !== 'comment' && declPrev.value
113 && declPrev.toString() === decl.clone({ value: decl.value.replace(regFallback, replaceFnFallBack) }).toString()) {
114 if ('remove' === fallbackStrategy) {
115 declPrev.remove();
116 } else {
117 declPrev.replaceWith(newDecl.clone({ value: newDecl.value.replace(regFallback, replaceFnFallBack) }));
118 if ('only' === fallbackStrategy) {
119 newDecl.remove();
120 }
121 }
122
123 } else {
124 if ('enforce' === fallbackStrategy || true === fallbackStrategy || 'only' === fallbackStrategy) {
125 newDecl.cloneBefore({ value: newDecl.value.replace(regFallback, replaceFnFallBack) });
126 if ('only' === fallbackStrategy) {
127 newDecl.remove();
128 }
129 }
130 }
131 }
132 }
133 });
134 }
135 }
136 }
137 return postcss([replaceOriginValue(reg,replaceFn,fallBackHandler,fallbackStrategy)]).process(css).css;
138}
139
140function process(source, map) {
141 this.cacheable && this.cacheable();

Callers 1

processFunction · 0.85

Calls 1

replaceOriginValueFunction · 0.85

Tested by

no test coverage detected