zenn-markdown-html 0.1.105-alpha.2 → 0.1.106

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.
@@ -0,0 +1,6 @@
1
+ /**
2
+ * PrismJSのDiff構文を使用できるようにするためのプラグイン
3
+ * ソースコードの大部分は、以下のファイルより抜き出したもの
4
+ * @reference https://github.com/PrismJS/prism/blob/master/plugins/diff-highlight/prism-diff-highlight.js
5
+ */
6
+ export declare function enableDiffHighlight(): void;
@@ -0,0 +1,102 @@
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
+ exports.enableDiffHighlight = void 0;
7
+ var prismjs_1 = __importDefault(require("prismjs"));
8
+ var components_1 = __importDefault(require("prismjs/components/"));
9
+ /**
10
+ * PrismJSのDiff構文を使用できるようにするためのプラグイン
11
+ * ソースコードの大部分は、以下のファイルより抜き出したもの
12
+ * @reference https://github.com/PrismJS/prism/blob/master/plugins/diff-highlight/prism-diff-highlight.js
13
+ */
14
+ function enableDiffHighlight() {
15
+ // this plugin needs to load `diff`
16
+ (0, components_1.default)('diff');
17
+ var LANGUAGE_REGEX = /^diff-([\w-]+)/i;
18
+ var HTML_TAG = /<\/?(?!\d)[^\s>/=$<%]+(?:\s(?:\s*[^\s>/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/gi;
19
+ //this will match a line plus the line break while ignoring the line breaks HTML tags may contain.
20
+ var HTML_LINE = RegExp(/(?:__|[^\r\n<])*(?:\r\n?|\n|(?:__|[^\r\n<])(?![^\r\n])(?:__)?)(?:__)?/.source.replace(/__/g, function () {
21
+ return HTML_TAG.source;
22
+ }), 'gi');
23
+ var warningLogged = false;
24
+ prismjs_1.default.hooks.add('before-sanity-check', function (env) {
25
+ var lang = env.language;
26
+ if (LANGUAGE_REGEX.test(lang) && !env.grammar) {
27
+ env.grammar = prismjs_1.default.languages[lang] = prismjs_1.default.languages.diff;
28
+ }
29
+ });
30
+ prismjs_1.default.hooks.add('before-tokenize', function (env) {
31
+ if (!warningLogged && !prismjs_1.default.languages.diff && !prismjs_1.default.plugins.autoloader) {
32
+ warningLogged = true;
33
+ console.warn("Prism's Diff Highlight plugin requires the Diff language definition (prism-diff.js)." +
34
+ "Make sure the language definition is loaded or use Prism's Autoloader plugin.");
35
+ }
36
+ var lang = env.language;
37
+ if (LANGUAGE_REGEX.test(lang) && !prismjs_1.default.languages[lang]) {
38
+ prismjs_1.default.languages[lang] = prismjs_1.default.languages.diff;
39
+ }
40
+ });
41
+ prismjs_1.default.hooks.add('wrap', function (env) {
42
+ var diffLanguage = '', diffGrammar;
43
+ if (env.language !== 'diff') {
44
+ var langMatch = LANGUAGE_REGEX.exec(env.language);
45
+ if (!langMatch) {
46
+ return; // not a language specific diff
47
+ }
48
+ diffLanguage = langMatch[1];
49
+ diffGrammar = prismjs_1.default.languages[diffLanguage];
50
+ }
51
+ /**
52
+ * A map from the name of a block to its line prefix, same as `Prism.languages.diff.PREFIXES`
53
+ *
54
+ * @type {Object<string, string>}
55
+ */
56
+ var DIFF_PREFIXES = {
57
+ 'deleted-sign': '-',
58
+ 'deleted-arrow': '<',
59
+ 'inserted-sign': '+',
60
+ 'inserted-arrow': '>',
61
+ unchanged: ' ',
62
+ diff: '!',
63
+ };
64
+ var PREFIXES = prismjs_1.default.languages.diff && DIFF_PREFIXES;
65
+ // one of the diff tokens without any nested tokens
66
+ if (PREFIXES && env.type in PREFIXES) {
67
+ /** @type {string} */
68
+ var content = env.content.replace(HTML_TAG, ''); // remove all HTML tags
69
+ /** @type {string} */
70
+ var decoded = content.replace(/&lt;/g, '<').replace(/&amp;/g, '&');
71
+ // remove any one-character prefix
72
+ var code = decoded.replace(/(^|[\r\n])./g, '$1');
73
+ // highlight, if possible
74
+ var highlighted = void 0;
75
+ if (diffLanguage && diffGrammar) {
76
+ highlighted = prismjs_1.default.highlight(code, diffGrammar, diffLanguage);
77
+ }
78
+ else {
79
+ highlighted = prismjs_1.default.util.encode(code);
80
+ }
81
+ // get the HTML source of the prefix token
82
+ var prefixToken = new prismjs_1.default.Token('prefix', PREFIXES[env.type], [/\w+/.exec(env.type)[0]]);
83
+ var prefix = prismjs_1.default.Token.stringify(prefixToken, env.language);
84
+ // add prefix
85
+ var lines = [];
86
+ var m = void 0;
87
+ HTML_LINE.lastIndex = 0;
88
+ while ((m = HTML_LINE.exec(highlighted))) {
89
+ lines.push(prefix + m[0]);
90
+ }
91
+ if (/(?:^|[\r\n]).$/.test(decoded)) {
92
+ // because both "+a\n+" and "+a\n" will map to "a\n" after the line prefixes are removed
93
+ lines.push(prefix);
94
+ }
95
+ env.content = lines.join('');
96
+ if (diffGrammar) {
97
+ env.classes.push('language-' + diffLanguage);
98
+ }
99
+ }
100
+ });
101
+ }
102
+ exports.enableDiffHighlight = enableDiffHighlight;
@@ -7,9 +7,9 @@ exports.highlight = void 0;
7
7
  var prismjs_1 = __importDefault(require("prismjs"));
8
8
  var utils_1 = require("markdown-it/lib/common/utils");
9
9
  var components_1 = __importDefault(require("prismjs/components/"));
10
- var prism_diff_highlight_1 = __importDefault(require("@steelydylan/prism-diff-highlight"));
10
+ var prism_diff_highlight_1 = require("../prism-plugins/prism-diff-highlight");
11
11
  // diffプラグインを有効化
12
- (0, prism_diff_highlight_1.default)();
12
+ (0, prism_diff_highlight_1.enableDiffHighlight)();
13
13
  function loadPrismGrammer(lang) {
14
14
  if (!lang)
15
15
  return undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zenn-markdown-html",
3
- "version": "0.1.105-alpha.2",
3
+ "version": "0.1.106",
4
4
  "license": "MIT",
5
5
  "description": "Convert markdown to zenn flavor html.",
6
6
  "main": "lib/index.js",
@@ -36,7 +36,6 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@steelydylan/markdown-it-imsize": "^1.0.2",
39
- "@steelydylan/prism-diff-highlight": "1.0.4",
40
39
  "markdown-it": "^12.3.2",
41
40
  "markdown-it-anchor": "^8.4.1",
42
41
  "markdown-it-container": "^2.0.0",
@@ -46,7 +45,7 @@
46
45
  "markdown-it-task-lists": "^2.1.1",
47
46
  "prismjs": "^1.26.0"
48
47
  },
49
- "gitHead": "2c3df9f25c3b5bc9323d63f7e953308b8dc68e1a",
48
+ "gitHead": "0ee17e44bda75ee3993f86de9c319f8279bac98f",
50
49
  "publishConfig": {
51
50
  "access": "public"
52
51
  }