plainb 1.1.0 → 1.3.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 +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -1
- package/dist/parseMystMd.d.ts.map +1 -1
- package/dist/parseMystMd.js +1 -11
- package/dist/parseMystMd.js.map +1 -1
- package/dist/parsePy.d.ts.map +1 -1
- package/dist/parsePy.js +19 -4
- package/dist/parsePy.js.map +1 -1
- package/dist/parseSphinxGallery.d.ts.map +1 -1
- package/dist/parseSphinxGallery.js +16 -3
- package/dist/parseSphinxGallery.js.map +1 -1
- package/dist/toClassicMd.d.ts +14 -0
- package/dist/toClassicMd.d.ts.map +1 -0
- package/dist/toClassicMd.js +34 -0
- package/dist/toClassicMd.js.map +1 -0
- package/dist/toMystMd.d.ts +11 -0
- package/dist/toMystMd.d.ts.map +1 -0
- package/dist/toMystMd.js +54 -0
- package/dist/toMystMd.js.map +1 -0
- package/dist/toPy.d.ts +11 -0
- package/dist/toPy.d.ts.map +1 -0
- package/dist/toPy.js +56 -0
- package/dist/toPy.js.map +1 -0
- package/dist/toSphinxGallery.d.ts +13 -0
- package/dist/toSphinxGallery.d.ts.map +1 -0
- package/dist/toSphinxGallery.js +67 -0
- package/dist/toSphinxGallery.js.map +1 -0
- package/dist/utils.d.ts +8 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +26 -0
- package/dist/utils.js.map +1 -0
- package/package.json +3 -3
package/README.md
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,11 @@ export * from "./parseClassicMd";
|
|
|
4
4
|
export * from "./parseMystMd";
|
|
5
5
|
export * from "./parseSphinxGallery";
|
|
6
6
|
export * from "./notebook";
|
|
7
|
+
export * from "./toPy";
|
|
8
|
+
export * from "./toClassicMd";
|
|
9
|
+
export * from "./toMystMd";
|
|
10
|
+
export * from "./toSphinxGallery";
|
|
7
11
|
import type { Notebook } from "./notebook";
|
|
8
12
|
export declare function parse(text: string, format: "py" | "md" | "sphinx-gallery"): Notebook;
|
|
13
|
+
export declare function serialize(notebook: Notebook, format: "py" | "md" | "sphinx-gallery"): string;
|
|
9
14
|
//# 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,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAQlC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,gBAAgB,GAAG,QAAQ,CAKpF;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,gBAAgB,GAAG,MAAM,CAK5F"}
|
package/dist/index.js
CHANGED
|
@@ -4,9 +4,16 @@ export * from "./parseClassicMd";
|
|
|
4
4
|
export * from "./parseMystMd";
|
|
5
5
|
export * from "./parseSphinxGallery";
|
|
6
6
|
export * from "./notebook";
|
|
7
|
+
export * from "./toPy";
|
|
8
|
+
export * from "./toClassicMd";
|
|
9
|
+
export * from "./toMystMd";
|
|
10
|
+
export * from "./toSphinxGallery";
|
|
7
11
|
import { parsePy } from "./parsePy";
|
|
8
12
|
import { parseMd } from "./parseMd";
|
|
9
13
|
import { parseSphinxGallery } from "./parseSphinxGallery";
|
|
14
|
+
import { toPy } from "./toPy";
|
|
15
|
+
import { toMystMd } from "./toMystMd";
|
|
16
|
+
import { toSphinxGallery } from "./toSphinxGallery";
|
|
10
17
|
export function parse(text, format) {
|
|
11
18
|
if (format === "py")
|
|
12
19
|
return parsePy(text);
|
|
@@ -16,4 +23,13 @@ export function parse(text, format) {
|
|
|
16
23
|
return parseSphinxGallery(text);
|
|
17
24
|
throw new Error(`Unknown format: "${format}". Expected "py", "md", or "sphinx-gallery".`);
|
|
18
25
|
}
|
|
26
|
+
export function serialize(notebook, format) {
|
|
27
|
+
if (format === "py")
|
|
28
|
+
return toPy(notebook);
|
|
29
|
+
if (format === "md")
|
|
30
|
+
return toMystMd(notebook);
|
|
31
|
+
if (format === "sphinx-gallery")
|
|
32
|
+
return toSphinxGallery(notebook);
|
|
33
|
+
throw new Error(`Unknown format: "${format}". Expected "py", "md", or "sphinx-gallery".`);
|
|
34
|
+
}
|
|
19
35
|
//# 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":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,MAAM,UAAU,KAAK,CAAC,IAAY,EAAE,MAAsC;IACxE,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,MAAM,KAAK,gBAAgB;QAAE,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,8CAA8C,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAkB,EAAE,MAAsC;IAClF,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,MAAM,KAAK,gBAAgB;QAAE,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClE,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,8CAA8C,CAAC,CAAC;AAC5F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseMystMd.d.ts","sourceRoot":"","sources":["../src/parseMystMd.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"parseMystMd.d.ts","sourceRoot":"","sources":["../src/parseMystMd.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,YAAY,CAAC;AA6EpB,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAmIlD"}
|
package/dist/parseMystMd.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { codeCell, markdownCell, rawCell, makeNotebook, } from "./notebook";
|
|
2
|
+
import { parseFrontMatter } from "./utils";
|
|
2
3
|
// ---------------------------------------------------------------------------
|
|
3
4
|
// MyST notebook format parser
|
|
4
5
|
// Handles {code-cell}, {raw-cell}, {markdown-cell} directives
|
|
@@ -62,17 +63,6 @@ function parseOptions(lines) {
|
|
|
62
63
|
}
|
|
63
64
|
return result;
|
|
64
65
|
}
|
|
65
|
-
/** Parse notebook-level YAML front matter (---...---) into a plain object.
|
|
66
|
-
* Only handles flat key: value pairs — sufficient for kernelspec. */
|
|
67
|
-
function parseFrontMatter(yamlLines) {
|
|
68
|
-
const result = {};
|
|
69
|
-
for (const line of yamlLines) {
|
|
70
|
-
const m = line.match(/^([\w-]+):\s*(.*)/);
|
|
71
|
-
if (m)
|
|
72
|
-
result[m[1]] = m[2].trim();
|
|
73
|
-
}
|
|
74
|
-
return result;
|
|
75
|
-
}
|
|
76
66
|
function stripTrailingBlank(lines) {
|
|
77
67
|
let end = lines.length;
|
|
78
68
|
while (end > 0 && lines[end - 1].trim() === "")
|
package/dist/parseMystMd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseMystMd.js","sourceRoot":"","sources":["../src/parseMystMd.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,YAAY,GAGb,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"parseMystMd.js","sourceRoot":"","sources":["../src/parseMystMd.ts"],"names":[],"mappings":"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"}
|
package/dist/parsePy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsePy.d.ts","sourceRoot":"","sources":["../src/parsePy.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"parsePy.d.ts","sourceRoot":"","sources":["../src/parsePy.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,YAAY,CAAC;AA6EpB,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CA0D9C"}
|
package/dist/parsePy.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { codeCell, markdownCell, rawCell, makeNotebook, } from "./notebook";
|
|
2
|
+
import { parseFrontMatter } from "./utils";
|
|
2
3
|
// ---------------------------------------------------------------------------
|
|
3
4
|
// Percent format parser
|
|
4
5
|
// ---------------------------------------------------------------------------
|
|
@@ -68,19 +69,33 @@ export function parsePy(text) {
|
|
|
68
69
|
const lines = text.replace(/\r\n/g, "\n").split("\n");
|
|
69
70
|
const cells = [];
|
|
70
71
|
const used = new Set();
|
|
72
|
+
let notebookMeta = {};
|
|
73
|
+
// Check for commented YAML front matter at the top
|
|
74
|
+
let i = 0;
|
|
75
|
+
if (lines[0] === "# ---") {
|
|
76
|
+
i = 1;
|
|
77
|
+
const fmLines = [];
|
|
78
|
+
while (i < lines.length && lines[i] !== "# ---") {
|
|
79
|
+
fmLines.push(lines[i].replace(/^#\s?/, ""));
|
|
80
|
+
i++;
|
|
81
|
+
}
|
|
82
|
+
i++; // skip closing # ---
|
|
83
|
+
notebookMeta = parseFrontMatter(fmLines);
|
|
84
|
+
}
|
|
71
85
|
// Find all delimiter positions
|
|
86
|
+
const contentStart = i;
|
|
72
87
|
const delimiters = [];
|
|
73
|
-
for (
|
|
88
|
+
for (; i < lines.length; i++) {
|
|
74
89
|
const m = lines[i].match(DELIMITER_RE);
|
|
75
90
|
if (m)
|
|
76
91
|
delimiters.push({ idx: i, rest: m[1] });
|
|
77
92
|
}
|
|
78
93
|
if (delimiters.length === 0) {
|
|
79
94
|
// No delimiters — entire file is one code cell
|
|
80
|
-
const source = lines.join("\n");
|
|
95
|
+
const source = lines.slice(contentStart).join("\n");
|
|
81
96
|
if (source.trim())
|
|
82
97
|
cells.push(codeCell(source, {}, used));
|
|
83
|
-
return makeNotebook(cells);
|
|
98
|
+
return makeNotebook(cells, notebookMeta);
|
|
84
99
|
}
|
|
85
100
|
for (let d = 0; d < delimiters.length; d++) {
|
|
86
101
|
const start = delimiters[d].idx + 1;
|
|
@@ -104,6 +119,6 @@ export function parsePy(text) {
|
|
|
104
119
|
}
|
|
105
120
|
}
|
|
106
121
|
}
|
|
107
|
-
return makeNotebook(cells);
|
|
122
|
+
return makeNotebook(cells, notebookMeta);
|
|
108
123
|
}
|
|
109
124
|
//# sourceMappingURL=parsePy.js.map
|
package/dist/parsePy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsePy.js","sourceRoot":"","sources":["../src/parsePy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,YAAY,GAGb,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"parsePy.js","sourceRoot":"","sources":["../src/parsePy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseSphinxGallery.d.ts","sourceRoot":"","sources":["../src/parseSphinxGallery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmD,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"parseSphinxGallery.d.ts","sourceRoot":"","sources":["../src/parseSphinxGallery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmD,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAmH5F,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAqEzD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { codeCell, markdownCell, makeNotebook } from "./notebook";
|
|
2
|
+
import { parseFrontMatter } from "./utils";
|
|
2
3
|
// ---------------------------------------------------------------------------
|
|
3
4
|
// RST helpers
|
|
4
5
|
// ---------------------------------------------------------------------------
|
|
@@ -102,16 +103,28 @@ export function parseSphinxGallery(text) {
|
|
|
102
103
|
const lines = text.replace(/\r\n/g, "\n").split("\n");
|
|
103
104
|
const cells = [];
|
|
104
105
|
const used = new Set();
|
|
106
|
+
let notebookMeta = {};
|
|
105
107
|
let i = 0;
|
|
108
|
+
// Check for commented YAML front matter at the top
|
|
109
|
+
if (lines[0] === "# ---") {
|
|
110
|
+
i = 1;
|
|
111
|
+
const fmLines = [];
|
|
112
|
+
while (i < lines.length && lines[i] !== "# ---") {
|
|
113
|
+
fmLines.push(lines[i].replace(/^#\s?/, ""));
|
|
114
|
+
i++;
|
|
115
|
+
}
|
|
116
|
+
i++; // skip closing # ---
|
|
117
|
+
notebookMeta = parseFrontMatter(fmLines);
|
|
118
|
+
}
|
|
106
119
|
// 1. Module docstring → first markdown cell
|
|
107
|
-
const ds = extractDocstring(lines);
|
|
120
|
+
const ds = extractDocstring(lines.slice(i));
|
|
108
121
|
if (ds) {
|
|
109
122
|
const raw = ds.content.split("\n");
|
|
110
123
|
const converted = rstHeadingsToMd(raw).map(substituteRstRoles);
|
|
111
124
|
const trimmed = stripTrailingBlank(stripLeadingBlank(converted)).join("\n");
|
|
112
125
|
if (trimmed)
|
|
113
126
|
cells.push(markdownCell(trimmed, {}, used));
|
|
114
|
-
i
|
|
127
|
+
i += ds.end;
|
|
115
128
|
}
|
|
116
129
|
// 2. Skip lines before first # %% (authors, SPDX, blanks)
|
|
117
130
|
while (i < lines.length && !DELIMITER_RE.test(lines[i]))
|
|
@@ -148,6 +161,6 @@ export function parseSphinxGallery(text) {
|
|
|
148
161
|
cells.push(codeCell(codeLines.join("\n"), {}, used));
|
|
149
162
|
}
|
|
150
163
|
}
|
|
151
|
-
return makeNotebook(cells);
|
|
164
|
+
return makeNotebook(cells, notebookMeta);
|
|
152
165
|
}
|
|
153
166
|
//# sourceMappingURL=parseSphinxGallery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseSphinxGallery.js","sourceRoot":"","sources":["../src/parseSphinxGallery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAA4B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"parseSphinxGallery.js","sourceRoot":"","sources":["../src/parseSphinxGallery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Notebook } from "./notebook";
|
|
2
|
+
/**
|
|
3
|
+
* Serialize a `Notebook` to classic Markdown format.
|
|
4
|
+
*
|
|
5
|
+
* - Markdown cells → raw text
|
|
6
|
+
* - Code cells → fenced code block (`` ```language ```)
|
|
7
|
+
* - Raw cells are omitted (no representation in classic Markdown)
|
|
8
|
+
*
|
|
9
|
+
* Cell metadata is not preserved — the classic format carries no metadata.
|
|
10
|
+
*
|
|
11
|
+
* @param language Fence language tag for code cells. Defaults to `"python"`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function toClassicMd(notebook: Notebook, language?: string): string;
|
|
14
|
+
//# sourceMappingURL=toClassicMd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toClassicMd.d.ts","sourceRoot":"","sources":["../src/toClassicMd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAU3C;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,SAAW,GAAG,MAAM,CAe3E"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Notebook → Classic Markdown serializer
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
function joinSource(source) {
|
|
5
|
+
return source.join("");
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Serialize a `Notebook` to classic Markdown format.
|
|
9
|
+
*
|
|
10
|
+
* - Markdown cells → raw text
|
|
11
|
+
* - Code cells → fenced code block (`` ```language ```)
|
|
12
|
+
* - Raw cells are omitted (no representation in classic Markdown)
|
|
13
|
+
*
|
|
14
|
+
* Cell metadata is not preserved — the classic format carries no metadata.
|
|
15
|
+
*
|
|
16
|
+
* @param language Fence language tag for code cells. Defaults to `"python"`.
|
|
17
|
+
*/
|
|
18
|
+
export function toClassicMd(notebook, language = "python") {
|
|
19
|
+
const parts = [];
|
|
20
|
+
for (const cell of notebook.cells) {
|
|
21
|
+
if (cell.cell_type === "markdown") {
|
|
22
|
+
const src = joinSource(cell.source);
|
|
23
|
+
if (src)
|
|
24
|
+
parts.push(src);
|
|
25
|
+
}
|
|
26
|
+
else if (cell.cell_type === "code") {
|
|
27
|
+
const src = joinSource(cell.source);
|
|
28
|
+
parts.push(`\`\`\`${language}\n${src}\n\`\`\``);
|
|
29
|
+
}
|
|
30
|
+
// raw cells: no representation in classic Markdown
|
|
31
|
+
}
|
|
32
|
+
return parts.join("\n\n") + "\n";
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=toClassicMd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toClassicMd.js","sourceRoot":"","sources":["../src/toClassicMd.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,yCAAyC;AACzC,8EAA8E;AAE9E,SAAS,UAAU,CAAC,MAAgB;IAClC,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,QAAkB,EAAE,QAAQ,GAAG,QAAQ;IACjE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,GAAG;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,SAAS,QAAQ,KAAK,GAAG,UAAU,CAAC,CAAC;QAClD,CAAC;QACD,mDAAmD;IACrD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Notebook } from "./notebook";
|
|
2
|
+
/**
|
|
3
|
+
* Serialize a `Notebook` to MyST Notebook Markdown.
|
|
4
|
+
*
|
|
5
|
+
* - Notebook metadata → YAML front matter (`---...---`)
|
|
6
|
+
* - Markdown cells → plain text separated by `+++` (with JSON metadata inline)
|
|
7
|
+
* - Code cells → ` ```{code-cell} ` directive with shorthand options
|
|
8
|
+
* - Raw cells → ` ```{raw-cell} ` directive with shorthand options
|
|
9
|
+
*/
|
|
10
|
+
export declare function toMystMd(notebook: Notebook): string;
|
|
11
|
+
//# sourceMappingURL=toMystMd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toMystMd.d.ts","sourceRoot":"","sources":["../src/toMystMd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAgB3C;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAkCnD"}
|
package/dist/toMystMd.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Notebook → MyST Markdown serializer
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
function joinSource(source) {
|
|
5
|
+
return source.join("");
|
|
6
|
+
}
|
|
7
|
+
function serializeOptions(meta) {
|
|
8
|
+
return Object.entries(meta).map(([key, val]) => typeof val === "string" ? `:${key}: ${val}` : `:${key}: ${JSON.stringify(val)}`);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Serialize a `Notebook` to MyST Notebook Markdown.
|
|
12
|
+
*
|
|
13
|
+
* - Notebook metadata → YAML front matter (`---...---`)
|
|
14
|
+
* - Markdown cells → plain text separated by `+++` (with JSON metadata inline)
|
|
15
|
+
* - Code cells → ` ```{code-cell} ` directive with shorthand options
|
|
16
|
+
* - Raw cells → ` ```{raw-cell} ` directive with shorthand options
|
|
17
|
+
*/
|
|
18
|
+
export function toMystMd(notebook) {
|
|
19
|
+
const parts = [];
|
|
20
|
+
if (Object.keys(notebook.metadata).length > 0) {
|
|
21
|
+
const lines = Object.entries(notebook.metadata).map(([k, v]) => {
|
|
22
|
+
const valStr = typeof v === "object" && v !== null ? JSON.stringify(v) : v;
|
|
23
|
+
return `${k}: ${valStr}`;
|
|
24
|
+
});
|
|
25
|
+
parts.push(`---\n${lines.join("\n")}\n---`);
|
|
26
|
+
}
|
|
27
|
+
for (const cell of notebook.cells) {
|
|
28
|
+
if (cell.cell_type === "markdown") {
|
|
29
|
+
const hasMeta = Object.keys(cell.metadata).length > 0;
|
|
30
|
+
if (parts.length > 0 || hasMeta) {
|
|
31
|
+
const metaStr = hasMeta ? ` ${JSON.stringify(cell.metadata)}` : "";
|
|
32
|
+
parts.push(`+++${metaStr}`);
|
|
33
|
+
}
|
|
34
|
+
const src = joinSource(cell.source);
|
|
35
|
+
if (src)
|
|
36
|
+
parts.push(src);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
const directive = cell.cell_type === "code" ? "code-cell" : "raw-cell";
|
|
40
|
+
const lines = [`\`\`\`{${directive}}`];
|
|
41
|
+
const optionLines = serializeOptions(cell.metadata);
|
|
42
|
+
lines.push(...optionLines);
|
|
43
|
+
if (optionLines.length > 0)
|
|
44
|
+
lines.push("");
|
|
45
|
+
const src = joinSource(cell.source);
|
|
46
|
+
if (src)
|
|
47
|
+
lines.push(src);
|
|
48
|
+
lines.push("```");
|
|
49
|
+
parts.push(lines.join("\n"));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return parts.join("\n\n") + "\n";
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=toMystMd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toMystMd.js","sourceRoot":"","sources":["../src/toMystMd.ts"],"names":[],"mappings":"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"}
|
package/dist/toPy.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Notebook } from "./notebook";
|
|
2
|
+
/**
|
|
3
|
+
* Serialize a `Notebook` to the Python percent format (VS Code / Spyder / Jupytext).
|
|
4
|
+
*
|
|
5
|
+
* - Code cells → `# %%` delimiter + bare source
|
|
6
|
+
* - Markdown cells → `# %% [markdown]` delimiter + `# `-prefixed lines
|
|
7
|
+
* - Raw cells → `# %% [raw]` delimiter + `# `-prefixed lines
|
|
8
|
+
* - Cell name and tags from metadata are encoded in the delimiter line
|
|
9
|
+
*/
|
|
10
|
+
export declare function toPy(notebook: Notebook): string;
|
|
11
|
+
//# sourceMappingURL=toPy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toPy.d.ts","sourceRoot":"","sources":["../src/toPy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA6B3C;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAuB/C"}
|
package/dist/toPy.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Notebook → Python percent format serializer
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
function joinSource(source) {
|
|
5
|
+
return source.join("");
|
|
6
|
+
}
|
|
7
|
+
/** Prefix each line with `# ` (empty lines become bare `#`). */
|
|
8
|
+
function commentLines(text) {
|
|
9
|
+
return text
|
|
10
|
+
.split("\n")
|
|
11
|
+
.map((line) => (line === "" ? "#" : `# ${line}`))
|
|
12
|
+
.join("\n");
|
|
13
|
+
}
|
|
14
|
+
function buildDelimiter(cellType, meta) {
|
|
15
|
+
const parts = ["# %%"];
|
|
16
|
+
if (cellType === "markdown")
|
|
17
|
+
parts.push("[markdown]");
|
|
18
|
+
else if (cellType === "raw")
|
|
19
|
+
parts.push("[raw]");
|
|
20
|
+
if (typeof meta.name === "string" && meta.name)
|
|
21
|
+
parts.push(meta.name);
|
|
22
|
+
if (Array.isArray(meta.tags) && meta.tags.length > 0) {
|
|
23
|
+
parts.push(`tags='${JSON.stringify(meta.tags)}'`);
|
|
24
|
+
}
|
|
25
|
+
return parts.join(" ");
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Serialize a `Notebook` to the Python percent format (VS Code / Spyder / Jupytext).
|
|
29
|
+
*
|
|
30
|
+
* - Code cells → `# %%` delimiter + bare source
|
|
31
|
+
* - Markdown cells → `# %% [markdown]` delimiter + `# `-prefixed lines
|
|
32
|
+
* - Raw cells → `# %% [raw]` delimiter + `# `-prefixed lines
|
|
33
|
+
* - Cell name and tags from metadata are encoded in the delimiter line
|
|
34
|
+
*/
|
|
35
|
+
export function toPy(notebook) {
|
|
36
|
+
const parts = [];
|
|
37
|
+
if (Object.keys(notebook.metadata).length > 0) {
|
|
38
|
+
const lines = Object.entries(notebook.metadata).map(([k, v]) => {
|
|
39
|
+
const valStr = typeof v === "object" && v !== null ? JSON.stringify(v) : v;
|
|
40
|
+
return `# ${k}: ${valStr}`;
|
|
41
|
+
});
|
|
42
|
+
parts.push(`# ---\n${lines.join("\n")}\n# ---`);
|
|
43
|
+
}
|
|
44
|
+
for (const cell of notebook.cells) {
|
|
45
|
+
const delimiter = buildDelimiter(cell.cell_type, cell.metadata);
|
|
46
|
+
const src = joinSource(cell.source);
|
|
47
|
+
if (cell.cell_type === "code") {
|
|
48
|
+
parts.push(src ? `${delimiter}\n${src}` : delimiter);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
parts.push(src ? `${delimiter}\n${commentLines(src)}` : delimiter);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return parts.join("\n\n") + "\n";
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=toPy.js.map
|
package/dist/toPy.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toPy.js","sourceRoot":"","sources":["../src/toPy.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,8CAA8C;AAC9C,8EAA8E;AAE9E,SAAS,UAAU,CAAC,MAAgB;IAClC,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,gEAAgE;AAChE,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI;SACR,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;SAChD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,IAA6B;IACrE,MAAM,KAAK,GAAa,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,QAAQ,KAAK,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACjD,IAAI,QAAQ,KAAK,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAAC,QAAkB;IACrC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3E,OAAO,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEpC,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Notebook } from "./notebook";
|
|
2
|
+
/**
|
|
3
|
+
* Serialize a `Notebook` to Sphinx Gallery Python script format.
|
|
4
|
+
*
|
|
5
|
+
* - First markdown cell → module-level triple-quoted docstring
|
|
6
|
+
* - Remaining markdown cells → `# %%` section with `# `-prefixed comment block
|
|
7
|
+
* - Code cells → `# %%` section with bare source
|
|
8
|
+
* - Adjacent [markdown, code] pairs are merged into a single `# %%` section
|
|
9
|
+
* (comment block above the code), matching how `parseSphinxGallery` splits them
|
|
10
|
+
* - Raw cells are omitted
|
|
11
|
+
*/
|
|
12
|
+
export declare function toSphinxGallery(notebook: Notebook): string;
|
|
13
|
+
//# sourceMappingURL=toSphinxGallery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toSphinxGallery.d.ts","sourceRoot":"","sources":["../src/toSphinxGallery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAkB3C;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CA+C1D"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Notebook → Sphinx Gallery format serializer
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
function joinSource(source) {
|
|
5
|
+
return source.join("");
|
|
6
|
+
}
|
|
7
|
+
/** Prefix each line with `# ` (empty lines become bare `#`). */
|
|
8
|
+
function commentLines(text) {
|
|
9
|
+
return text
|
|
10
|
+
.split("\n")
|
|
11
|
+
.map((line) => (line === "" ? "#" : `# ${line}`))
|
|
12
|
+
.join("\n");
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Serialize a `Notebook` to Sphinx Gallery Python script format.
|
|
16
|
+
*
|
|
17
|
+
* - First markdown cell → module-level triple-quoted docstring
|
|
18
|
+
* - Remaining markdown cells → `# %%` section with `# `-prefixed comment block
|
|
19
|
+
* - Code cells → `# %%` section with bare source
|
|
20
|
+
* - Adjacent [markdown, code] pairs are merged into a single `# %%` section
|
|
21
|
+
* (comment block above the code), matching how `parseSphinxGallery` splits them
|
|
22
|
+
* - Raw cells are omitted
|
|
23
|
+
*/
|
|
24
|
+
export function toSphinxGallery(notebook) {
|
|
25
|
+
const parts = [];
|
|
26
|
+
if (Object.keys(notebook.metadata).length > 0) {
|
|
27
|
+
const lines = Object.entries(notebook.metadata).map(([k, v]) => {
|
|
28
|
+
const valStr = typeof v === "object" && v !== null ? JSON.stringify(v) : v;
|
|
29
|
+
return `# ${k}: ${valStr}`;
|
|
30
|
+
});
|
|
31
|
+
parts.push(`# ---\n${lines.join("\n")}\n# ---`);
|
|
32
|
+
}
|
|
33
|
+
const cells = notebook.cells.filter((c) => c.cell_type !== "raw");
|
|
34
|
+
let i = 0;
|
|
35
|
+
// First markdown cell → docstring
|
|
36
|
+
if (cells[0]?.cell_type === "markdown") {
|
|
37
|
+
const src = joinSource(cells[0].source);
|
|
38
|
+
parts.push(`"""\n${src}\n"""`);
|
|
39
|
+
i = 1;
|
|
40
|
+
}
|
|
41
|
+
while (i < cells.length) {
|
|
42
|
+
const cell = cells[i];
|
|
43
|
+
if (cell.cell_type === "markdown") {
|
|
44
|
+
const mdSrc = joinSource(cell.source);
|
|
45
|
+
const next = cells[i + 1];
|
|
46
|
+
if (next?.cell_type === "code") {
|
|
47
|
+
// Merge adjacent [markdown, code] into one section
|
|
48
|
+
const codeSrc = joinSource(next.source);
|
|
49
|
+
const section = `# %%\n${commentLines(mdSrc)}`;
|
|
50
|
+
parts.push(codeSrc ? `${section}\n\n${codeSrc}` : section);
|
|
51
|
+
i += 2;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
parts.push(`# %%\n${commentLines(mdSrc)}`);
|
|
55
|
+
i++;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// code cell
|
|
60
|
+
const src = joinSource(cell.source);
|
|
61
|
+
parts.push(`# %%\n${src}`);
|
|
62
|
+
i++;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return parts.join("\n\n") + "\n";
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=toSphinxGallery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toSphinxGallery.js","sourceRoot":"","sources":["../src/toSphinxGallery.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse a flat list of `key: value` YAML lines into a plain object.
|
|
3
|
+
* Values that look like JSON (objects, arrays, numbers, booleans) are parsed
|
|
4
|
+
* back into their native types so that nested metadata (e.g. `kernelspec`)
|
|
5
|
+
* roundtrips correctly instead of being stored as a raw string.
|
|
6
|
+
*/
|
|
7
|
+
export declare function parseFrontMatter(yamlLines: string[]): Record<string, unknown>;
|
|
8
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAc7E"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Shared utility functions
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
/**
|
|
5
|
+
* Parse a flat list of `key: value` YAML lines into a plain object.
|
|
6
|
+
* Values that look like JSON (objects, arrays, numbers, booleans) are parsed
|
|
7
|
+
* back into their native types so that nested metadata (e.g. `kernelspec`)
|
|
8
|
+
* roundtrips correctly instead of being stored as a raw string.
|
|
9
|
+
*/
|
|
10
|
+
export function parseFrontMatter(yamlLines) {
|
|
11
|
+
const result = {};
|
|
12
|
+
for (const line of yamlLines) {
|
|
13
|
+
const m = line.match(/^([\w-]+):\s*(.*)/);
|
|
14
|
+
if (m) {
|
|
15
|
+
const val = m[2].trim();
|
|
16
|
+
try {
|
|
17
|
+
result[m[1]] = JSON.parse(val);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
result[m[1]] = val;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAmB;IAClD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC1C,IAAI,CAAC,EAAE,CAAC;YACN,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "plainb",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Convert plain text (.py percent format, .md classic/MyST) to Jupyter nbformat 4 JSON",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
],
|
|
11
11
|
"repository": {
|
|
12
12
|
"type": "git",
|
|
13
|
-
"url": "https://github.com/
|
|
13
|
+
"url": "https://github.com/notebook-link/plainb"
|
|
14
14
|
},
|
|
15
|
-
"homepage": "https://github.com/
|
|
15
|
+
"homepage": "https://github.com/notebook-link/plainb",
|
|
16
16
|
"license": "MIT",
|
|
17
17
|
"scripts": {
|
|
18
18
|
"build": "tsc",
|