1
- import gfmAutolinkLiteralFromMarkdown from 'mdast-util-gfm-autolink-literal/from-markdown.js'
2
- import gfmAutolinkLiteralToMarkdown from 'mdast-util-gfm-autolink-literal/to-markdown.js'
3
- import gfmStrikethroughFromMarkdown from 'mdast-util-gfm-strikethrough/from-markdown.js'
4
- import gfmStrikethroughToMarkdown from 'mdast-util-gfm-strikethrough/to-markdown.js'
5
- import gfmTableFromMarkdown from 'mdast-util-gfm-table/from-markdown.js'
6
- import gfmTableToMarkdown from 'mdast-util-gfm-table/to-markdown.js'
7
- import gfmTaskListItemFromMarkdown from 'mdast-util-gfm-task-list-item/from-markdown.js'
8
- import gfmTaskListItemToMarkdown from 'mdast-util-gfm-task-list-item/to-markdown.js'
9
-
10
- const own = { } . hasOwnProperty
11
-
12
- export const gfmFromMarkdown = configure ( [
1
+ /**
2
+ * @typedef {import('mdast-util-from-markdown').Extension } FromMarkdownExtension
3
+ * @typedef {import('mdast-util-to-markdown').Options } ToMarkdownExtension
4
+ *
5
+ * @typedef {import('mdast-util-gfm-table').Options } Options
6
+ */
7
+
8
+ import {
9
+ gfmAutolinkLiteralFromMarkdown ,
10
+ gfmAutolinkLiteralToMarkdown
11
+ } from 'mdast-util-gfm-autolink-literal'
12
+ import {
13
+ gfmStrikethroughFromMarkdown ,
14
+ gfmStrikethroughToMarkdown
15
+ } from 'mdast-util-gfm-strikethrough'
16
+ import { gfmTableFromMarkdown , gfmTableToMarkdown } from 'mdast-util-gfm-table'
17
+ import {
18
+ gfmTaskListItemFromMarkdown ,
19
+ gfmTaskListItemToMarkdown
20
+ } from 'mdast-util-gfm-task-list-item'
21
+
22
+ /**
23
+ * @type {Array.<FromMarkdownExtension> }
24
+ */
25
+ export const gfmFromMarkdown = [
13
26
gfmAutolinkLiteralFromMarkdown ,
14
27
gfmStrikethroughFromMarkdown ,
15
28
gfmTableFromMarkdown ,
16
29
gfmTaskListItemFromMarkdown
17
- ] )
30
+ ]
18
31
32
+ /**
33
+ * @param {Options } [options]
34
+ * @returns {ToMarkdownExtension }
35
+ */
19
36
export function gfmToMarkdown ( options ) {
20
37
return {
21
38
extensions : [
@@ -26,34 +43,3 @@ export function gfmToMarkdown(options) {
26
43
]
27
44
}
28
45
}
29
-
30
- function configure ( extensions ) {
31
- const config = { transforms : [ ] , canContainEols : [ ] }
32
- const length = extensions . length
33
- let index = - 1
34
-
35
- while ( ++ index < length ) {
36
- extension ( config , extensions [ index ] )
37
- }
38
-
39
- return config
40
- }
41
-
42
- function extension ( config , extension ) {
43
- let key
44
- let left
45
- let right
46
-
47
- for ( key in extension ) {
48
- if ( own . call ( extension , key ) ) {
49
- left = own . call ( config , key ) ? config [ key ] : ( config [ key ] = { } )
50
- right = extension [ key ]
51
-
52
- if ( key === 'canContainEols' || key === 'transforms' ) {
53
- config [ key ] = [ ] . concat ( left , right )
54
- } else {
55
- Object . assign ( left , right )
56
- }
57
- }
58
- }
59
- }
0 commit comments