@ctrl/golang-template 1.4.0 → 1.5.0
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.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +18 -19
package/dist/index.js
CHANGED
@@ -35,7 +35,7 @@ function joinReplace(str, variables) {
|
|
35
35
|
}
|
36
36
|
exports.joinReplace = joinReplace;
|
37
37
|
function ifElseReplace(str, variables) {
|
38
|
-
const regex = /{{\s*if\s*(.+?)\s*}}(
|
38
|
+
const regex = /{{\s*if\s*(.+?)\s*}}([\S\s]*?)({{\s*else\s*}}([\S\s]*?))?{{\s*end\s*}}/;
|
39
39
|
let result = str;
|
40
40
|
let m;
|
41
41
|
while ((m = regex.exec(result)) !== null) {
|
@@ -43,7 +43,7 @@ function ifElseReplace(str, variables) {
|
|
43
43
|
const all = m[0];
|
44
44
|
const condition = m[1];
|
45
45
|
const onTrue = m[2];
|
46
|
-
const onFalse = m[
|
46
|
+
const onFalse = m[4] || '';
|
47
47
|
if (condition.startsWith('.')) {
|
48
48
|
let conditionResultState = false;
|
49
49
|
const value = (0, util_1.get)(variables, condition.substring(1));
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAE7B,SAAgB,SAAS,CAAC,GAAW,EAAE,SAA8B;IACnE,MAAM,KAAK,GAAG,oDAAoD,CAAC;IACnE,IAAI,MAAM,GAAG,GAAG,CAAC;IACjB,IAAI,CAA0B,CAAC;IAE/B,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE;QACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtB,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAW,IAAA,UAAG,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAEvD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KACxC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAnBD,8BAmBC;AAED,SAAgB,WAAW,CAAC,GAAW,EAAE,SAA8B;IACrE,MAAM,KAAK,GAAG,oCAAoC,CAAC;IACnD,IAAI,MAAM,GAAG,GAAG,CAAC;IACjB,IAAI,CAA0B,CAAC;IAE/B,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE;QACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvB,MAAM,KAAK,GAAa,IAAA,UAAG,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEvC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KACxC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAjBD,kCAiBC;AAED,SAAgB,aAAa,CAAC,GAAW,EAAE,SAA8B;IACvE,MAAM,KAAK,GAAG,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { get } from './util';\n\nexport function reReplace(str: string, variables: Record<string, any>): string {\n const regex = /{{\\s*re_replace\\s+(\\..+?)\\s+\"(.*?)\"\\s+\"(.*?)\"\\s*}}/;\n let result = str;\n let m: RegExpMatchArray | null;\n\n while ((m = regex.exec(result)) !== null) {\n const all = m[0];\n const prop = m[1];\n const regexp = m[2];\n const newvalue = m[3];\n\n const replaceRegex = new RegExp(regexp, 'g');\n const input: string = get(variables, prop.substring(1));\n const expanded = input.replace(replaceRegex, newvalue);\n\n result = result.replace(all, expanded);\n }\n\n return result;\n}\n\nexport function joinReplace(str: string, variables: Record<string, any>): string {\n const regex = /{{\\s*join\\s+\\.(.+?)\\s+\"(.*?)\"\\s*}}/;\n let result = str;\n let m: RegExpMatchArray | null;\n\n while ((m = regex.exec(result)) !== null) {\n const all = m[0];\n const prop = m[1];\n const delimiter = m[2];\n\n const input: string[] = get(variables, prop);\n const expanded = input.join(delimiter);\n\n result = result.replace(all, expanded);\n }\n\n return result;\n}\n\nexport function ifElseReplace(str: string, variables: Record<string, any>): string {\n const regex = /{{\\s*if\\s*(.+?)\\s*}}([\\S\\s]*?)({{\\s*else\\s*}}([\\S\\s]*?))?{{\\s*end\\s*}}/;\n let result = str;\n let m: RegExpMatchArray | null;\n\n while ((m = regex.exec(result)) !== null) {\n let conditionResult: string;\n\n const all = m[0];\n const condition = m[1];\n const onTrue = m[2];\n const onFalse = m[4] || '';\n\n if (condition.startsWith('.')) {\n let conditionResultState = false;\n const value = get(variables, condition.substring(1));\n if (value === null || value === undefined) {\n conditionResultState = false;\n } else if (typeof value === 'string') {\n conditionResultState = value.length > 0;\n } else if (Array.isArray(value)) {\n conditionResultState = value.length > 0;\n } else if (typeof value === 'boolean') {\n conditionResultState = value;\n } else {\n throw new Error(`Unexpceted type for variable ${condition}: ${typeof value}`);\n }\n\n conditionResult = conditionResultState ? onTrue : onFalse;\n } else {\n throw new Error('Functionality not implemented');\n }\n\n result = result.replace(all, conditionResult);\n }\n\n return result;\n}\n\nexport function rangeReplace(str: string, variables: Record<string, any>): string {\n const regex = /{{\\s*range\\s*(.+?)\\s*}}(.*?){{\\.}}(.*?){{end}}/;\n let result = str;\n let m: RegExpMatchArray | null;\n\n while ((m = regex.exec(result)) !== null) {\n let expanded = '';\n\n const all = m[0];\n const prop = m[1];\n const prefix = m[2];\n const postfix = m[3];\n\n const arr: unknown = get(variables, prop.substring(1));\n if (arr && Array.isArray(arr)) {\n for (const value of arr as string[]) {\n expanded += `${prefix}${value}${postfix}`;\n }\n }\n\n result = result.replace(all, expanded);\n }\n\n return result;\n}\n\nexport function variableReplace(str: string, variables: Record<string, any>): string {\n const regex = /{{\\s*(\\..+?)\\s*}}/;\n let result = str;\n let m: RegExpMatchArray | null;\n\n while ((m = regex.exec(result)) !== null) {\n const all = m[0];\n const prop = m[1];\n\n const value = get(variables, prop.substring(1));\n result = result.replace(all, value);\n }\n\n return result;\n}\n\nexport function indexReplace(str: string, variables: Record<string, any>): string {\n const regex = /{{\\s*index\\s*(\\..+?)\\s+(.+?)\\s*}}/;\n let result = str;\n let m: RegExpMatchArray | null;\n\n while ((m = regex.exec(result)) !== null) {\n const all = m[0];\n const prop = m[1];\n const index = m[2];\n\n const top = get(variables, prop.substring(1));\n let value;\n // @ts-expect-error\n if (isNaN(index)) {\n value = top[index.substring(1, index.length - 1)];\n } else {\n value = top[parseInt(index, 10)];\n }\n\n result = result.replace(all, value);\n }\n\n return result;\n}\n\n/**\n * Parse template and insert variables\n * @param str golang style template\n * @param variables object of variables to insert\n */\nexport function parse(str: string, variables: Record<string, any>): string {\n let result = reReplace(str, variables);\n result = joinReplace(result, variables);\n result = ifElseReplace(result, variables);\n result = rangeReplace(result, variables);\n result = variableReplace(result, variables);\n result = indexReplace(result, variables);\n return result;\n}\n"]}
|
package/package.json
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
{
|
2
2
|
"name": "@ctrl/golang-template",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.5.0",
|
4
4
|
"description": "Basic golang template parsing in js",
|
5
5
|
"author": "Scott Cooper <scttcper@gmail.com>",
|
6
6
|
"license": "MIT",
|
7
|
-
"repository": "
|
7
|
+
"repository": "scttcper/golang-template",
|
8
8
|
"keywords": [
|
9
9
|
"typescript",
|
10
10
|
"golang",
|
@@ -23,30 +23,29 @@
|
|
23
23
|
"lint:fix": "eslint --fix --ext .ts .",
|
24
24
|
"prepare": "npm run build",
|
25
25
|
"build": "tsc -p tsconfig.build.json",
|
26
|
-
"test": "
|
27
|
-
"test:watch": "
|
28
|
-
"test:ci": "
|
26
|
+
"test": "vitest run",
|
27
|
+
"test:watch": "vitest",
|
28
|
+
"test:ci": "vitest run --coverage --reporter=default --reporter=junit --outputFile=./junit.xml"
|
29
29
|
},
|
30
|
-
"dependencies": {},
|
31
30
|
"devDependencies": {
|
32
|
-
"@ctrl/eslint-config": "3.
|
33
|
-
"@types/
|
34
|
-
"@
|
35
|
-
"
|
36
|
-
"
|
37
|
-
"
|
31
|
+
"@ctrl/eslint-config": "3.4.10",
|
32
|
+
"@types/node": "18.7.15",
|
33
|
+
"@vitest/coverage-c8": "^0.23.1",
|
34
|
+
"c8": "7.11.3",
|
35
|
+
"typescript": "4.8.2",
|
36
|
+
"vitest": "0.15.2"
|
38
37
|
},
|
39
38
|
"publishConfig": {
|
40
|
-
"access": "public"
|
41
|
-
|
42
|
-
"jest": {
|
43
|
-
"preset": "ts-jest",
|
44
|
-
"testEnvironment": "node"
|
39
|
+
"access": "public",
|
40
|
+
"provenance": true
|
45
41
|
},
|
46
42
|
"release": {
|
47
|
-
"
|
43
|
+
"branches": [
|
44
|
+
"master"
|
45
|
+
]
|
48
46
|
},
|
49
47
|
"engines": {
|
50
48
|
"node": ">=8.0.0"
|
51
|
-
}
|
49
|
+
},
|
50
|
+
"packageManager": "pnpm@10.15.0"
|
52
51
|
}
|