@platecms/delta-cast-util-to-plaintext 0.1.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/README.md +55 -0
- package/package.json +29 -0
- package/src/index.d.ts +1 -0
- package/src/index.js +5 -0
- package/src/index.js.map +1 -0
- package/src/lib/index.d.ts +2 -0
- package/src/lib/index.js +74 -0
- package/src/lib/index.js.map +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# cast-util-to-plaintext
|
|
2
|
+
|
|
3
|
+
This library is part of the [CAST]() abstract syntax tree utilities.
|
|
4
|
+
It provides a utility to convert a [CAST]() abstract syntax tree directly to plaintext.
|
|
5
|
+
|
|
6
|
+
## Usage
|
|
7
|
+
|
|
8
|
+
Using the utility `cast` to plaintext looks as follows:
|
|
9
|
+
```ts
|
|
10
|
+
/**
|
|
11
|
+
* @import {Root} from 'cast'
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import {toPlaintext} from '@platecms/delta-cast-util-to-plaintext'
|
|
15
|
+
|
|
16
|
+
/** @type {Root} */
|
|
17
|
+
const tree = [
|
|
18
|
+
{
|
|
19
|
+
type: 'paragraph',
|
|
20
|
+
children: [
|
|
21
|
+
{ text: 'Hello' }
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
type: 'heading',
|
|
26
|
+
level: 1,
|
|
27
|
+
children: [
|
|
28
|
+
{
|
|
29
|
+
type: 'bold',
|
|
30
|
+
children: [
|
|
31
|
+
{
|
|
32
|
+
type: 'text',
|
|
33
|
+
text: 'world'
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
console.info(toPlaintext(tree))
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
yields:
|
|
45
|
+
```
|
|
46
|
+
'Hello world'
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Building
|
|
50
|
+
|
|
51
|
+
Run `nx build cast-util-to-plaintext` to build the library.
|
|
52
|
+
|
|
53
|
+
## Running unit tests
|
|
54
|
+
|
|
55
|
+
Run `nx test cast-util-to-plaintext` to execute the unit tests via [Vitest](https://vitest.dev/).
|
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@platecms/delta-cast-util-to-plaintext",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Utility to convert CAST trees to plaintext.",
|
|
5
|
+
"license": "UNLICENSED",
|
|
6
|
+
"publishConfig": {
|
|
7
|
+
"access": "public"
|
|
8
|
+
},
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://bitbucket.org/startmetplate/delta.git"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://bitbucket.org/startmetplate/delta/src/dev/packages/cast-util-to-plaintext",
|
|
14
|
+
"main": "./src/index.js",
|
|
15
|
+
"types": "./src/index.d.ts",
|
|
16
|
+
"files": [
|
|
17
|
+
"src/**/*"
|
|
18
|
+
],
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@platecms/delta-cast": "0.4.8",
|
|
21
|
+
"@platecms/delta-plate-resource-notation": "1.4.1",
|
|
22
|
+
"class-transformer": "0.5.1",
|
|
23
|
+
"reflect-metadata": "0.2.2",
|
|
24
|
+
"tslib": "2.8.1",
|
|
25
|
+
"zwitch": "2.0.4",
|
|
26
|
+
"lodash": "4.17.21"
|
|
27
|
+
},
|
|
28
|
+
"type": "commonjs"
|
|
29
|
+
}
|
package/src/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./lib/index";
|
package/src/index.js
ADDED
package/src/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/cast-util-to-plaintext/src/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B"}
|
package/src/lib/index.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toPlaintext = toPlaintext;
|
|
4
|
+
const zwitch_1 = require("zwitch");
|
|
5
|
+
const separator = " ";
|
|
6
|
+
function toPlaintext(value) {
|
|
7
|
+
return all(value.children, {}).join(separator);
|
|
8
|
+
}
|
|
9
|
+
const one = (0, zwitch_1.zwitch)("type", {
|
|
10
|
+
handlers: {
|
|
11
|
+
heading,
|
|
12
|
+
list,
|
|
13
|
+
listItem,
|
|
14
|
+
blockquote,
|
|
15
|
+
code,
|
|
16
|
+
paragraph,
|
|
17
|
+
contentValue,
|
|
18
|
+
bold,
|
|
19
|
+
italic,
|
|
20
|
+
underline,
|
|
21
|
+
strikethrough,
|
|
22
|
+
text,
|
|
23
|
+
},
|
|
24
|
+
unknown: (value, _ = {}) => defaultHandler(value),
|
|
25
|
+
});
|
|
26
|
+
function all(nodes, state = {}) {
|
|
27
|
+
let index = -1;
|
|
28
|
+
const results = [];
|
|
29
|
+
while (++index < nodes.length) {
|
|
30
|
+
const result = one(nodes[index], state);
|
|
31
|
+
results.push(result);
|
|
32
|
+
}
|
|
33
|
+
return results;
|
|
34
|
+
}
|
|
35
|
+
function heading(node, state = {}) {
|
|
36
|
+
return all(node.children, state).join(separator);
|
|
37
|
+
}
|
|
38
|
+
function list(node, state = {}) {
|
|
39
|
+
return all(node.children, state).join(separator);
|
|
40
|
+
}
|
|
41
|
+
function listItem(node, state = {}) {
|
|
42
|
+
return all(node.children, state).join(separator);
|
|
43
|
+
}
|
|
44
|
+
function code(node, state = {}) {
|
|
45
|
+
return all(node.children, state).join(separator);
|
|
46
|
+
}
|
|
47
|
+
function contentValue(node) {
|
|
48
|
+
return node.value ? toPlaintext(node.value) : "";
|
|
49
|
+
}
|
|
50
|
+
function paragraph(node, state = {}) {
|
|
51
|
+
return all(node.children, state).join(separator);
|
|
52
|
+
}
|
|
53
|
+
function bold(node, state = {}) {
|
|
54
|
+
return all(node.children, state).join(separator);
|
|
55
|
+
}
|
|
56
|
+
function italic(node, state = {}) {
|
|
57
|
+
return all(node.children, state).join(separator);
|
|
58
|
+
}
|
|
59
|
+
function underline(node, state = {}) {
|
|
60
|
+
return all(node.children, state).join(separator);
|
|
61
|
+
}
|
|
62
|
+
function strikethrough(node, state = {}) {
|
|
63
|
+
return all(node.children, state).join(separator);
|
|
64
|
+
}
|
|
65
|
+
function text(node) {
|
|
66
|
+
return node.value;
|
|
67
|
+
}
|
|
68
|
+
function blockquote(node) {
|
|
69
|
+
return all(node.children).join(separator);
|
|
70
|
+
}
|
|
71
|
+
function defaultHandler(node) {
|
|
72
|
+
return `Unknown node type (${node.type})`;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/cast-util-to-plaintext/src/lib/index.ts"],"names":[],"mappings":";;AAqBA,kCAGC;AARD,mCAAgC;AAGhC,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB,SAAgB,WAAW,CAAC,KAAe;IAEzC,OAAO,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,GAAG,GAAG,IAAA,eAAM,EAAC,MAAM,EAAE;IACzB,QAAQ,EAAE;QAER,OAAO;QAEP,IAAI;QAEJ,QAAQ;QAER,UAAU;QAEV,IAAI;QAEJ,SAAS;QAET,YAAY;QAEZ,IAAI;QAEJ,MAAM;QAEN,SAAS;QAET,aAAa;QAEb,IAAI;KACL;IAED,OAAO,EAAE,CAAC,KAAc,EAAE,IAAY,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,KAAgB,CAAC;CAC9E,CAAC,CAAC;AAEH,SAAS,GAAG,CAAC,KAAgB,EAAE,QAAgB,EAAE;IAC/C,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,OAAO,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,OAAO,CAAC,IAAa,EAAE,QAAgB,EAAE;IAChD,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,IAAI,CAAC,IAAU,EAAE,QAAgB,EAAE;IAC1C,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAc,EAAE,QAAgB,EAAE;IAClD,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,IAAI,CAAC,IAAU,EAAE,QAAgB,EAAE;IAC1C,OAAO,GAAG,CAAE,IAAoC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,YAAY,CAAC,IAA8B;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,SAAS,CAAC,IAAe,EAAE,QAAgB,EAAE;IACpD,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,IAAI,CAAC,IAAU,EAAE,QAAgB,EAAE;IAC1C,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,MAAM,CAAC,IAAY,EAAE,QAAgB,EAAE;IAC9C,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,SAAS,CAAC,IAAe,EAAE,QAAgB,EAAE;IACpD,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,aAAa,CAAC,IAAmB,EAAE,QAAgB,EAAE;IAC5D,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,IAAI,CAAC,IAAU;IACtB,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC;AAED,SAAS,UAAU,CAAC,IAAgB;IAClC,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,cAAc,CAAC,IAAa;IACnC,OAAO,sBAAsB,IAAI,CAAC,IAAI,GAAG,CAAC;AAC5C,CAAC"}
|