Skip to content

Commit 64603a7

Browse files
committed
@webdoc/externalize DocumentedInterface
1 parent ce150ba commit 64603a7

File tree

5 files changed

+362
-43
lines changed

5 files changed

+362
-43
lines changed

packages/webdoc-externalize/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"main": "index.js",
1616
"directories": {
1717
"lib": "lib",
18+
"test": "__test__",
1819
"unit-test": "mocha ./test/* --require ../../scripts/configureWebdocTesting"
1920
},
2021
"files": [

packages/webdoc-externalize/pnpm-lock.yaml

Lines changed: 256 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
// @flow
2+
3+
import * as model from "@webdoc/model";
4+
import {BASE_PROPS} from "./const";
5+
import type {Doc} from "@webdoc/types";
6+
import type {DocumentedInterface} from "./types";
7+
import _ from "lodash";
8+
9+
function deserializeTree(serialized: any, parent: ?Doc): Doc {
10+
if (!parent && serialized.type !== "RootDoc") {
11+
throw new Error("Tree root must declare type RootDoc!");
12+
}
13+
14+
const doc: $Shape<Doc> = _.pick(serialized, BASE_PROPS);
15+
16+
doc.stack = parent ? [...parent.stack, doc.name] : [doc.name];
17+
18+
if (serialized.description) {
19+
doc.description = serialized.description;
20+
}
21+
if (serialized.members) {
22+
doc.members = new Array<Doc>(serialized.members.length);
23+
24+
for (let i = 0; i < serialized.members.length; i++) {
25+
doc.members[i] = deserializeTree(serialized.members[i], (doc: any));
26+
}
27+
}
28+
29+
if (parent) {
30+
model.addChildDoc(doc, parent);
31+
}
32+
33+
return (doc: any);
34+
}
35+
36+
/**
37+
* Reads the serialized documented interface from a JSON string.
38+
*
39+
* @param {string} data
40+
* @return {RootDoc}
41+
*/
42+
export default function read(data: string): DocumentedInterface {
43+
const documentedInterface = (JSON.parse(data): any);
44+
45+
if (!("version" in documentedInterface)) {
46+
return ({
47+
version: "0.0.0",
48+
metadata: {},
49+
root: (deserializeTree(documentedInterface.root, null): any),
50+
registry: {},
51+
}: DocumentedInterface);
52+
}
53+
54+
return {
55+
version: documentedInterface.version,
56+
metadata: documentedInterface.metadata,
57+
root: (deserializeTree(documentedInterface.root, null): any),
58+
registry: {},
59+
};
60+
}

packages/webdoc-externalize/src/readDoctree.js

Lines changed: 0 additions & 43 deletions
This file was deleted.

0 commit comments

Comments
 (0)