Skip to content

Commit be985af

Browse files
committed
Change to expose functions
1 parent e771a0a commit be985af

File tree

3 files changed

+80
-58
lines changed

3 files changed

+80
-58
lines changed

lib/index.js

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,40 +13,48 @@
1313
import {ok as assert} from 'devlop'
1414

1515
/**
16-
* Extension for `mdast-util-from-markdown` to enable MDX expressions.
16+
* Create an extension for `mdast-util-from-markdown` to enable MDX expressions
17+
* in markdown.
1718
*
18-
* When using the syntax extension with `addResult`, nodes will have a
19-
* `data.estree` field set to an ESTree `Program` node.
19+
* When using the micromark syntax extension with `addResult`, nodes will have
20+
* a `data.estree` field set to an ESTree `Program` node.
2021
*
21-
* @type {FromMarkdownExtension}
22+
* @returns {FromMarkdownExtension}
23+
* Extension for `mdast-util-from-markdown` to enable MDX expressions.
2224
*/
23-
export const mdxExpressionFromMarkdown = {
24-
enter: {
25-
mdxFlowExpression: enterMdxFlowExpression,
26-
mdxTextExpression: enterMdxTextExpression
27-
},
28-
exit: {
29-
mdxFlowExpression: exitMdxExpression,
30-
mdxFlowExpressionChunk: exitMdxExpressionData,
31-
mdxTextExpression: exitMdxExpression,
32-
mdxTextExpressionChunk: exitMdxExpressionData
25+
export function mdxExpressionFromMarkdown() {
26+
return {
27+
enter: {
28+
mdxFlowExpression: enterMdxFlowExpression,
29+
mdxTextExpression: enterMdxTextExpression
30+
},
31+
exit: {
32+
mdxFlowExpression: exitMdxExpression,
33+
mdxFlowExpressionChunk: exitMdxExpressionData,
34+
mdxTextExpression: exitMdxExpression,
35+
mdxTextExpressionChunk: exitMdxExpressionData
36+
}
3337
}
3438
}
3539

3640
/**
37-
* Extension for `mdast-util-to-markdown` to enable MDX ESM.
41+
* Create an extension for `mdast-util-to-markdown` to enable MDX expressions
42+
* in markdown.
3843
*
39-
* @type {ToMarkdownExtension}
44+
* @returns {ToMarkdownExtension}
45+
* Extension for `mdast-util-to-markdown` to enable MDX expressions.
4046
*/
41-
export const mdxExpressionToMarkdown = {
42-
handlers: {
43-
mdxFlowExpression: handleMdxExpression,
44-
mdxTextExpression: handleMdxExpression
45-
},
46-
unsafe: [
47-
{character: '{', inConstruct: ['phrasing']},
48-
{atBreak: true, character: '{'}
49-
]
47+
export function mdxExpressionToMarkdown() {
48+
return {
49+
handlers: {
50+
mdxFlowExpression: handleMdxExpression,
51+
mdxTextExpression: handleMdxExpression
52+
},
53+
unsafe: [
54+
{character: '{', inConstruct: ['phrasing']},
55+
{atBreak: true, character: '{'}
56+
]
57+
}
5058
}
5159

5260
/**

readme.md

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
* [Install](#install)
1818
* [Use](#use)
1919
* [API](#api)
20-
* [`mdxExpressionFromMarkdown`](#mdxexpressionfrommarkdown)
21-
* [`mdxExpressionToMarkdown`](#mdxexpressiontomarkdown)
20+
* [`mdxExpressionFromMarkdown()`](#mdxexpressionfrommarkdown)
21+
* [`mdxExpressionToMarkdown()`](#mdxexpressiontomarkdown)
2222
* [`MdxFlowExpression`](#mdxflowexpression)
2323
* [`MdxTextExpression`](#mdxtextexpression)
2424
* [`MdxFlowExpressionHast`](#mdxflowexpressionhast)
@@ -108,12 +108,12 @@ const doc = await fs.readFile('example.mdx')
108108

109109
const tree = fromMarkdown(doc, {
110110
extensions: [mdxExpression({acorn, addResult: true})],
111-
mdastExtensions: [mdxExpressionFromMarkdown]
111+
mdastExtensions: [mdxExpressionFromMarkdown()]
112112
})
113113

114114
console.log(tree)
115115

116-
const out = toMarkdown(tree, {extensions: [mdxExpressionToMarkdown]})
116+
const out = toMarkdown(tree, {extensions: [mdxExpressionToMarkdown()]})
117117

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

190-
### `mdxExpressionFromMarkdown`
190+
### `mdxExpressionFromMarkdown()`
191191

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

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

198-
### `mdxExpressionToMarkdown`
198+
###### Returns
199199

200-
Extension for [`mdast-util-to-markdown`][mdast-util-to-markdown] to enable MDX
201-
expressions.
200+
Extension for `mdast-util-from-markdown` to enable MDX expressions
201+
([`FromMarkdownExtension`][from-markdown-extension]).
202+
203+
### `mdxExpressionToMarkdown()`
204+
205+
Create an extension for [`mdast-util-to-markdown`][mdast-util-to-markdown]
206+
to enable MDX expressions in markdown.
207+
208+
###### Returns
209+
210+
Extension for `mdast-util-to-markdown` to enable MDX expressions
211+
([`ToMarkdownExtension`][to-markdown-extension]).
202212

203213
### `MdxFlowExpression`
204214

@@ -499,6 +509,10 @@ abide by its terms.
499509

500510
[mdx]: https://mdxjs.com
501511

512+
[from-markdown-extension]: https://github.com/syntax-tree/mdast-util-from-markdown#extension
513+
514+
[to-markdown-extension]: https://github.com/syntax-tree/mdast-util-to-markdown#options
515+
502516
[api-mdx-expression-from-markdown]: #mdxexpressionfrommarkdown
503517

504518
[api-mdx-expression-to-markdown]: #mdxexpressiontomarkdown

test.js

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@ test('core', async function (t) {
1616
})
1717
})
1818

19-
test('mdxExpressionFromMarkdown', async function (t) {
19+
test('mdxExpressionFromMarkdown()', async function (t) {
2020
await t.test(
2121
'should support a flow expression (agnostic)',
2222
async function () {
2323
assert.deepEqual(
2424
fromMarkdown('{1 + 1}', {
2525
extensions: [mdxExpression()],
26-
mdastExtensions: [mdxExpressionFromMarkdown]
26+
mdastExtensions: [mdxExpressionFromMarkdown()]
2727
}),
2828
{
2929
type: 'root',
@@ -52,7 +52,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
5252
assert.deepEqual(
5353
fromMarkdown('{\n 1 + 1\n}', {
5454
extensions: [mdxExpression()],
55-
mdastExtensions: [mdxExpressionFromMarkdown]
55+
mdastExtensions: [mdxExpressionFromMarkdown()]
5656
}),
5757
{
5858
type: 'root',
@@ -80,7 +80,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
8080
async function () {
8181
const tree = fromMarkdown('{\t \n}', {
8282
extensions: [mdxExpression()],
83-
mdastExtensions: [mdxExpressionFromMarkdown]
83+
mdastExtensions: [mdxExpressionFromMarkdown()]
8484
})
8585

8686
removePosition(tree, {force: true})
@@ -97,7 +97,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
9797
async function () {
9898
const tree = fromMarkdown('{ a { b } c }', {
9999
extensions: [mdxExpression()],
100-
mdastExtensions: [mdxExpressionFromMarkdown]
100+
mdastExtensions: [mdxExpressionFromMarkdown()]
101101
})
102102

103103
removePosition(tree, {force: true})
@@ -114,7 +114,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
114114
async function () {
115115
const tree = fromMarkdown('{ a /* { */ }', {
116116
extensions: [mdxExpression({acorn})],
117-
mdastExtensions: [mdxExpressionFromMarkdown]
117+
mdastExtensions: [mdxExpressionFromMarkdown()]
118118
})
119119

