zenn-markdown-html 0.1.111-alpha.3 → 0.1.112

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,11 +1,20 @@
1
1
  # Zenn Markdown Html
2
- Convert markdown text to html.
3
2
 
4
- ## how to use
3
+ マークダウンを HTML へ変換するためのライブラリ。
4
+
5
+ ## 使い方
5
6
 
6
7
  ```js
7
- import markdownToHtml from "zenn-markdown-html";
8
+ import markdownToHtml from 'zenn-markdown-html';
8
9
  const html = markdownToHtml(markdown);
9
10
  ```
10
11
 
12
+ ## 使用できる Markdown の記法について
13
+
14
+ - [Zenn の Markdown 記法一覧 | Zenn](https://zenn.dev/zenn/articles/markdown-guide)
15
+
16
+ ## 開発者向けのドキュメント
17
+
18
+ ## Babel の使用について
11
19
 
20
+ `zenn-markdown-html` では、PrismJS の言語プラグインを予め全て読み込むために `babel-plugin-prismjs` を使用しているため、ソースコードのビルドには `babel` を使用し、型ファイル(\*.d.ts)のビルドには `tsc` を使用してビルドしています。
package/lib/index.js CHANGED
@@ -1,80 +1,89 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- var markdown_it_1 = __importDefault(require("markdown-it"));
7
- var crypto_1 = __importDefault(require("crypto"));
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _markdownIt = _interopRequireDefault(require("markdown-it"));
9
+
10
+ var _crypto = _interopRequireDefault(require("crypto"));
11
+
12
+ var _mdContainer = require("./utils/md-container");
13
+
14
+ var _mdRendererFence = require("./utils/md-renderer-fence");
15
+
16
+ var _mdLinkifyToCard = require("./utils/md-linkify-to-card");
17
+
18
+ var _mdKatex = require("./utils/md-katex");
19
+
20
+ var _mdBr = require("./utils/md-br");
21
+
22
+ var _mdCustomBlock = require("./utils/md-custom-block");
23
+
24
+ var _markdownItImsize = _interopRequireDefault(require("@steelydylan/markdown-it-imsize"));
25
+
26
+ var _markdownItAnchor = _interopRequireDefault(require("markdown-it-anchor"));
27
+
28
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+
8
30
  // plugis
9
- var md_container_1 = require("./utils/md-container");
10
- var md_renderer_fence_1 = require("./utils/md-renderer-fence");
11
- var md_linkify_to_card_1 = require("./utils/md-linkify-to-card");
12
- var md_katex_1 = require("./utils/md-katex");
13
- var md_br_1 = require("./utils/md-br");
14
- var md_custom_block_1 = require("./utils/md-custom-block");
15
- var markdown_it_imsize_1 = __importDefault(require("@steelydylan/markdown-it-imsize"));
16
- var markdown_it_anchor_1 = __importDefault(require("markdown-it-anchor"));
17
- var mdContainer = require('markdown-it-container');
18
- var mdFootnote = require('markdown-it-footnote');
19
- var mdTaskLists = require('markdown-it-task-lists');
20
- var mdInlineComments = require('markdown-it-inline-comments');
21
- var mdLinkAttributes = require('markdown-it-link-attributes');
22
- var md = (0, markdown_it_1.default)({
23
- breaks: true,
24
- linkify: true,
31
+ const mdContainer = require('markdown-it-container');
32
+
33
+ const mdFootnote = require('markdown-it-footnote');
34
+
35
+ const mdTaskLists = require('markdown-it-task-lists');
36
+
37
+ const mdInlineComments = require('markdown-it-inline-comments');
38
+
39
+ const mdLinkAttributes = require('markdown-it-link-attributes');
40
+
41
+ const md = (0, _markdownIt.default)({
42
+ breaks: true,
43
+ linkify: true
25
44
  });
26
- md.linkify.set({ fuzzyLink: false });
27
- md.use(md_br_1.mdBr)
28
- .use(md_renderer_fence_1.mdRendererFence)
29
- .use(markdown_it_imsize_1.default)
30
- .use(md_custom_block_1.mdCustomBlock)
31
- .use(mdContainer, 'details', md_container_1.containerDetailsOptions)
32
- .use(mdContainer, 'message', md_container_1.containerMessageOptions)
33
- .use(mdFootnote)
34
- .use(mdTaskLists, { enabled: true })
35
- .use(mdInlineComments)
36
- .use(mdLinkAttributes, [
37
- // 内部リンク
38
- {
39
- pattern: /^(?:https:\/\/zenn\.dev$)|(?:https:\/\/zenn\.dev\/.*$)/,
40
- attrs: {
41
- target: '_blank',
42
- },
43
- },
44
- // 外部リンク
45
- {
46
- pattern: /^https?:\/\//,
47
- attrs: {
48
- target: '_blank',
49
- rel: 'nofollow noopener noreferrer',
50
- },
51
- },
52
- ])
53
- .use(markdown_it_anchor_1.default, {
54
- level: [1, 2, 3, 4],
55
- permalink: markdown_it_anchor_1.default.permalink.ariaHidden({
56
- placement: 'before',
57
- class: 'header-anchor-link',
58
- symbol: '',
59
- }),
60
- tabIndex: false,
61
- })
62
- .use(md_katex_1.mdKatex)
63
- .use(md_linkify_to_card_1.mdLinkifyToCard);
64
- // custom footnote
65
- md.renderer.rules.footnote_block_open = function () {
66
- return '<section class="footnotes">\n' +
67
- '<div class="footnotes-title">脚注</div>\n' +
68
- '<ol class="footnotes-list">\n';
69
- };
70
- var markdownToHtml = function (text) {
71
- if (!(text && text.length))
72
- return '';
73
- // docIdは複数のコメントが1ページに指定されたときに脚注のリンク先が重複しないように指定する
74
- // 1ページの中で重複しなければ問題ないため、ごく短いランダムな文字列とする
75
- // - https://github.com/zenn-dev/zenn-community/issues/356
76
- // - https://github.com/markdown-it/markdown-it-footnote/pull/8
77
- var docId = crypto_1.default.randomBytes(2).toString('hex');
78
- return md.render(text, { docId: docId });
45
+ md.linkify.set({
46
+ fuzzyLink: false
47
+ });
48
+ md.use(_mdBr.mdBr).use(_mdRendererFence.mdRendererFence).use(_markdownItImsize.default).use(_mdCustomBlock.mdCustomBlock).use(mdContainer, 'details', _mdContainer.containerDetailsOptions).use(mdContainer, 'message', _mdContainer.containerMessageOptions).use(mdFootnote).use(mdTaskLists, {
49
+ enabled: true
50
+ }).use(mdInlineComments).use(mdLinkAttributes, [// 内部リンク
51
+ {
52
+ pattern: /^(?:https:\/\/zenn\.dev$)|(?:https:\/\/zenn\.dev\/.*$)/,
53
+ attrs: {
54
+ target: '_blank'
55
+ }
56
+ }, // 外部リンク
57
+ {
58
+ pattern: /^https?:\/\//,
59
+ attrs: {
60
+ target: '_blank',
61
+ rel: 'nofollow noopener noreferrer'
62
+ }
63
+ }]).use(_markdownItAnchor.default, {
64
+ level: [1, 2, 3, 4],
65
+ permalink: _markdownItAnchor.default.permalink.ariaHidden({
66
+ placement: 'before',
67
+ class: 'header-anchor-link',
68
+ symbol: ''
69
+ }),
70
+ tabIndex: false
71
+ }).use(_mdKatex.mdKatex).use(_mdLinkifyToCard.mdLinkifyToCard); // custom footnote
72
+
73
+ md.renderer.rules.footnote_block_open = () => '<section class="footnotes">\n' + '<div class="footnotes-title">脚注</div>\n' + '<ol class="footnotes-list">\n';
74
+
75
+ const markdownToHtml = text => {
76
+ if (!(text && text.length)) return ''; // docIdは複数のコメントが1ページに指定されたときに脚注のリンク先が重複しないように指定する
77
+ // 1ページの中で重複しなければ問題ないため、ごく短いランダムな文字列とする
78
+ // - https://github.com/zenn-dev/zenn-community/issues/356
79
+ // - https://github.com/markdown-it/markdown-it-footnote/pull/8
80
+
81
+ const docId = _crypto.default.randomBytes(2).toString('hex');
82
+
83
+ return md.render(text, {
84
+ docId
85
+ });
79
86
  };
80
- exports.default = markdownToHtml;
87
+
88
+ var _default = markdownToHtml;
89
+ exports.default = _default;
@@ -2,5 +2,6 @@
2
2
  * PrismJSのDiff構文を使用できるようにするためのプラグイン
3
3
  * ソースコードの大部分は、以下のファイルより抜き出したもの
4
4
  * @reference https://github.com/PrismJS/prism/blob/master/plugins/diff-highlight/prism-diff-highlight.js
5
+ * @note `babel-plugin-prismjs`によって全ての言語プラグインを読み込んでいるため`locaLanguages()`の実行はしていない
5
6
  */
6
7
  export declare function enableDiffHighlight(): void;