Skip to content

Commit

Permalink
Change to expose functions
Browse files Browse the repository at this point in the history
  • Loading branch information
wooorm committed Jul 11, 2023
1 parent e771a0a commit be985af
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 58 deletions.
58 changes: 33 additions & 25 deletions lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,40 +13,48 @@
import {ok as assert} from 'devlop'

/**
* Extension for `mdast-util-from-markdown` to enable MDX expressions.
* Create an extension for `mdast-util-from-markdown` to enable MDX expressions
* in markdown.
*
* When using the syntax extension with `addResult`, nodes will have a
* `data.estree` field set to an ESTree `Program` node.
* When using the micromark syntax extension with `addResult`, nodes will have
* a `data.estree` field set to an ESTree `Program` node.
*
* @type {FromMarkdownExtension}
* @returns {FromMarkdownExtension}
* Extension for `mdast-util-from-markdown` to enable MDX expressions.
*/
export const mdxExpressionFromMarkdown = {
enter: {
mdxFlowExpression: enterMdxFlowExpression,
mdxTextExpression: enterMdxTextExpression
},
exit: {
mdxFlowExpression: exitMdxExpression,
mdxFlowExpressionChunk: exitMdxExpressionData,
mdxTextExpression: exitMdxExpression,
mdxTextExpressionChunk: exitMdxExpressionData
export function mdxExpressionFromMarkdown() {
return {
enter: {
mdxFlowExpression: enterMdxFlowExpression,
mdxTextExpression: enterMdxTextExpression
},
exit: {
mdxFlowExpression: exitMdxExpression,
mdxFlowExpressionChunk: exitMdxExpressionData,
mdxTextExpression: exitMdxExpression,
mdxTextExpressionChunk: exitMdxExpressionData
}
}
}

/**
* Extension for `mdast-util-to-markdown` to enable MDX ESM.
* Create an extension for `mdast-util-to-markdown` to enable MDX expressions
* in markdown.
*
* @type {ToMarkdownExtension}
* @returns {ToMarkdownExtension}
* Extension for `mdast-util-to-markdown` to enable MDX expressions.
*/
export const mdxExpressionToMarkdown = {
handlers: {
mdxFlowExpression: handleMdxExpression,
mdxTextExpression: handleMdxExpression
},
unsafe: [
{character: '{', inConstruct: ['phrasing']},
{atBreak: true, character: '{'}
]
export function mdxExpressionToMarkdown() {
return {
handlers: {
mdxFlowExpression: handleMdxExpression,
mdxTextExpression: handleMdxExpression
},
unsafe: [
{character: '{', inConstruct: ['phrasing']},
{atBreak: true, character: '{'}
]
}
}

/**
Expand Down
34 changes: 24 additions & 10 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`mdxExpressionFromMarkdown`](#mdxexpressionfrommarkdown)
* [`mdxExpressionToMarkdown`](#mdxexpressiontomarkdown)
* [`mdxExpressionFromMarkdown()`](#mdxexpressionfrommarkdown)
* [`mdxExpressionToMarkdown()`](#mdxexpressiontomarkdown)
* [`MdxFlowExpression`](#mdxflowexpression)
* [`MdxTextExpression`](#mdxtextexpression)
* [`MdxFlowExpressionHast`](#mdxflowexpressionhast)
Expand Down Expand Up @@ -108,12 +108,12 @@ const doc = await fs.readFile('example.mdx')

const tree = fromMarkdown(doc, {
extensions: [mdxExpression({acorn, addResult: true})],
mdastExtensions: [mdxExpressionFromMarkdown]
mdastExtensions: [mdxExpressionFromMarkdown()]
})

console.log(tree)

const out = toMarkdown(tree, {extensions: [mdxExpressionToMarkdown]})
const out = toMarkdown(tree, {extensions: [mdxExpressionToMarkdown()]})

console.log(out)
```
Expand Down Expand Up @@ -187,18 +187,28 @@ This package exports the identifiers
[`mdxExpressionToMarkdown`][api-mdx-expression-to-markdown].
There is no default export.

### `mdxExpressionFromMarkdown`
### `mdxExpressionFromMarkdown()`

Extension for [`mdast-util-from-markdown`][mdast-util-from-markdown] to enable
MDX expressions.
Create an extension for [`mdast-util-from-markdown`][mdast-util-from-markdown]
to enable MDX expressions in markdown.

When using the [micromark syntax extension][extension] with `addResult`, nodes
will have a `data.estree` field set to an ESTree [`Program`][program] node.

### `mdxExpressionToMarkdown`
###### Returns

Extension for [`mdast-util-to-markdown`][mdast-util-to-markdown] to enable MDX
expressions.
Extension for `mdast-util-from-markdown` to enable MDX expressions
([`FromMarkdownExtension`][from-markdown-extension]).

### `mdxExpressionToMarkdown()`

Create an extension for [`mdast-util-to-markdown`][mdast-util-to-markdown]
to enable MDX expressions in markdown.

###### Returns

Extension for `mdast-util-to-markdown` to enable MDX expressions
([`ToMarkdownExtension`][to-markdown-extension]).

### `MdxFlowExpression`

Expand Down Expand Up @@ -499,6 +509,10 @@ abide by its terms.

[mdx]: https://mdxjs.com

[from-markdown-extension]: https://github.com/syntax-tree/mdast-util-from-markdown#extension

[to-markdown-extension]: https://github.com/syntax-tree/mdast-util-to-markdown#options

[api-mdx-expression-from-markdown]: #mdxexpressionfrommarkdown

[api-mdx-expression-to-markdown]: #mdxexpressiontomarkdown
Expand Down
46 changes: 23 additions & 23 deletions test.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ test('core', async function (t) {
})
})

test('mdxExpressionFromMarkdown', async function (t) {
test('mdxExpressionFromMarkdown()', async function (t) {
await t.test(
'should support a flow expression (agnostic)',
async function () {
assert.deepEqual(
fromMarkdown('{1 + 1}', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
mdastExtensions: [mdxExpressionFromMarkdown()]
}),
{
type: 'root',
Expand Down Expand Up @@ -52,7 +52,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
assert.deepEqual(
fromMarkdown('{\n 1 + 1\n}', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
mdastExtensions: [mdxExpressionFromMarkdown()]
}),
{
type: 'root',
Expand Down Expand Up @@ -80,7 +80,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
async function () {
const tree = fromMarkdown('{\t \n}', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
mdastExtensions: [mdxExpressionFromMarkdown()]
})

removePosition(tree, {force: true})
Expand All @@ -97,7 +97,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
async function () {
const tree = fromMarkdown('{ a { b } c }', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
mdastExtensions: [mdxExpressionFromMarkdown()]
})

removePosition(tree, {force: true})
Expand All @@ -114,7 +114,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
async function () {
const tree = fromMarkdown('{ a /* { */ }', {
extensions: [mdxExpression({acorn})],
mdastExtensions: [mdxExpressionFromMarkdown]
mdastExtensions: [mdxExpressionFromMarkdown()]
})

