@dendronhq/engine-server
Advanced tools
Comparing version
@@ -8,2 +8,3 @@ "use strict"; | ||
const lodash_1 = __importDefault(require("lodash")); | ||
const testUtils_1 = require("../testUtils"); | ||
function createFileLink(opts) { | ||
@@ -19,3 +20,3 @@ return { | ||
// @ts-ignore | ||
expect(utils_1.matchEmbedMarker("<!--(([[class.mba.chapters.2]]))-->")[1]).toEqual("[[class.mba.chapters.2]]"); | ||
expect(utils_1.matchRefMarker("<!--(([[class.mba.chapters.2]]))-->")[1]).toEqual("[[class.mba.chapters.2]]"); | ||
}); | ||
@@ -84,3 +85,3 @@ }); | ||
it("no anchor", () => { | ||
expect(utils_1.extractBlock(FILE_TEXT, createFileLink())).toEqual(lodash_1.default.trim(FILE_TEXT)); | ||
expect(utils_1.extractBlock(FILE_TEXT, createFileLink()).block).toEqual(lodash_1.default.trim(FILE_TEXT)); | ||
}); | ||
@@ -90,3 +91,3 @@ it("anchor start", () => { | ||
anchorStart: "Head 2.1", | ||
}))).toEqual(lodash_1.default.trim(` | ||
})).block).toEqual(lodash_1.default.trim(` | ||
## Head 2.1 | ||
@@ -108,3 +109,3 @@ | ||
anchorEnd: "Head 2.2", | ||
}))).toEqual(lodash_1.default.trim(` | ||
})).block).toEqual(lodash_1.default.trim(` | ||
## Head 2.1 | ||
@@ -119,2 +120,13 @@ | ||
}); | ||
describe("replaceRefWithMPEImport", () => { | ||
let root; | ||
beforeEach(async () => { | ||
root = await testUtils_1.setupTmpDendronDir({ copyFixtures: true }); | ||
}); | ||
it("basic", () => { | ||
expect(utils_1.replaceRefWithMPEImport("((ref:[[foo]]))", { | ||
root, | ||
})).toEqual('@import "foo.md"'); | ||
}); | ||
}); | ||
//# sourceMappingURL=utils.spec.js.map |
@@ -18,3 +18,3 @@ import { DEngineStore, DEngineStoreWriteOpts, DNodeData, DNodeRawProps, EngineQueryResp, IDNode, NoteRawProps, QueryMode, QueryOpts, SchemaRawProps, StoreGetResp, StoreQueryOpts, StoreDeleteOpts } from "@dendronhq/common-all"; | ||
isRoot(id: string): boolean; | ||
getRoot(): Promise<any>; | ||
getRoot(): Promise<Required<import("@dendronhq/common-all").DNodeRawOpts<DNodeData>>>; | ||
get(id: string, _opts?: QueryOpts): Promise<StoreGetResp>; | ||
@@ -27,3 +27,3 @@ } | ||
_getSchemaAll(): Promise<SchemaRawProps[]>; | ||
_writeFile(node: IDNode): any; | ||
_writeFile(node: IDNode): void; | ||
isQueryAll(qs: string): boolean; | ||
@@ -30,0 +30,0 @@ /** |
@@ -13,4 +13,4 @@ import { DEngine, DEngineMode, DEngineOpts, DEngineStore, DNodeData, DNodeDict, DNodeRawProps, EngineDeleteOpts, EngineGetResp, EngineQueryResp, IDNode, NodeWriteOpts, Note, NoteDict, QueryMode, QueryOneOpts, QueryOpts, Schema, SchemaDict, UpdateNodesOpts } from "@dendronhq/common-all"; | ||
export declare class DendronEngine implements DEngine { | ||
fuse: Fuse<Note, any>; | ||
schemaFuse: Fuse<Schema, any>; | ||
fuse: Fuse<Note>; | ||
schemaFuse: Fuse<Schema>; | ||
notes: NoteDict; | ||
@@ -43,3 +43,3 @@ schemas: SchemaDict; | ||
resolveIds(node: DNodeRawProps<DNodeData>, dict: DNodeDict): Promise<Note>; | ||
updateLocalCollection(collection: IDNode[], mode: QueryMode): any; | ||
updateLocalCollection(collection: IDNode[], mode: QueryMode): void; | ||
delete(idOrFname: string, mode: QueryMode, opts?: EngineDeleteOpts): Promise<void>; | ||
@@ -53,3 +53,5 @@ /** | ||
get(id: string, mode: QueryMode, opts?: QueryOpts): Promise<{ | ||
data: any; | ||
data: Schema; | ||
} | { | ||
data: Note; | ||
}>; | ||
@@ -56,0 +58,0 @@ query(queryString: string, mode: QueryMode, opts?: QueryOpts): Promise<EngineQueryResp<DNodeData>>; |
@@ -9,3 +9,9 @@ export declare type DendronRefLink = { | ||
}; | ||
export declare function extractBlock(txt: string, link: DendronRefLink): string; | ||
export declare function extractBlock(txt: string, link: DendronRefLink): { | ||
block: string; | ||
lines?: { | ||
start: number | undefined; | ||
end: number | undefined; | ||
}; | ||
}; | ||
export declare function parseDendronRef(ref: string): { | ||
@@ -16,2 +22,5 @@ direction: "to"; | ||
export declare function parseFileLink(ref: string): DendronRefLink; | ||
export declare const matchEmbedMarker: (txt: string) => RegExpMatchArray | null; | ||
export declare const matchRefMarker: (txt: string) => RegExpMatchArray | null; | ||
export declare const replaceRefWithMPEImport: (line: string, opts: { | ||
root: string; | ||
}) => string; |
@@ -6,3 +6,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.matchEmbedMarker = exports.parseFileLink = exports.parseDendronRef = exports.extractBlock = void 0; | ||
exports.replaceRefWithMPEImport = exports.matchRefMarker = exports.parseFileLink = exports.parseDendronRef = exports.extractBlock = void 0; | ||
const lodash_1 = __importDefault(require("lodash")); | ||
@@ -13,2 +13,3 @@ const path_1 = __importDefault(require("path")); | ||
const markdown_it_ast_1 = __importDefault(require("markdown-it-ast")); | ||
const common_server_1 = require("@dendronhq/common-server"); | ||
const markdownIt = markdown_it_1.default(); | ||
@@ -19,3 +20,6 @@ function genAST(txt) { | ||
} | ||
function extractBlock(txt, link) { | ||
function extractBlock(txt, link | ||
//opts?: { linesOnly?: boolean } | ||
) { | ||
// const copts = _.defaults(opts, { linesOnly: false }); | ||
const { anchorStart, anchorEnd } = link; | ||
@@ -28,3 +32,3 @@ if (link.type === "id") { | ||
if (!anchorStart) { | ||
return txt; | ||
return { block: txt }; | ||
} | ||
@@ -52,3 +56,3 @@ const ast = genAST(txt); | ||
if (lodash_1.default.isNull(out.anchorStart)) { | ||
return "invalid link"; | ||
return { block: "invalid link" }; | ||
} | ||
@@ -60,3 +64,3 @@ const start = out.anchorStart[0] - 1; | ||
const block = lodash_1.default.trim(txtAsLines.slice(start, end).join("\n")); | ||
return block; | ||
return { block, lines: { start, end } }; | ||
} | ||
@@ -151,5 +155,31 @@ } | ||
// } | ||
exports.matchEmbedMarker = (txt) => { | ||
return txt.match(/<!--\(\(([^)]+)\)\)-->/); | ||
exports.matchRefMarker = (txt) => { | ||
return txt.match(/\(\((?<ref>[^)]+)\)\)/); | ||
}; | ||
exports.replaceRefWithMPEImport = (line, opts) => { | ||
const match = exports.matchRefMarker(line); | ||
let prefix = `@import`; | ||
if (!match || !match.groups) { | ||
return line; | ||
} | ||
const ref = match.groups["ref"]; | ||
if (!ref) { | ||
return line; | ||
} | ||
const { link } = parseDendronRef(ref); | ||
// unsupported | ||
if (!link || !link.name) { | ||
return line; | ||
} | ||
const fsPath = path_1.default.join(opts.root, link.name + ".md"); | ||
prefix += ` "${link.name + ".md"}"`; | ||
if (!link.anchorStart) { | ||
return prefix; | ||
} | ||
//TODO: will be more sophisticated when multi-vault | ||
const { content } = common_server_1.readMD(fsPath); | ||
// @ts-ignore | ||
const { lines } = extractBlock(content, link); | ||
return line; | ||
}; | ||
//# sourceMappingURL=utils.js.map |
{ | ||
"name": "@dendronhq/engine-server", | ||
"version": "0.6.5", | ||
"version": "0.6.6", | ||
"description": "dendron-engine", | ||
@@ -83,4 +83,3 @@ "license": "GPLv3", | ||
"preset": "ts-jest" | ||
}, | ||
"gitHead": "2dbcba77b07d26a1bf0d86a4d5d2cf5df8da2c64" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
214369
1.42%2315
2.34%