1.1.0
This commit is contained in:
parent
85b2d5cad7
commit
ebe67781aa
3 changed files with 79 additions and 20 deletions
95
README.md
95
README.md
|
@ -1,6 +1,11 @@
|
||||||
# EMDY
|
# EMDY
|
||||||
|
|
||||||
Parse and serialize Markdown files with optional frontmatter
|
Enhanced Markdown with YAML
|
||||||
|
|
||||||
|
EMDY makes it easy to work with markdown files like data. It provides a simple
|
||||||
|
JSON-like API for parsing and serializing objects to and from a markdown + YAML
|
||||||
|
frontmatter format.
|
||||||
|
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
|
@ -19,33 +24,87 @@ bun add @endeavorance/emdy
|
||||||
```
|
```
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
EMDY exports a top level `EMDY` constant which has two functions:
|
|
||||||
|
|
||||||
- `EMDY.parse(md: string, markdownKey = "content")`
|
|
||||||
- `EMDY.stringify(data: Object, markdownKey = "content")`
|
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
import EMDY from "@endeavorance/emdy";
|
import EMDY from "@endeavorance/emdy";
|
||||||
|
EMDY.parse(/* ... */);
|
||||||
|
|
||||||
const myMDFile = `
|
// -- or --
|
||||||
|
|
||||||
|
import { parse, stringify, parseAll } from "@endeavorance/emdy";
|
||||||
|
parse(/* ... */);
|
||||||
|
```
|
||||||
|
## Functions
|
||||||
|
|
||||||
|
EMDY provides three main functions for working with markdown files.
|
||||||
|
|
||||||
|
### `parse(content: string, markdownKey?: string): Record<string, unknown>`
|
||||||
|
|
||||||
|
Parses a single EMDY document. Frontmatter keys become top level properties
|
||||||
|
in the return value. The markdown content is loaded as-is into a key based
|
||||||
|
on the provided `markdownKey`. If no `markdownKey` is provided, it will default
|
||||||
|
to `content`.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
const emdyDoc = `
|
||||||
---
|
---
|
||||||
tags: ["fancy", "stuff"]
|
key: value
|
||||||
|
anotherKey: anotherValue
|
||||||
---
|
---
|
||||||
|
|
||||||
This is my markdown document!
|
This is my markdown content.
|
||||||
`.trim();
|
`.trim();
|
||||||
|
|
||||||
const parsed = EMDY.parse(myMDFile);
|
console.log(EMDY.parse(emdyDoc));
|
||||||
|
|
||||||
console.log(parsed);
|
|
||||||
/*
|
/*
|
||||||
|
Output:
|
||||||
{
|
{
|
||||||
content: "This is my markdown document!",
|
"key": "value",
|
||||||
tags: ["fancy", "stuff"]
|
"anotherKey": "anotherValue",
|
||||||
|
"content": "This is my markdown content."
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const stringified = EMDY.stringify(parsed);
|
|
||||||
console.log(stringified);
|
|
||||||
// Prints the original document
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `parseAll(content: string, markdownKey?: string): Record<string, unknown>[]`
|
||||||
|
|
||||||
|
Similar to `.parse`, but parses multiple EMDY documents from a single string,
|
||||||
|
returning an array of objects.
|
||||||
|
|
||||||
|
Documents are separated by a line containing only three equals signs:
|
||||||
|
|
||||||
|
```md
|
||||||
|
---
|
||||||
|
property: value
|
||||||
|
---
|
||||||
|
|
||||||
|
This is the first document
|
||||||
|
===
|
||||||
|
This is the second document
|
||||||
|
```
|
||||||
|
|
||||||
|
### `stringify(data: Record<string, unknown>, markdownKey?: string): Record<string, unknown>`
|
||||||
|
|
||||||
|
Given an object, serializes it to a string in EMDY format. Uses the `markdownKey`
|
||||||
|
to identify which property in the object holds the markdown content. If no
|
||||||
|
`markdownKey` is provided, it will default to `content`.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
const emdyObj = {
|
||||||
|
key: "value",
|
||||||
|
anotherKey: "anotherValue",
|
||||||
|
content: "This is my markdown content."
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log(EMDY.stringify(emdyObj));
|
||||||
|
|
||||||
|
/*
|
||||||
|
Output:
|
||||||
|
---
|
||||||
|
key: value
|
||||||
|
anotherKey: anotherValue
|
||||||
|
---
|
||||||
|
|
||||||
|
This is my markdown content.
|
||||||
|
*/
|
||||||
|
```
|
||||||
|
|
||||||
|
|
2
build.ts
2
build.ts
|
@ -6,4 +6,4 @@ await Bun.build({
|
||||||
minify: true,
|
minify: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
export { };
|
export {};
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@endeavorance/emdy",
|
"name": "@endeavorance/emdy",
|
||||||
"version": "1.0.0",
|
"version": "1.1.0",
|
||||||
"module": "dist/index.js",
|
"module": "dist/index.js",
|
||||||
"exports": {
|
"exports": {
|
||||||
".": {
|
".": {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue