Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-04-02 03:08:34 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-04-02 03:08:34 +0300
commitd5c627d3cc6dee1b93be26898800088c0c3e71a9 (patch)
treeb5a5f4527708462a347a599e15b03e7846ba542e /app/assets/javascripts/lib
parent039bf0d863d2137484f7d89361352e2c20d142e9 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/lib')
-rw-r--r--app/assets/javascripts/lib/gfm/index.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/app/assets/javascripts/lib/gfm/index.js b/app/assets/javascripts/lib/gfm/index.js
new file mode 100644
index 00000000000..07388f1fdfa
--- /dev/null
+++ b/app/assets/javascripts/lib/gfm/index.js
@@ -0,0 +1,38 @@
+import { unified } from 'unified';
+import remarkParse from 'remark-parse';
+import remarkRehype from 'remark-rehype';
+import rehypeRaw from 'rehype-raw';
+
+const createParser = () => {
+ return unified().use(remarkParse).use(remarkRehype, { allowDangerousHtml: true }).use(rehypeRaw);
+};
+
+const compilerFactory = (renderer) =>
+ function compiler() {
+ Object.assign(this, {
+ Compiler(tree) {
+ return renderer(tree);
+ },
+ });
+ };
+
+/**
+ * Parses a Markdown string and provides the result Abstract
+ * Syntax Tree (AST) to a renderer function to convert the
+ * tree in any desired representation
+ *
+ * @param {String} params.markdown Markdown to parse
+ * @param {(tree: MDast -> any)} params.renderer A function that accepts mdast
+ * AST tree and returns an object of any type that represents the result of
+ * rendering the tree. See the references below to for more information
+ * about MDast.
+ *
+ * MDastTree documentation https://github.com/syntax-tree/mdast
+ * @returns {Promise<any>} Returns a promise with the result of rendering
+ * the MDast tree
+ */
+export const render = async ({ markdown, renderer }) => {
+ const { value } = await createParser().use(compilerFactory(renderer)).process(markdown);
+
+ return value;
+};