littoral-templates 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +11 -0
- package/README.md +130 -22
- package/dist/index.d.ts +63 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +83 -23
- package/dist/index.js.map +1 -1
- package/package.json +9 -8
package/CHANGELOG.md
CHANGED
@@ -1,6 +1,17 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## 0.3.0
|
5
|
+
|
6
|
+
* Turn the package into an ESM module (back again).
|
7
|
+
(Should work with Deno in the meanwhile.)
|
8
|
+
* Update dependencies: no impact on shipped code.
|
9
|
+
* Add functions: `when`, `withNewlineAppended`, and `commaSeparated`.
|
10
|
+
* Rename `NestedString` to `Template`, leaving `NestedString` as an alias.
|
11
|
+
This is not a breaking change, but I might deprecate and remove `NestedString` in the future.
|
12
|
+
* Add {T|J}SDoc.
|
13
|
+
|
14
|
+
|
4
15
|
## 0.2.2
|
5
16
|
|
6
17
|
* Fix internal `flatten` function for empty arrays.
|
package/README.md
CHANGED
@@ -3,33 +3,35 @@
|
|
3
3
|
A small JavaScript/TypeScript framework to do templating comfortably using the [template literal](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) syntax in either JavaScript or TypeScript.
|
4
4
|
It doesn't come with its own syntax, like frameworks like [mustache](https://mustache.github.io/), and [handlebars](https://handlebarsjs.com/) do.
|
5
5
|
|
6
|
-
The repository's name is a play on "temporal literals" and "littoral", begin phonetically close to "literal".
|
7
|
-
The latter word indicates the part of a body of water (lake, sea, or ocean) that's closest to shore, usually shallow, and possibly not always entirely submerged.
|
8
|
-
The name tries to convey that implementing templates with this framework doesn't require you to "wade too far into the water".
|
9
|
-
|
10
6
|
Instead, templates look as follows:
|
11
7
|
|
12
8
|
```typescript
|
13
|
-
|
9
|
+
[
|
10
|
+
`top-level`,
|
11
|
+
[ `still top-level, but on a new line` ],
|
12
|
+
indent(1)([
|
13
|
+
`this is indented (1 level)`,
|
14
|
+
indent(2)([
|
15
|
+
`this is much more indented (3 levels)`
|
16
|
+
])
|
17
|
+
])
|
18
|
+
]
|
19
|
+
```
|
20
|
+
|
21
|
+
Instances of the `Template` type are arrays of strings nested to an arbitrary depth/level.
|
22
|
+
(Depth 0 corresponds to a single string).
|
23
|
+
To convert this to a proper string, use the `asString` function, as follows:
|
24
|
+
|
25
|
+
```typescript
|
26
|
+
import {asString, indentWith} from "littoral-templates"
|
14
27
|
|
15
28
|
const indent = indentWith(" ")
|
16
29
|
|
17
30
|
console.log(
|
18
|
-
asString(
|
19
|
-
`top-level`,
|
20
|
-
[ `still top-level, but on a new line` ],
|
21
|
-
indent(1)([
|
22
|
-
`this is indented (1 level)`,
|
23
|
-
indent(2)([
|
24
|
-
`this is much more indented (3 levels)`
|
25
|
-
])
|
26
|
-
])
|
27
|
-
])
|
31
|
+
asString(<the template from the listing above>)
|
28
32
|
)
|
29
|
-
|
30
33
|
```
|
31
34
|
|
32
|
-
(The contents of the code above can be found in [`src/test/test-in-README.ts`](./src/test/test-in-README.ts) as well.)
|
33
35
|
This code produces the following text on the JavaScript console:
|
34
36
|
|
35
37
|
```
|
@@ -40,10 +42,116 @@ still top-level, but on a new line
|
|
40
42
|
```
|
41
43
|
|
42
44
|
|
43
|
-
|
45
|
+
### Iterating over collections
|
46
|
+
|
47
|
+
A common activity in templates is to iterate over a collection and map each item to text.
|
48
|
+
These sub-texts would then have to be joined together, and taking care of correct indentation is then usually quite a hassle.
|
49
|
+
Using the `Template` type, you can simply use the `Array.map` function, as follows:
|
50
|
+
|
51
|
+
```typescript
|
52
|
+
import {asString, indentWith} from "littoral-templates"
|
53
|
+
|
54
|
+
const indent = indentWith(" ")
|
55
|
+
|
56
|
+
console.log(
|
57
|
+
asString([
|
58
|
+
`my items:`,
|
59
|
+
indent(1)(
|
60
|
+
["foo", "bar"].map((item, index) => `item ${index + 1}: "${item}"`)
|
61
|
+
)
|
62
|
+
])
|
63
|
+
)
|
64
|
+
```
|
65
|
+
|
66
|
+
This code produces the following text on the JavaScript console:
|
67
|
+
|
68
|
+
```
|
69
|
+
my items:
|
70
|
+
item 1: foo
|
71
|
+
item 2: bar
|
72
|
+
```
|
73
|
+
|
74
|
+
|
75
|
+
### Including content conditionally
|
44
76
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
77
|
+
Another common activity in templates is to include some content conditionally.
|
78
|
+
This package provides the convenient `when` function for that.
|
79
|
+
An example of its usage is as follows:
|
80
|
+
|
81
|
+
```typescript
|
82
|
+
[
|
83
|
+
`foo`,
|
84
|
+
`bar`,
|
85
|
+
when(n === 3)([
|
86
|
+
`lizard`,
|
87
|
+
`sfdeljknesv`
|
88
|
+
])
|
89
|
+
]
|
90
|
+
```
|
91
|
+
|
92
|
+
After applying the `asString`, and assuming the variable `n` holds the value `3`, this evaluates to:
|
93
|
+
|
94
|
+
```
|
95
|
+
foo
|
96
|
+
bar
|
97
|
+
lizard
|
98
|
+
sfdeljknesv
|
99
|
+
```
|
100
|
+
|
101
|
+
In case the argument to the function call after `when(<some boolean condition>)` has side effects, you want to turn that into a thunk, as follows:
|
102
|
+
|
103
|
+
```typescript
|
104
|
+
let touched = 0
|
105
|
+
const template = [
|
106
|
+
`foo`,
|
107
|
+
`bar`,
|
108
|
+
when(n === 3)(() => [
|
109
|
+
`${++touched}lizard`,
|
110
|
+
`sfdeljknesv`
|
111
|
+
])
|
112
|
+
]
|
113
|
+
```
|
114
|
+
|
115
|
+
Using side effects inside a template can be useful to store information that's needed elsewhere in the text-to-generate.
|
116
|
+
An example of that would be to keep track of imports that have to appear before their usage.
|
117
|
+
|
118
|
+
|
119
|
+
### Other convenience functions
|
120
|
+
|
121
|
+
Other convenience functions are:
|
122
|
+
|
123
|
+
* `withNewlineAppended`: Wrap this around a template function (see definition below) to produce a template function that adds a newline after any item fed to the original template function.
|
124
|
+
|
125
|
+
A _template function_ is any function that produces an instance of `Template`.
|
126
|
+
|
127
|
+
An example of the usage of `withNewlineAppended` is
|
128
|
+
|
129
|
+
```typescript
|
130
|
+
[1, 2, 3].map(withNewlineAppended((num) => `${num}`))
|
131
|
+
```
|
132
|
+
|
133
|
+
which should produce the following text:
|
134
|
+
|
135
|
+
```
|
136
|
+
1
|
137
|
+
|
138
|
+
2
|
139
|
+
|
140
|
+
3
|
141
|
+
|
142
|
+
```
|
143
|
+
|
144
|
+
* `commaSeparated`: Given a list of strings, this function adds a comma after every string, except for the last one.
|
145
|
+
|
146
|
+
E.g., `commaSeparated(["1", "2", "3"])` becomes `["1,", "2,", "3"]`.
|
147
|
+
This is useful e.g. for rendering “pretty” import statements.
|
148
|
+
|
149
|
+
_Note_ that this only works on a list of strings, not an any instance of `Template`.
|
150
|
+
|
151
|
+
|
152
|
+
### Package name
|
153
|
+
|
154
|
+
The repository's name is a play on "temporal literals" and "littoral", begin phonetically close to "literal".
|
155
|
+
The latter word indicates the part of a body of water (lake, sea, or ocean) that's closest to shore, usually shallow, and possibly not always entirely submerged.
|
156
|
+
The name tries to convey that implementing templates with this framework doesn't require you to "wade too far into the water".
|
49
157
|
|
package/dist/index.d.ts
CHANGED
@@ -1,13 +1,69 @@
|
|
1
|
-
export declare type NestedString = string | Array<NestedString>;
|
2
|
-
declare type NestedStringFunction<T> = (_: NestedString) => T;
|
3
1
|
/**
|
4
|
-
*
|
2
|
+
* A type definition for “templates” that consist of array of strings nested to an arbitrary depth.
|
3
|
+
* (Depth 0 corresponds to just a single string.)
|
4
|
+
*
|
5
|
+
* @since version 0.3.0
|
5
6
|
*/
|
6
|
-
export
|
7
|
+
export type Template = string | Array<Template>;
|
7
8
|
/**
|
8
|
-
*
|
9
|
-
*
|
9
|
+
* An alias for the {@link Template} type definition.
|
10
|
+
* Note: this type might be deprecated and removed (per a major version) in the future.
|
10
11
|
*/
|
11
|
-
export
|
12
|
+
export type NestedString = Template;
|
13
|
+
type TemplateFunction<T> = (_: Template) => T;
|
14
|
+
/**
|
15
|
+
* @returns {string} - the given template joined as one string, taking care of proper newline endings.
|
16
|
+
*/
|
17
|
+
export declare const asString: (template: Template) => string;
|
18
|
+
/**
|
19
|
+
* @returns {function} - a function to instantiate a function to indent a sub-template.
|
20
|
+
* The function always returns an array of strings.
|
21
|
+
*
|
22
|
+
* Its usage looks as follows:
|
23
|
+
* <pre>
|
24
|
+
* indentWith(" ")(2)([
|
25
|
+
* `this is indented 2 levels`
|
26
|
+
* ])
|
27
|
+
* </pre>
|
28
|
+
*
|
29
|
+
* Usually, one sets up the following function constant before:
|
30
|
+
* <pre>
|
31
|
+
* const indent = indentWith(" ")
|
32
|
+
* </pre>
|
33
|
+
*/
|
34
|
+
export declare const indentWith: (singleIndentation: string) => (indentLevel?: number) => TemplateFunction<string[]>;
|
35
|
+
/**
|
36
|
+
* Allows for the following syntax:
|
37
|
+
* <pre>
|
38
|
+
* [
|
39
|
+
* when(<some boolean condition>)(
|
40
|
+
* <stuff to include when boolean condition is true>
|
41
|
+
* )
|
42
|
+
* ]
|
43
|
+
* </pre>
|
44
|
+
*
|
45
|
+
* and
|
46
|
+
*
|
47
|
+
* <pre>
|
48
|
+
* [
|
49
|
+
* when(<some boolean condition>)(
|
50
|
+
* () => <stuff to include when boolean condition is true>
|
51
|
+
* )
|
52
|
+
* ]
|
53
|
+
* </pre>
|
54
|
+
*
|
55
|
+
* In the latter case, it's guaranteed that the thunk ({@see https://en.wikipedia.org/wiki/Thunk})
|
56
|
+
* is only evaluated (/run) when the boolean condition is true.
|
57
|
+
* That is useful in case the stuff to include produces side effects.
|
58
|
+
*/
|
59
|
+
export declare const when: (bool: boolean) => (whenResult: (() => Template) | Template) => Template;
|
60
|
+
/**
|
61
|
+
* @return a function that composes the given template function with the action of "adding a newline after".
|
62
|
+
*/
|
63
|
+
export declare const withNewlineAppended: <T>(templateFunc: (t: T) => Template) => (t: T) => Template[];
|
64
|
+
/**
|
65
|
+
* @return the given array of strings but with commas added after each string except the last one.
|
66
|
+
*/
|
67
|
+
export declare const commaSeparated: (strings: string[]) => string[];
|
12
68
|
export {};
|
13
69
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;AAE/C;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAA;AAGnC,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,KAAK,CAAC,CAAA;AA6B7C;;GAEG;AACH,eAAO,MAAM,QAAQ,aAdN,QAAQ,WAc2F,CAAA;AAoBlH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,UAAU,sBAAuB,MAAM,oBAClC,MAAM,KAAO,gBAAgB,CAAC,MAAM,EAAE,CAInD,CAAA;AAGL;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,IAAI,SAAU,OAAO,kBAEX,CAAC,MAAM,QAAQ,CAAC,GAAG,QAAQ,aAIQ,CAAA;AAG1D;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,SAC/D,CAAC,eAA0B,CAAA;AAGnC;;GAEG;AACH,eAAO,MAAM,cAAc,YAAa,MAAM,EAAE,aACiC,CAAA"}
|
package/dist/index.js
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
"use strict";
|
2
1
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
3
2
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
4
3
|
if (ar || !(i in from)) {
|
@@ -8,32 +7,35 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
8
7
|
}
|
9
8
|
return to.concat(ar || Array.prototype.slice.call(from));
|
10
9
|
};
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
-
exports.indentWith = exports.asString = void 0;
|
13
10
|
/**
|
14
11
|
* Polyfill/shim for ES2019's Array.prototype.flat(..).
|
15
12
|
*/
|
16
|
-
var flatten = function (
|
17
|
-
return Array.isArray(
|
18
|
-
?
|
19
|
-
: [
|
13
|
+
var flatten = function (template) {
|
14
|
+
return Array.isArray(template)
|
15
|
+
? template.map(flatten).reduce(function (arrL, arrR) { return __spreadArray(__spreadArray([], arrL, true), arrR, true); }, [])
|
16
|
+
: [template];
|
20
17
|
};
|
21
18
|
/**
|
22
19
|
* @returns {function(*=): *} - a function that maps over a single string using mapString, or an array of strings using mapStrings.
|
23
20
|
* If an array is given, that array is completely (i.e.: recursively) flattened first, before the mapStrings function is applied.
|
21
|
+
* (This function is only used internally.)
|
24
22
|
*/
|
25
23
|
var mapNestedString = function (mapString, mapStrings) {
|
26
|
-
return function (
|
27
|
-
return Array.isArray(
|
28
|
-
? mapStrings(flatten(
|
29
|
-
: mapString(
|
24
|
+
return function (template) {
|
25
|
+
return Array.isArray(template)
|
26
|
+
? mapStrings(flatten(template))
|
27
|
+
: mapString(template);
|
30
28
|
};
|
31
29
|
};
|
32
|
-
var withNewlineEnsured = function (str) {
|
30
|
+
var withNewlineEnsured = function (str) {
|
31
|
+
return str.charAt(str.length - 1) === '\n'
|
32
|
+
? str
|
33
|
+
: (str + "\n");
|
34
|
+
};
|
33
35
|
/**
|
34
|
-
* @returns {string} - the given
|
36
|
+
* @returns {string} - the given template joined as one string, taking care of proper newline endings.
|
35
37
|
*/
|
36
|
-
|
38
|
+
export var asString = mapNestedString(withNewlineEnsured, function (strings) { return strings.map(withNewlineEnsured).join(""); });
|
37
39
|
/**
|
38
40
|
* Polyfill/shim for ES2015's String.prototype.repeat which doesn't work for some reason in the test...
|
39
41
|
*/
|
@@ -51,14 +53,72 @@ var repeat = function (str, n) {
|
|
51
53
|
return result;
|
52
54
|
};
|
53
55
|
/**
|
54
|
-
* @returns {function} - a function to instantiate a function to indent a
|
55
|
-
* The function always returns strings.
|
56
|
+
* @returns {function} - a function to instantiate a function to indent a sub-template.
|
57
|
+
* The function always returns an array of strings.
|
58
|
+
*
|
59
|
+
* Its usage looks as follows:
|
60
|
+
* <pre>
|
61
|
+
* indentWith(" ")(2)([
|
62
|
+
* `this is indented 2 levels`
|
63
|
+
* ])
|
64
|
+
* </pre>
|
65
|
+
*
|
66
|
+
* Usually, one sets up the following function constant before:
|
67
|
+
* <pre>
|
68
|
+
* const indent = indentWith(" ")
|
69
|
+
* </pre>
|
56
70
|
*/
|
57
|
-
var indentWith = function (singleIndentation) {
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
}; };
|
63
|
-
|
71
|
+
export var indentWith = function (singleIndentation) {
|
72
|
+
return function (indentLevel) {
|
73
|
+
if (indentLevel === void 0) { indentLevel = 1; }
|
74
|
+
var indentationPrefix = repeat(singleIndentation, indentLevel);
|
75
|
+
var indentLine = function (str) { return str.split("\n").map(function (line) { return (line.length > 0 ? indentationPrefix : "") + line; }).join("\n"); };
|
76
|
+
return mapNestedString(function (string) { return [indentLine(string)]; }, function (strings) { return strings.map(indentLine); });
|
77
|
+
};
|
78
|
+
};
|
79
|
+
/**
|
80
|
+
* Allows for the following syntax:
|
81
|
+
* <pre>
|
82
|
+
* [
|
83
|
+
* when(<some boolean condition>)(
|
84
|
+
* <stuff to include when boolean condition is true>
|
85
|
+
* )
|
86
|
+
* ]
|
87
|
+
* </pre>
|
88
|
+
*
|
89
|
+
* and
|
90
|
+
*
|
91
|
+
* <pre>
|
92
|
+
* [
|
93
|
+
* when(<some boolean condition>)(
|
94
|
+
* () => <stuff to include when boolean condition is true>
|
95
|
+
* )
|
96
|
+
* ]
|
97
|
+
* </pre>
|
98
|
+
*
|
99
|
+
* In the latter case, it's guaranteed that the thunk ({@see https://en.wikipedia.org/wiki/Thunk})
|
100
|
+
* is only evaluated (/run) when the boolean condition is true.
|
101
|
+
* That is useful in case the stuff to include produces side effects.
|
102
|
+
*/
|
103
|
+
export var when = function (bool) {
|
104
|
+
return bool
|
105
|
+
? function (whenResult) {
|
106
|
+
return typeof whenResult === "function"
|
107
|
+
? whenResult()
|
108
|
+
: whenResult;
|
109
|
+
}
|
110
|
+
: function (_whenResult) { return []; };
|
111
|
+
};
|
112
|
+
/**
|
113
|
+
* @return a function that composes the given template function with the action of "adding a newline after".
|
114
|
+
*/
|
115
|
+
export var withNewlineAppended = function (templateFunc) {
|
116
|
+
return function (t) { return [templateFunc(t), ""]; };
|
117
|
+
};
|
118
|
+
/**
|
119
|
+
* @return the given array of strings but with commas added after each string except the last one.
|
120
|
+
*/
|
121
|
+
export var commaSeparated = function (strings) {
|
122
|
+
return strings.map(function (str, index) { return "".concat(str).concat(index + 1 < strings.length ? "," : ""); });
|
123
|
+
};
|
64
124
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
{
|
2
2
|
"name": "littoral-templates",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.3.0",
|
4
4
|
"description": "A small JavaScript/TypeScript framework to do templating comfortably using the template literal syntax in either JavaScript or TypeScript.",
|
5
|
+
"type": "module",
|
5
6
|
"main": "dist/index.js",
|
6
7
|
"types": "dist/index.d.ts",
|
7
8
|
"scripts": {
|
@@ -27,12 +28,12 @@
|
|
27
28
|
},
|
28
29
|
"homepage": "https://github.com/dslmeinte/littoral-templates#readme",
|
29
30
|
"devDependencies": {
|
30
|
-
"@types/chai": "
|
31
|
-
"@types/mocha": "
|
32
|
-
"@types/node": "
|
33
|
-
"chai": "
|
34
|
-
"mocha": "
|
35
|
-
"npm-run-all": "
|
36
|
-
"typescript": "
|
31
|
+
"@types/chai": "5.0.1",
|
32
|
+
"@types/mocha": "10.0.9",
|
33
|
+
"@types/node": "18.19.64",
|
34
|
+
"chai": "5.1.2",
|
35
|
+
"mocha": "10.8.2",
|
36
|
+
"npm-run-all": "4.1.5",
|
37
|
+
"typescript": "5.6.3"
|
37
38
|
}
|
38
39
|
}
|