Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[T-290] Markdown transformer #3936

Closed
wants to merge 30 commits into from
Closed
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
161e744
markdown transformer
DeMoorJasper Dec 22, 2019
3184a39
add template and frontmatter
DeMoorJasper Dec 22, 2019
6a91f57
allow custom templates
DeMoorJasper Dec 22, 2019
a823f92
update markdown test
DeMoorJasper Dec 22, 2019
6a47cb5
Return raw html by default
DeMoorJasper Dec 25, 2019
5e3ac0f
enable all tests
DeMoorJasper Dec 25, 2019
c6485a3
Merge branch 'v2' into v2-marked
DeMoorJasper Jan 11, 2020
8b6d6c4
Merge branch 'v2' into v2-marked
DeMoorJasper Jan 11, 2020
b48b107
Merge branch 'v2' into v2-marked
DeMoorJasper Jan 15, 2020
8e9859d
Merge branch 'v2' into v2-marked
DeMoorJasper Jan 16, 2020
9e517d5
Merge branch 'v2' into v2-marked
DeMoorJasper Jan 23, 2020
d1ef956
Merge branch 'v2' into v2-marked
DeMoorJasper Jan 23, 2020
b5ef91f
Merge branch 'v2' into v2-marked
DeMoorJasper Jan 25, 2020
73fb09f
Merge branch 'v2' into v2-marked
DeMoorJasper Jan 29, 2020
4f53ed5
Merge branch 'v2' into v2-marked
DeMoorJasper Feb 1, 2020
e42633e
Merge branch 'v2' into v2-marked
DeMoorJasper Feb 2, 2020
a08831b
.
DeMoorJasper Feb 2, 2020
b1cb591
attempt at magic
DeMoorJasper Feb 2, 2020
a7dc7b1
magic?
DeMoorJasper Feb 2, 2020
e9879f5
Merge branch 'v2' into v2-marked
DeMoorJasper Feb 8, 2020
9ac6d51
remove packager
DeMoorJasper Feb 8, 2020
892b1d9
Merge branch 'v2' into v2-marked
DeMoorJasper Feb 11, 2020
61bb1fa
Merge branch 'v2' into v2-marked
DeMoorJasper Feb 22, 2020
ecce0b9
Merge branch 'v2' into v2-marked
DeMoorJasper Mar 11, 2020
de4bd88
Merge branch 'v2' into v2-marked
DeMoorJasper Mar 14, 2020
a33ab7d
Merge branch 'v2' into v2-marked
DeMoorJasper Mar 18, 2020
9aca617
Merge branch 'v2' into v2-marked
DeMoorJasper Mar 21, 2020
b8e22af
Merge branch 'v2' into v2-marked
DeMoorJasper Apr 8, 2020
2f9a886
Merge branch 'v2' into v2-marked
DeMoorJasper Apr 30, 2020
9567787
Merge branch 'v2' into v2-marked
mischnic May 3, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/configs/default/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
"*.less": ["@parcel/transformer-less"],
"*.css": ["@parcel/transformer-postcss", "@parcel/transformer-css"],
"*.sss": ["@parcel/transformer-sugarss"],
"*.md": ["@parcel/transformer-markdown-html"],
"*.{htm,html}": [
"@parcel/transformer-posthtml",
"@parcel/transformer-html"
Expand Down
3 changes: 2 additions & 1 deletion packages/configs/default/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
"@parcel/transformer-sugarss": "^2.0.0-alpha.3.1",
"@parcel/transformer-toml": "^2.0.0-alpha.3.1",
"@parcel/transformer-typescript-types": "^2.0.0-alpha.3.1",
"@parcel/transformer-yaml": "^2.0.0-alpha.3.1"
"@parcel/transformer-yaml": "^2.0.0-alpha.3.1",
"@parcel/transformer-markdown-html": "^2.0.0-alpha.3.1"
}
}
16 changes: 16 additions & 0 deletions packages/examples/markdown/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"name": "@parcel/markdown-example",
"version": "2.0.0-alpha.3.2",
"license": "MIT",
"private": true,
"scripts": {
"demo": "parcel src/*.md"
},
"devDependencies": {
"parcel": "^2.0.0-alpha.3.2"
},
"dependencies": {
"react": "^16.6.3",
"react-dom": "^16.6.3"
}
}
17 changes: 17 additions & 0 deletions packages/examples/markdown/src/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
title: Parcel Markdown Example
description: Demonstrating the capabilities of markdown using Parcel 2
template: ./template.html
---

# Header 1

This is some content

## Header 2

This is some more content

```js
let hello = 'world';
```
12 changes: 12 additions & 0 deletions packages/examples/markdown/src/template.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>CUSTOM TEMPLATE: {{title}}</title>
DeMoorJasper marked this conversation as resolved.
Show resolved Hide resolved
</head>
<body>
{{{ body }}}
</body>
</html>
25 changes: 25 additions & 0 deletions packages/transformers/markdown/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"name": "@parcel/transformer-markdown-html",
"version": "2.0.0-alpha.3.1",
"license": "MIT",
"publishConfig": {
"access": "public"
},
"repository": {
"type": "git",
"url": "https://github.com/parcel-bundler/parcel.git"
},
"main": "lib/MarkedTransformer.js",
"source": "src/MarkedTransformer.js",
"engines": {
"parcel": "^2.0.0-alpha.1.1"
},
"dependencies": {
"@parcel/plugin": "^2.0.0-alpha.3.1",
"@parcel/utils": "^2.0.0-alpha.3.1",
"marked": "^0.8.0",
"highlight.js": "^9.17.1",
"front-matter": "^3.0.2",
"mustache": "^3.2.0"
}
}
60 changes: 60 additions & 0 deletions packages/transformers/markdown/src/MarkedTransformer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// @flow
import {Transformer} from '@parcel/plugin';
import {promisify} from '@parcel/utils';
import marked from 'marked';
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might want to look into using something like remark for markdown since it supports all kinds of plugins for different things. For example, syntax highlighting could be done by a plugin for remark however people like without needing Parcel to build it into the transformer. Thoughts?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure, wouldn't that require a javasrcript based config?

