From 0e7ca8b759b2045e60687aebb440e7f82bf89876 Mon Sep 17 00:00:00 2001 From: Christian Murphy Date: Wed, 20 Jan 2021 21:11:38 -0700 Subject: [PATCH] feat: add use remark sync hook --- src/index.ts | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 924a778..88d9355 100644 --- a/src/index.ts +++ b/src/index.ts @@ -13,12 +13,33 @@ import { Options as RemarkRehypeOptions } from 'mdast-util-to-hast'; import remarkToRehype from 'remark-rehype'; import rehypeReact, { Options as RehypeReactOptions } from 'rehype-react'; -export interface UseRemarkOptions { +export interface UseRemarkSyncOptions { remarkParseOptions?: Partial; remarkToRehypeOptions?: RemarkRehypeOptions; rehypeReactOptions?: Partial>; remarkPlugins?: PluggableList; rehypePlugins?: PluggableList; +} + +export const useRemarkSync = ( + source: string, + { + remarkParseOptions, + remarkToRehypeOptions, + rehypeReactOptions, + remarkPlugins = [], + rehypePlugins = [], + }: UseRemarkOptions = {} +): ReactElement => + unified() + .use(remarkParse, remarkParseOptions) + .use(remarkPlugins) + .use(remarkToRehype, remarkToRehypeOptions) + .use(rehypePlugins) + .use(rehypeReact, { createElement, Fragment, ...rehypeReactOptions }) + .processSync(source).result as ReactElement; + +export interface UseRemarkOptions extends UseRemarkSyncOptions { onError?: (err: Error) => void; }