removePosition(tree, {force: true})
Expand All @@ -132,7 +132,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
assert.deepEqual(
fromMarkdown('a {1 + 1} b', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
mdastExtensions: [mdxExpressionFromMarkdown()]
}),
{
type: 'root',
Expand Down Expand Up @@ -185,7 +185,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
async function () {
const tree = fromMarkdown('a {\t \n} c', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
mdastExtensions: [mdxExpressionFromMarkdown()]
})

removePosition(tree, {force: true})
Expand All @@ -211,7 +211,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
async function () {
const tree = fromMarkdown('{ a { b } c }.', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
mdastExtensions: [mdxExpressionFromMarkdown()]
})

removePosition(tree, {force: true})
Expand All @@ -236,7 +236,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
async function () {
const tree = fromMarkdown('{ a /* { */ }.', {
extensions: [mdxExpression({acorn})],
mdastExtensions: [mdxExpressionFromMarkdown]
mdastExtensions: [mdxExpressionFromMarkdown()]
})

removePosition(tree, {force: true})
Expand All @@ -261,7 +261,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
async function () {
let tree = fromMarkdown('{a}.', {
extensions: [mdxExpression({acorn, addResult: true})],
mdastExtensions: [mdxExpressionFromMarkdown]
mdastExtensions: [mdxExpressionFromMarkdown()]
})

removePosition(tree, {force: true})
Expand Down Expand Up @@ -327,7 +327,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
await t.test('should support comments in expressions', async function () {
let tree = fromMarkdown('A {/*b*/ c // d\n} e {/* f */}.', {
extensions: [mdxExpression({acorn, addResult: true})],
mdastExtensions: [mdxExpressionFromMarkdown]
mdastExtensions: [mdxExpressionFromMarkdown()]
})

removePosition(tree, {force: true})
Expand Down Expand Up @@ -446,7 +446,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
})
})

test('mdxExpressionToMarkdown', async function (t) {
test('mdxExpressionToMarkdown()', async function (t) {
await t.test('should serialize flow expressions', async function () {
assert.deepEqual(
toMarkdown(
Expand All @@ -460,7 +460,7 @@ test('mdxExpressionToMarkdown', async function (t) {
{type: 'paragraph', children: [{type: 'text', value: 'd'}]}
]
},
{extensions: [mdxExpressionToMarkdown]}
{extensions: [mdxExpressionToMarkdown()]}
),
'{a + b}\n\n{\nc +\n1\n}\n\n{}\n\nd\n'
)
Expand All @@ -482,7 +482,7 @@ test('mdxExpressionToMarkdown', async function (t) {
{type: 'text', value: '.'}
]
},
{extensions: [mdxExpressionToMarkdown]}
{extensions: [mdxExpressionToMarkdown()]}
),
'a {b + c}, d {e + 1}, f {}.\n'
)
Expand All @@ -492,7 +492,7 @@ test('mdxExpressionToMarkdown', async function (t) {
assert.deepEqual(
toMarkdown(
{type: 'paragraph', children: [{type: 'text', value: 'a { b'}]},
{extensions: [mdxExpressionToMarkdown]}
{extensions: [mdxExpressionToMarkdown()]}
),
'a \\{ b\n'
)
Expand All @@ -502,7 +502,7 @@ test('mdxExpressionToMarkdown', async function (t) {
assert.deepEqual(
toMarkdown(
{type: 'definition', identifier: 'a', url: 'x', title: 'a\n{\nb'},
{extensions: [mdxExpressionToMarkdown]}
{extensions: [mdxExpressionToMarkdown()]}
),
'[a]: x "a\n\\{\nb"\n'
)
Expand All @@ -517,9 +517,9 @@ test('roundtrip', async function (t) {
toMarkdown(
fromMarkdown(' {`\n a\n `}', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
mdastExtensions: [mdxExpressionFromMarkdown()]
}),
{extensions: [mdxExpressionToMarkdown]}
{extensions: [mdxExpressionToMarkdown()]}
),
'{`\n a\n `}\n'
)
Expand All @@ -533,9 +533,9 @@ test('roundtrip', async function (t) {
toMarkdown(
fromMarkdown(' {`\n a\n `}', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
mdastExtensions: [mdxExpressionFromMarkdown()]
}),
{extensions: [mdxExpressionToMarkdown]}
{extensions: [mdxExpressionToMarkdown()]}
),
'{`\n a\n `}\n'
)
Expand All @@ -549,9 +549,9 @@ test('roundtrip', async function (t) {
toMarkdown(
fromMarkdown('a {`\n b\n `} c', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
mdastExtensions: [mdxExpressionFromMarkdown()]
}),
{extensions: [mdxExpressionToMarkdown]}
{extensions: [mdxExpressionToMarkdown()]}
),
'a {`\n b\n `} c\n'
)
Expand Down

0 comments on commit be985af

Please sign in to comment.