10 Commits

Author SHA1 Message Date
3553ced719 0.1.8 2023-05-07 17:20:08 -07:00
715451f02f fix frontmatter parse flag 2023-05-07 17:19:55 -07:00
b2de8df538 0.1.7 2023-05-06 15:21:35 -07:00
25ae8b0bcb remove console.log 2023-05-06 15:21:31 -07:00
b5a427d669 0.1.6 2023-05-06 14:09:10 -07:00
455915dd98 readme 2023-05-06 14:08:59 -07:00
90f8c11288 0.1.5 2023-05-06 14:07:18 -07:00
4ceff93214 updates to frontmatter handling 2023-05-06 14:07:15 -07:00
a2866cade6 0.1.4 2023-05-06 14:05:00 -07:00
48041b5845 fix main declaration 2023-05-06 14:04:56 -07:00
5 changed files with 41 additions and 32 deletions

39
package-lock.json generated
View File

@@ -1,10 +1,12 @@
{ {
"name": "markdown-to-html", "name": "@doc-utils/markdown2html",
"version": "0.1.8",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "markdown-to-html", "name": "@doc-utils/markdown2html",
"version": "0.1.8",
"dependencies": { "dependencies": {
"bytefield-svg": "^1.6.1", "bytefield-svg": "^1.6.1",
"dompurify": "^2.3.6", "dompurify": "^2.3.6",
@@ -18,6 +20,9 @@
"vega": "^5.22.1", "vega": "^5.22.1",
"yaml": "^2.2.2" "yaml": "^2.2.2"
}, },
"bin": {
"markdown2html": "bin/markdown2html"
},
"devDependencies": { "devDependencies": {
"@types/dompurify": "^2.3.3", "@types/dompurify": "^2.3.3",
"@types/jsdom": "^20.0.0", "@types/jsdom": "^20.0.0",
@@ -28,8 +33,7 @@
"@types/prismjs": "^1.26.0", "@types/prismjs": "^1.26.0",
"@types/qrcode": "^1.5.0", "@types/qrcode": "^1.5.0",
"typescript": "^5.0.4" "typescript": "^5.0.4"
}, }
"version": "0.1.3"
}, },
"node_modules/@tootallnate/once": { "node_modules/@tootallnate/once": {
"version": "2.0.0", "version": "2.0.0",
@@ -82,15 +86,15 @@
"dev": true "dev": true
}, },
"node_modules/@types/marked": { "node_modules/@types/marked": {
"version": "4.0.8", "version": "4.3.0",
"resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.0.8.tgz", "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.3.0.tgz",
"integrity": "sha512-HVNzMT5QlWCOdeuBsgXP8EZzKUf0+AXzN+sLmjvaB3ZlLqO+e4u0uXrdw9ub69wBKFs+c6/pA4r9sy6cCDvImw==", "integrity": "sha512-zK4gSFMjgslsv5Lyvr3O1yCjgmnE4pr8jbG8qVn4QglMwtpvPCf4YT2Wma7Nk95OxUUJI8Z+kzdXohbM7mVpGw==",
"dev": true "dev": true
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "18.16.3", "version": "18.16.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.5.tgz",
"integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==", "integrity": "sha512-seOA34WMo9KB+UA78qaJoCO20RJzZGVXQ5Sh6FWu0g/hfT44nKXnej3/tCQl7FL97idFpBhisLYCTB50S0EirA==",
"dev": true "dev": true
}, },
"node_modules/@types/prismjs": { "node_modules/@types/prismjs": {
@@ -2011,15 +2015,15 @@
"dev": true "dev": true
}, },
"@types/marked": { "@types/marked": {
"version": "4.0.8", "version": "4.3.0",
"resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.0.8.tgz", "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.3.0.tgz",
"integrity": "sha512-HVNzMT5QlWCOdeuBsgXP8EZzKUf0+AXzN+sLmjvaB3ZlLqO+e4u0uXrdw9ub69wBKFs+c6/pA4r9sy6cCDvImw==", "integrity": "sha512-zK4gSFMjgslsv5Lyvr3O1yCjgmnE4pr8jbG8qVn4QglMwtpvPCf4YT2Wma7Nk95OxUUJI8Z+kzdXohbM7mVpGw==",
"dev": true "dev": true
}, },
"@types/node": { "@types/node": {
"version": "18.16.3", "version": "18.16.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.5.tgz",
"integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==", "integrity": "sha512-seOA34WMo9KB+UA78qaJoCO20RJzZGVXQ5Sh6FWu0g/hfT44nKXnej3/tCQl7FL97idFpBhisLYCTB50S0EirA==",
"dev": true "dev": true
}, },
"@types/prismjs": { "@types/prismjs": {
@@ -3482,6 +3486,5 @@
"decamelize": "^1.2.0" "decamelize": "^1.2.0"
} }
} }
}, }
"version": "0.1.3"
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "@doc-utils/markdown2html", "name": "@doc-utils/markdown2html",
"version": "0.1.3", "version": "0.1.8",
"publishConfig": { "publishConfig": {
"registry": "https://gitea.home.jbrumond.me/api/packages/doc-utils/npm/" "registry": "https://gitea.home.jbrumond.me/api/packages/doc-utils/npm/"
}, },
@@ -11,7 +11,7 @@
"bin": { "bin": {
"markdown2html": "./bin/markdown2html" "markdown2html": "./bin/markdown2html"
}, },
"main": "./src/index.ts", "main": "./build/index.js",
"devDependencies": { "devDependencies": {
"@types/dompurify": "^2.3.3", "@types/dompurify": "^2.3.3",
"@types/jsdom": "^20.0.0", "@types/jsdom": "^20.0.0",

View File

@@ -68,11 +68,11 @@ foo:
# This is some markdown # This is some markdown
`; `;
const { frontmatter, markdown } = process_frontmatter(raw_content); const { frontmatter, document } = process_frontmatter(raw_content);
console.log(frontmatter.title); // "Example Markdown with front matter" console.log(frontmatter.title); // "Example Markdown with front matter"
console.log(frontmatter.foo); // [ "bar", "baz" ] console.log(frontmatter.foo); // [ "bar", "baz" ]
console.log(markdown); // "\n# This is some markdown\n" console.log(document); // "\n# This is some markdown\n"
``` ```

View File

@@ -88,7 +88,5 @@ export function parse_attributes(text: string, fallback_id?: Lazy<string>) {
} }
} }
console.log(attrs);
return attrs; return attrs;
} }

View File

@@ -1,18 +1,26 @@
import * as yaml from 'yaml'; import * as yaml from 'yaml';
export function process_frontmatter(document: string, parse = true) { export function process_frontmatter(raw_document: string, parse = true) {
if (! document.startsWith('---\n')) { if (! raw_document.startsWith('---\n')) {
return { return {
frontmatter: null, frontmatter: null,
markdown: document, document: raw_document,
}; };
} }
const endIndex = document.slice(3).indexOf('\n---\n') + 3; const end_index = raw_document.slice(3).indexOf('\n---\n') + 3;
const frontmatterYaml = document.slice(3, endIndex);
const markdown = document.slice(endIndex + 4); if (end_index === 2) {
const frontmatter = parse ? frontmatterYaml : yaml.parse(frontmatterYaml); return {
frontmatter: null,
document: raw_document,
};
}
return { frontmatter, markdown }; const formatter_yaml = raw_document.slice(3, end_index);
const document = raw_document.slice(end_index + 4);
const frontmatter = parse ? yaml.parse(formatter_yaml) : formatter_yaml;
return { frontmatter, document };
} }