@arbor-css/util 0.0.130 → 0.0.132
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/replaceFunctionCall.d.ts +2 -0
- package/dist/replaceFunctionCall.d.ts.map +1 -0
- package/dist/replaceFunctionCall.js +66 -0
- package/dist/replaceFunctionCall.js.map +1 -0
- package/dist/replaceFunctionCall.test.d.ts +2 -0
- package/dist/replaceFunctionCall.test.d.ts.map +1 -0
- package/dist/replaceFunctionCall.test.js +18 -0
- package/dist/replaceFunctionCall.test.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replaceFunctionCall.d.ts","sourceRoot":"","sources":["../src/replaceFunctionCall.ts"],"names":[],"mappings":"AAAA,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,UAkClD"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export function replaceCssFunctionCall(source, prefix, replacer) {
|
|
2
|
+
const indexOfFunction = source.indexOf(prefix);
|
|
3
|
+
if (indexOfFunction === -1) {
|
|
4
|
+
return source;
|
|
5
|
+
}
|
|
6
|
+
const nextParam = source.indexOf('(', indexOfFunction);
|
|
7
|
+
if (nextParam === -1) {
|
|
8
|
+
// No parameters, just replace the function name
|
|
9
|
+
const functionName = source.slice(indexOfFunction);
|
|
10
|
+
const replacement = replacer(functionName, []);
|
|
11
|
+
return (source.slice(0, indexOfFunction) +
|
|
12
|
+
replacement +
|
|
13
|
+
source.slice(indexOfFunction + functionName.length));
|
|
14
|
+
}
|
|
15
|
+
const functionName = source.slice(indexOfFunction, nextParam);
|
|
16
|
+
const params = extractParamContents(source, indexOfFunction + functionName.length);
|
|
17
|
+
const args = extractTopLevelParams(params);
|
|
18
|
+
const replacement = replacer(functionName, args);
|
|
19
|
+
const beforeFunction = source.slice(0, indexOfFunction);
|
|
20
|
+
const afterFunction = source.slice(indexOfFunction + functionName.length + params.length + 2); // +2 for the parentheses
|
|
21
|
+
return beforeFunction + replacement + afterFunction;
|
|
22
|
+
}
|
|
23
|
+
function extractParamContents(str, startIndex) {
|
|
24
|
+
let depth = 0;
|
|
25
|
+
let groupStart = -1;
|
|
26
|
+
for (let i = startIndex; i < str.length; i++) {
|
|
27
|
+
const char = str[i];
|
|
28
|
+
if (char === '(') {
|
|
29
|
+
if (depth === 0) {
|
|
30
|
+
groupStart = i;
|
|
31
|
+
}
|
|
32
|
+
depth++;
|
|
33
|
+
}
|
|
34
|
+
else if (char === ')') {
|
|
35
|
+
depth--;
|
|
36
|
+
if (depth === 0 && groupStart !== -1) {
|
|
37
|
+
const groupContents = str.slice(groupStart + 1, i);
|
|
38
|
+
return groupContents;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return str; // No more groups found
|
|
43
|
+
}
|
|
44
|
+
function extractTopLevelParams(paramString) {
|
|
45
|
+
const params = [];
|
|
46
|
+
let depth = 0;
|
|
47
|
+
let currentParamStart = 0;
|
|
48
|
+
for (let i = 0; i < paramString.length; i++) {
|
|
49
|
+
const char = paramString[i];
|
|
50
|
+
if (char === '(') {
|
|
51
|
+
depth++;
|
|
52
|
+
}
|
|
53
|
+
else if (char === ')') {
|
|
54
|
+
depth--;
|
|
55
|
+
}
|
|
56
|
+
else if (char === ',' && depth === 0) {
|
|
57
|
+
params.push(paramString.slice(currentParamStart, i).trim());
|
|
58
|
+
currentParamStart = i + 1;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (currentParamStart < paramString.length) {
|
|
62
|
+
params.push(paramString.slice(currentParamStart).trim());
|
|
63
|
+
}
|
|
64
|
+
return params;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=replaceFunctionCall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replaceFunctionCall.js","sourceRoot":"","sources":["../src/replaceFunctionCall.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replaceFunctionCall.test.d.ts","sourceRoot":"","sources":["../src/replaceFunctionCall.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { expect, it } from 'vitest';
|
|
2
|
+
import { replaceCssFunctionCall } from './replaceFunctionCall.js';
|
|
3
|
+
it('replaces a function without params', () => {
|
|
4
|
+
expect(replaceCssFunctionCall('--fn-test()', '--fn', (name) => `replaced "${name}"`)).toBe('replaced "--fn-test"');
|
|
5
|
+
});
|
|
6
|
+
it('replaces a function call with no params at all', () => {
|
|
7
|
+
expect(replaceCssFunctionCall('--fn-test', '--fn', (name) => `replaced "${name}"`)).toBe('replaced "--fn-test"');
|
|
8
|
+
});
|
|
9
|
+
it('replaces a function with params', () => {
|
|
10
|
+
expect(replaceCssFunctionCall('--fn-test(1, 2, 3)', '--fn', (name, args) => `replaced(${name}, ${args.join(', ')})`)).toBe('replaced(--fn-test, 1, 2, 3)');
|
|
11
|
+
});
|
|
12
|
+
it('replaces a function with nested params', () => {
|
|
13
|
+
expect(replaceCssFunctionCall('--fn-test(1, --fn-nested(2, 3), 4)', '--fn', (name, args) => `replaced(${name}, ${args.join(', ')})`)).toBe('replaced(--fn-test, 1, --fn-nested(2, 3), 4)');
|
|
14
|
+
});
|
|
15
|
+
it('handles complex params with their own params', () => {
|
|
16
|
+
expect(replaceCssFunctionCall('--fn-test(color-mix(red, blue 10%), 1)', '--fn', (name, args) => `replaced(${name}, ${args.join(', ')})`)).toBe('replaced(--fn-test, color-mix(red, blue 10%), 1)');
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=replaceFunctionCall.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replaceFunctionCall.test.js","sourceRoot":"","sources":["../src/replaceFunctionCall.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAC7C,MAAM,CACL,sBAAsB,CACrB,aAAa,EACb,MAAM,EACN,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,IAAI,GAAG,CAC9B,CACD,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;IACzD,MAAM,CACL,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,IAAI,GAAG,CAAC,CAC3E,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC1C,MAAM,CACL,sBAAsB,CACrB,oBAAoB,EACpB,MAAM,EACN,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACvD,CACD,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;IACjD,MAAM,CACL,sBAAsB,CACrB,oCAAoC,EACpC,MAAM,EACN,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACvD,CACD,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;IACvD,MAAM,CACL,sBAAsB,CACrB,wCAAwC,EACxC,MAAM,EACN,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACvD,CACD,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC"}
|