necessary 15.0.6 → 15.0.8
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/README.md +28 -5
- package/lib/utilities/template.js +13 -9
- package/package.json +2 -2
- package/src/utilities/template.js +13 -10
package/README.md
CHANGED
|
@@ -395,7 +395,7 @@ const filePath = "/etc/var/public/name.html",
|
|
|
395
395
|
args = {
|
|
396
396
|
name,
|
|
397
397
|
age
|
|
398
|
-
}
|
|
398
|
+
},
|
|
399
399
|
parsedContent = parseFile(filePath, args);
|
|
400
400
|
```
|
|
401
401
|
|
|
@@ -404,8 +404,8 @@ const filePath = "/etc/var/public/name.html",
|
|
|
404
404
|
```
|
|
405
405
|
const content = `
|
|
406
406
|
|
|
407
|
-
name: <strong
|
|
408
|
-
age: <strong
|
|
407
|
+
name: <strong>\${name}</strong><br/>
|
|
408
|
+
age: <strong>\${age}</strong><br/>
|
|
409
409
|
|
|
410
410
|
`,
|
|
411
411
|
name = "Joe Bloggs",
|
|
@@ -413,10 +413,33 @@ const content = `
|
|
|
413
413
|
args = {
|
|
414
414
|
name,
|
|
415
415
|
age
|
|
416
|
-
}
|
|
416
|
+
},
|
|
417
417
|
parsedContent = parseContent(content, args);
|
|
418
418
|
```
|
|
419
419
|
|
|
420
|
+
Note that the dollar signs are escaped here.
|
|
421
|
+
Alternatively you can dispense with them altogether and pass in a different regular expression:
|
|
422
|
+
|
|
423
|
+
```
|
|
424
|
+
const content = `
|
|
425
|
+
|
|
426
|
+
name: <strong>{name}</strong><br/>
|
|
427
|
+
age: <strong>{age}</strong><br/>
|
|
428
|
+
|
|
429
|
+
`,
|
|
430
|
+
name = "Joe Bloggs",
|
|
431
|
+
age = 99,
|
|
432
|
+
args = {
|
|
433
|
+
name,
|
|
434
|
+
age
|
|
435
|
+
},
|
|
436
|
+
regularExpression = /{(.+?)}/g,
|
|
437
|
+
parsedContent = parseContent(content, args, regularExpression);
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
You can of course choose any token format you like if you provide the requisite regular expression to match it.
|
|
441
|
+
The `parseLine()` and `parseFile()` functions also behave in this way.
|
|
442
|
+
|
|
420
443
|
* The `parseLine()` function takes a single line of content as the first argument:
|
|
421
444
|
|
|
422
445
|
```
|
|
@@ -426,7 +449,7 @@ const line = "${name}, aged ${age}.",
|
|
|
426
449
|
args = {
|
|
427
450
|
name,
|
|
428
451
|
age
|
|
429
|
-
}
|
|
452
|
+
},
|
|
430
453
|
parsedLine = parseLine(line, args); // returns 'Joe Bloggs, aged 99.'
|
|
431
454
|
```
|
|
432
455
|
|
|
@@ -24,17 +24,21 @@ _export(exports, {
|
|
|
24
24
|
});
|
|
25
25
|
var _fileSystem = require("../utilities/fileSystem");
|
|
26
26
|
var _constants = require("../constants");
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
var _characters = require("../characters");
|
|
28
|
+
var defaultRegularExpression = /\${(.+?)}/g;
|
|
29
|
+
function parseFile(filePath, args) {
|
|
30
|
+
var regularExpression = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : defaultRegularExpression;
|
|
31
|
+
var content = (0, _fileSystem.readFile)(filePath), parsedContent = parseContent(content, args, regularExpression);
|
|
29
32
|
return parsedContent;
|
|
30
33
|
}
|
|
31
|
-
function parseContent(content, args
|
|
32
|
-
var
|
|
34
|
+
function parseContent(content, args) {
|
|
35
|
+
var regularExpression = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : defaultRegularExpression;
|
|
36
|
+
var lines = content.split(_characters.NEW_LINE_CHARACTER), parsedLines = parseLines(lines, args, regularExpression), parsedContent = parsedLines.join(_characters.NEW_LINE_CHARACTER);
|
|
33
37
|
return parsedContent;
|
|
34
38
|
}
|
|
35
39
|
function parseLine(line, args) {
|
|
36
|
-
var
|
|
37
|
-
var parsedLine = line.replace(
|
|
40
|
+
var regularExpression = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : defaultRegularExpression;
|
|
41
|
+
var parsedLine = line.replace(regularExpression, function(match, token) {
|
|
38
42
|
var parsedToken = parseToken(token, args);
|
|
39
43
|
return parsedToken;
|
|
40
44
|
});
|
|
@@ -45,9 +49,9 @@ var _default = {
|
|
|
45
49
|
parseContent: parseContent,
|
|
46
50
|
parseLine: parseLine
|
|
47
51
|
};
|
|
48
|
-
function parseLines(lines, args,
|
|
52
|
+
function parseLines(lines, args, regularExpression) {
|
|
49
53
|
var parsedLines = lines.map(function(line) {
|
|
50
|
-
var parsedLine = parseLine(line, args,
|
|
54
|
+
var parsedLine = parseLine(line, args, regularExpression);
|
|
51
55
|
return parsedLine;
|
|
52
56
|
});
|
|
53
57
|
return parsedLines;
|
|
@@ -60,4 +64,4 @@ function parseToken(token, args) {
|
|
|
60
64
|
return parsedToken;
|
|
61
65
|
}
|
|
62
66
|
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdGVtcGxhdGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9maWxlU3lzdGVtXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBORVdfTElORV9DSEFSQUNURVIgfSBmcm9tIFwiLi4vY2hhcmFjdGVyc1wiO1xuXG5jb25zdCBkZWZhdWx0UmVndWxhckV4cHJlc3Npb24gPSAvXFwkeyguKz8pfS9nO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGaWxlKGZpbGVQYXRoLCBhcmdzLCByZWd1bGFyRXhwcmVzc2lvbiA9IGRlZmF1bHRSZWd1bGFyRXhwcmVzc2lvbikge1xuICBjb25zdCBjb250ZW50ID0gcmVhZEZpbGUoZmlsZVBhdGgpLFxuICAgICAgICBwYXJzZWRDb250ZW50ID0gcGFyc2VDb250ZW50KGNvbnRlbnQsIGFyZ3MsIHJlZ3VsYXJFeHByZXNzaW9uKTtcblxuICByZXR1cm4gcGFyc2VkQ29udGVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29udGVudChjb250ZW50LCBhcmdzLCByZWd1bGFyRXhwcmVzc2lvbiA9IGRlZmF1bHRSZWd1bGFyRXhwcmVzc2lvbikge1xuICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoTkVXX0xJTkVfQ0hBUkFDVEVSKSxcbiAgICAgICAgcGFyc2VkTGluZXMgPSBwYXJzZUxpbmVzKGxpbmVzLCBhcmdzLCByZWd1bGFyRXhwcmVzc2lvbiksXG4gICAgICAgIHBhcnNlZENvbnRlbnQgPSBwYXJzZWRMaW5lcy5qb2luKE5FV19MSU5FX0NIQVJBQ1RFUik7XG5cbiAgcmV0dXJuIHBhcnNlZENvbnRlbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpbmUobGluZSwgYXJncywgcmVndWxhckV4cHJlc3Npb24gPSBkZWZhdWx0UmVndWxhckV4cHJlc3Npb24pIHtcbiAgY29uc3QgcGFyc2VkTGluZSA9IGxpbmUucmVwbGFjZShyZWd1bGFyRXhwcmVzc2lvbiwgKG1hdGNoLCB0b2tlbikgPT4ge1xuICAgIGNvbnN0IHBhcnNlZFRva2VuID0gcGFyc2VUb2tlbih0b2tlbiwgYXJncyk7XG5cbiAgICByZXR1cm4gcGFyc2VkVG9rZW47XG4gIH0pO1xuXG4gIHJldHVybiBwYXJzZWRMaW5lO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHBhcnNlRmlsZSxcbiAgcGFyc2VDb250ZW50LFxuICBwYXJzZUxpbmVcbn07XG5cbmZ1bmN0aW9uIHBhcnNlTGluZXMobGluZXMsIGFyZ3MsIHJlZ3VsYXJFeHByZXNzaW9uKSB7XG4gIGNvbnN0IHBhcnNlZExpbmVzID0gbGluZXMubWFwKChsaW5lKSA9PiB7XG4gICAgY29uc3QgcGFyc2VkTGluZSA9IHBhcnNlTGluZShsaW5lLCBhcmdzLCByZWd1bGFyRXhwcmVzc2lvbik7XG5cbiAgICByZXR1cm4gcGFyc2VkTGluZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHBhcnNlZExpbmVzO1xufVxuXG5mdW5jdGlvbiBwYXJzZVRva2VuKHRva2VuLCBhcmdzKSB7XG4gIGxldCBwYXJzZWRUb2tlbiA9IEVNUFRZX1NUUklORztcblxuICBpZiAoYXJncy5oYXNPd25Qcm9wZXJ0eSh0b2tlbikpIHtcbiAgICBwYXJzZWRUb2tlbiA9IGFyZ3NbdG9rZW5dO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZFRva2VuO1xufVxuIl0sIm5hbWVzIjpbInBhcnNlQ29udGVudCIsInBhcnNlRmlsZSIsInBhcnNlTGluZSIsImRlZmF1bHRSZWd1bGFyRXhwcmVzc2lvbiIsImZpbGVQYXRoIiwiYXJncyIsInJlZ3VsYXJFeHByZXNzaW9uIiwiY29udGVudCIsInJlYWRGaWxlIiwicGFyc2VkQ29udGVudCIsImxpbmVzIiwic3BsaXQiLCJORVdfTElORV9DSEFSQUNURVIiLCJwYXJzZWRMaW5lcyIsInBhcnNlTGluZXMiLCJqb2luIiwibGluZSIsInBhcnNlZExpbmUiLCJyZXBsYWNlIiwibWF0Y2giLCJ0b2tlbiIsInBhcnNlZFRva2VuIiwicGFyc2VUb2tlbiIsIm1hcCIsIkVNUFRZX1NUUklORyIsImhhc093blByb3BlcnR5Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFpQ0E7ZUFBQTs7UUFsQmdCQTtlQUFBQTs7UUFQQUM7ZUFBQUE7O1FBZUFDO2VBQUFBOzs7MEJBckJTO3lCQUNJOzBCQUNNO0FBRW5DLElBQU1DLDJCQUEyQjtBQUUxQixTQUFTRixVQUFVRyxRQUFRLEVBQUVDLElBQUk7UUFBRUMsb0JBQUFBLGlFQUFvQkg7SUFDNUQsSUFBTUksVUFBVUMsSUFBQUEsb0JBQVEsRUFBQ0osV0FDbkJLLGdCQUFnQlQsYUFBYU8sU0FBU0YsTUFBTUM7SUFFbEQsT0FBT0c7QUFDVDtBQUVPLFNBQVNULGFBQWFPLE9BQU8sRUFBRUYsSUFBSTtRQUFFQyxvQkFBQUEsaUVBQW9CSDtJQUM5RCxJQUFNTyxRQUFRSCxRQUFRSSxLQUFLLENBQUNDLDhCQUFrQixHQUN4Q0MsY0FBY0MsV0FBV0osT0FBT0wsTUFBTUMsb0JBQ3RDRyxnQkFBZ0JJLFlBQVlFLElBQUksQ0FBQ0gsOEJBQWtCO0lBRXpELE9BQU9IO0FBQ1Q7QUFFTyxTQUFTUCxVQUFVYyxJQUFJLEVBQUVYLElBQUk7UUFBRUMsb0JBQUFBLGlFQUFvQkg7SUFDeEQsSUFBTWMsYUFBYUQsS0FBS0UsT0FBTyxDQUFDWixtQkFBbUIsU0FBQ2EsT0FBT0M7UUFDekQsSUFBTUMsY0FBY0MsV0FBV0YsT0FBT2Y7UUFFdEMsT0FBT2dCO0lBQ1Q7SUFFQSxPQUFPSjtBQUNUO0lBRUEsV0FBZTtJQUNiaEIsV0FBQUE7SUFDQUQsY0FBQUE7SUFDQUUsV0FBQUE7QUFDRjtBQUVBLFNBQVNZLFdBQVdKLEtBQUssRUFBRUwsSUFBSSxFQUFFQyxpQkFBaUI7SUFDaEQsSUFBTU8sY0FBY0gsTUFBTWEsR0FBRyxDQUFDLFNBQUNQO1FBQzdCLElBQU1DLGFBQWFmLFVBQVVjLE1BQU1YLE1BQU1DO1FBRXpDLE9BQU9XO0lBQ1Q7SUFFQSxPQUFPSjtBQUNUO0FBRUEsU0FBU1MsV0FBV0YsS0FBSyxFQUFFZixJQUFJO0lBQzdCLElBQUlnQixjQUFjRyx1QkFBWTtJQUU5QixJQUFJbkIsS0FBS29CLGNBQWMsQ0FBQ0wsUUFBUTtRQUM5QkMsY0FBY2hCLElBQUksQ0FBQ2UsTUFBTTtJQUMzQjtJQUVBLE9BQU9DO0FBQ1QifQ==
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "necessary",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "15.0.
|
|
4
|
+
"version": "15.0.8",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/necessary",
|
|
7
7
|
"description": "A collection of utility functions.",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"devDependencies": {
|
|
13
13
|
"@swc/core": "1.13.20",
|
|
14
14
|
"necessary": "14.0",
|
|
15
|
-
"watchful-cli": "^1.7.
|
|
15
|
+
"watchful-cli": "^1.7.62"
|
|
16
16
|
},
|
|
17
17
|
"scripts": {
|
|
18
18
|
"clean": "rm -rf ./lib",
|
|
@@ -2,24 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
import { readFile } from "../utilities/fileSystem";
|
|
4
4
|
import { EMPTY_STRING } from "../constants";
|
|
5
|
+
import { NEW_LINE_CHARACTER } from "../characters";
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
const defaultRegularExpression = /\${(.+?)}/g;
|
|
8
|
+
|
|
9
|
+
export function parseFile(filePath, args, regularExpression = defaultRegularExpression) {
|
|
7
10
|
const content = readFile(filePath),
|
|
8
|
-
parsedContent = parseContent(content, args,
|
|
11
|
+
parsedContent = parseContent(content, args, regularExpression);
|
|
9
12
|
|
|
10
13
|
return parsedContent;
|
|
11
14
|
}
|
|
12
15
|
|
|
13
|
-
export function parseContent(content, args,
|
|
14
|
-
const lines = content.split(
|
|
15
|
-
parsedLines = parseLines(lines, args,
|
|
16
|
-
parsedContent = parsedLines.join(
|
|
16
|
+
export function parseContent(content, args, regularExpression = defaultRegularExpression) {
|
|
17
|
+
const lines = content.split(NEW_LINE_CHARACTER),
|
|
18
|
+
parsedLines = parseLines(lines, args, regularExpression),
|
|
19
|
+
parsedContent = parsedLines.join(NEW_LINE_CHARACTER);
|
|
17
20
|
|
|
18
21
|
return parsedContent;
|
|
19
22
|
}
|
|
20
23
|
|
|
21
|
-
export function parseLine(line, args,
|
|
22
|
-
const parsedLine = line.replace(
|
|
24
|
+
export function parseLine(line, args, regularExpression = defaultRegularExpression) {
|
|
25
|
+
const parsedLine = line.replace(regularExpression, (match, token) => {
|
|
23
26
|
const parsedToken = parseToken(token, args);
|
|
24
27
|
|
|
25
28
|
return parsedToken;
|
|
@@ -34,9 +37,9 @@ export default {
|
|
|
34
37
|
parseLine
|
|
35
38
|
};
|
|
36
39
|
|
|
37
|
-
function parseLines(lines, args,
|
|
40
|
+
function parseLines(lines, args, regularExpression) {
|
|
38
41
|
const parsedLines = lines.map((line) => {
|
|
39
|
-
const parsedLine = parseLine(line, args,
|
|
42
|
+
const parsedLine = parseLine(line, args, regularExpression);
|
|
40
43
|
|
|
41
44
|
return parsedLine;
|
|
42
45
|
});
|