120120
removePosition(tree, {force: true})
@@ -132,7 +132,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
132132
assert.deepEqual(
133133
fromMarkdown('a {1 + 1} b', {
134134
extensions: [mdxExpression()],
135-
mdastExtensions: [mdxExpressionFromMarkdown]
135+
mdastExtensions: [mdxExpressionFromMarkdown()]
136136
}),
137137
{
138138
type: 'root',
@@ -185,7 +185,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
185185
async function () {
186186
const tree = fromMarkdown('a {\t \n} c', {
187187
extensions: [mdxExpression()],
188-
mdastExtensions: [mdxExpressionFromMarkdown]
188+
mdastExtensions: [mdxExpressionFromMarkdown()]
189189
})
190190

191191
removePosition(tree, {force: true})
@@ -211,7 +211,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
211211
async function () {
212212
const tree = fromMarkdown('{ a { b } c }.', {
213213
extensions: [mdxExpression()],
214-
mdastExtensions: [mdxExpressionFromMarkdown]
214+
mdastExtensions: [mdxExpressionFromMarkdown()]
215215
})
216216

217217
removePosition(tree, {force: true})
@@ -236,7 +236,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
236236
async function () {
237237
const tree = fromMarkdown('{ a /* { */ }.', {
238238
extensions: [mdxExpression({acorn})],
239-
mdastExtensions: [mdxExpressionFromMarkdown]
239+
mdastExtensions: [mdxExpressionFromMarkdown()]
240240
})
241241

242242
removePosition(tree, {force: true})
@@ -261,7 +261,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
261261
async function () {
262262
let tree = fromMarkdown('{a}.', {
263263
extensions: [mdxExpression({acorn, addResult: true})],
264-
mdastExtensions: [mdxExpressionFromMarkdown]
264+
mdastExtensions: [mdxExpressionFromMarkdown()]
265265
})
266266

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

333333
removePosition(tree, {force: true})
@@ -446,7 +446,7 @@ test('mdxExpressionFromMarkdown', async function (t) {
446446
})
447447
})
448448

449-
test('mdxExpressionToMarkdown', async function (t) {
449+
test('mdxExpressionToMarkdown()', async function (t) {
450450
await t.test('should serialize flow expressions', async function () {
451451
assert.deepEqual(
452452
toMarkdown(
@@ -460,7 +460,7 @@ test('mdxExpressionToMarkdown', async function (t) {
460460
{type: 'paragraph', children: [{type: 'text', value: 'd'}]}
461461
]
462462
},
463-
{extensions: [mdxExpressionToMarkdown]}
463+
{extensions: [mdxExpressionToMarkdown()]}
464464
),
465465
'{a + b}\n\n{\nc +\n1\n}\n\n{}\n\nd\n'
466466
)
@@ -482,7 +482,7 @@ test('mdxExpressionToMarkdown', async function (t) {
482482
{type: 'text', value: '.'}
483483
]
484484
},
485-
{extensions: [mdxExpressionToMarkdown]}
485+
{extensions: [mdxExpressionToMarkdown()]}
486486
),
487487
'a {b + c}, d {e + 1}, f {}.\n'
488488
)
@@ -492,7 +492,7 @@ test('mdxExpressionToMarkdown', async function (t) {
492492
assert.deepEqual(
493493
toMarkdown(
494494
{type: 'paragraph', children: [{type: 'text', value: 'a { b'}]},
495-
{extensions: [mdxExpressionToMarkdown]}
495+
{extensions: [mdxExpressionToMarkdown()]}
496496
),
497497
'a \\{ b\n'
498498
)
@@ -502,7 +502,7 @@ test('mdxExpressionToMarkdown', async function (t) {
502502
assert.deepEqual(
503503
toMarkdown(
504504
{type: 'definition', identifier: 'a', url: 'x', title: 'a\n{\nb'},
505-
{extensions: [mdxExpressionToMarkdown]}
505+
{extensions: [mdxExpressionToMarkdown()]}
506506
),
507507
'[a]: x "a\n\\{\nb"\n'
508508
)
@@ -517,9 +517,9 @@ test('roundtrip', async function (t) {
517517
toMarkdown(
518518
fromMarkdown(' {`\n a\n `}', {
519519
extensions: [mdxExpression()],
520-
mdastExtensions: [mdxExpressionFromMarkdown]
520+
mdastExtensions: [mdxExpressionFromMarkdown()]
521521
}),
522-
{extensions: [mdxExpressionToMarkdown]}
522+
{extensions: [mdxExpressionToMarkdown()]}
523523
),
524524
'{`\n a\n `}\n'
525525
)
@@ -533,9 +533,9 @@ test('roundtrip', async function (t) {
533533
toMarkdown(
534534
fromMarkdown(' {`\n a\n `}', {
535535
extensions: [mdxExpression()],
536-
mdastExtensions: [mdxExpressionFromMarkdown]
536+
mdastExtensions: [mdxExpressionFromMarkdown()]
537537
}),
538-
{extensions: [mdxExpressionToMarkdown]}
538+
{extensions: [mdxExpressionToMarkdown()]}
539539
),
540540
'{`\n a\n `}\n'
541541
)
@@ -549,9 +549,9 @@ test('roundtrip', async function (t) {
549549
toMarkdown(
550550
fromMarkdown('a {`\n b\n `} c', {
551551
extensions: [mdxExpression()],
552-
mdastExtensions: [mdxExpressionFromMarkdown]
552+
mdastExtensions: [mdxExpressionFromMarkdown()]
553553
}),
554-
{extensions: [mdxExpressionToMarkdown]}
554+
{extensions: [mdxExpressionToMarkdown()]}
555555
),
556556
'a {`\n b\n `} c\n'
557557
)

0 commit comments

Comments
 (0)