import hljs from 'highlight.js';
import fm from 'front-matter';
import Mustache from 'mustache';

const DEFAULT_TEMPLATE = `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
DeMoorJasper marked this conversation as resolved.
Show resolved Hide resolved
<title>{{title}}</title>
</head>
<body>
{{{ body }}}
</body>
</html>`;

const markedParse = promisify(marked.parse);

export default new Transformer({
async transform({asset, resolve, options}) {
asset.type = 'html';

let code = await asset.getCode();
let {body, attributes} = fm(code);

attributes.body = await markedParse(body, {
renderer: new marked.Renderer(),
highlight: (code: string, lang: string) => {
return hljs.highlight(lang, code).value;
},
pedantic: false,
gfm: true,
breaks: false,
sanitize: false,
smartLists: true,
smartypants: false,
xhtml: false,
});

let template = DEFAULT_TEMPLATE;
if (attributes.template) {
let templateLocation = await resolve(asset.filePath, attributes.template);
template = await options.inputFS.readFile(templateLocation, 'utf-8');
asset.addIncludedFile({
filePath: templateLocation,
});
}

let res = Mustache.render(template, attributes);
DeMoorJasper marked this conversation as resolved.
Show resolved Hide resolved

asset.setCode(res);

return [asset];
},
});
26 changes: 25 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5935,6 +5935,13 @@ from2@^2.1.0:
inherits "^2.0.1"
readable-stream "^2.0.0"

front-matter@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/front-matter/-/front-matter-3.0.2.tgz#2401cd05fcf22bd0de48a104ffb4efb1ff5c8465"
integrity sha512-iBGZaWyzqgsrPGsqrXZP6N4hp5FzSKDi18nfAoYpgz3qK5sAwFv/ojmn3VS60SOgLvq6CtojNqy0y6ZNz05IzQ==
dependencies:
js-yaml "^3.13.1"

fs-constants@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
Expand Down Expand Up @@ -6534,7 +6541,7 @@ gulplog@^1.0.0:
dependencies:
glogg "^1.0.0"

handlebars@^4.0.3, handlebars@^4.1.0:
handlebars@^4.0.3, handlebars@^4.1.0, handlebars@^4.5.3:
version "4.5.3"
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482"
integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==
Expand Down Expand Up @@ -6654,6 +6661,13 @@ hex-color-regex@^1.1.0:
resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==

highlight.js@^9.17.1:
version "9.17.1"
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.17.1.tgz#14a4eded23fd314b05886758bb906e39dd627f9a"
integrity sha512-TA2/doAur5Ol8+iM3Ov7qy3jYcr/QiJ2eDTdRF4dfbjG7AaaB99J5G+zSl11ljbl6cIcahgPY6SKb3sC3EJ0fw==
dependencies:
handlebars "^4.5.3"

highlight.js@~9.12.0:
version "9.12.0"
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.12.0.tgz#e6d9dbe57cbefe60751f02af336195870c90c01e"
Expand Down Expand Up @@ -8340,6 +8354,11 @@ marked@^0.6.1:
resolved "https://registry.yarnpkg.com/marked/-/marked-0.6.3.tgz#79babad78af638ba4d522a9e715cdfdd2429e946"
integrity sha512-Fqa7eq+UaxfMriqzYLayfqAE40WN03jf+zHjT18/uXNuzjq3TY0XTbrAoPeqSJrAmPz11VuUA+kBPYOhHt9oOQ==

marked@^0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/marked/-/marked-0.8.0.tgz#ec5c0c9b93878dc52dd54be8d0e524097bd81a99"
integrity sha512-MyUe+T/Pw4TZufHkzAfDj6HarCBWia2y27/bhuYkTaiUnfDYFnCP3KUN+9oM7Wi6JA2rymtVYbQu3spE0GCmxQ==

matchdep@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e"
Expand Down Expand Up @@ -8728,6 +8747,11 @@ murmurhash-js@^1.0.0:
resolved "https://registry.yarnpkg.com/murmurhash-js/-/murmurhash-js-1.0.0.tgz#b06278e21fc6c37fa5313732b0412bcb6ae15f51"
integrity sha1-sGJ44h/Gw3+lMTcysEEry2rhX1E=

mustache@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/mustache/-/mustache-3.2.0.tgz#1c68e0bf77817a92e8a9216e35c53bbb342345f6"
integrity sha512-n5de2nQ1g2iz3PO9cmq/ZZx3W7glqjf0kavThtqfuNlZRllgU2a2Q0jWoQy3BloT5A6no7sjCTHBVn1rEKjx1Q==

mute-stdout@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331"
Expand Down