zengen 0.2.5 → 0.3.0

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.
Files changed (43) hide show
  1. package/.zen/meta.json +18 -0
  2. package/.zen/src/ar-SA/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  3. package/.zen/src/da-DK/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  4. package/.zen/src/de-DE/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  5. package/.zen/src/en-US/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  6. package/.zen/src/es-ES/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  7. package/.zen/src/es-MX/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  8. package/.zen/src/fi-FI/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  9. package/.zen/src/fr-FR/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  10. package/.zen/src/hi-IN/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  11. package/.zen/src/id-ID/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  12. package/.zen/src/it-IT/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  13. package/.zen/src/ja-JP/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  14. package/.zen/src/ko-KR/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  15. package/.zen/src/nl-NL/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  16. package/.zen/src/no-NO/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  17. package/.zen/src/pl-PL/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  18. package/.zen/src/pt-BR/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  19. package/.zen/src/pt-PT/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  20. package/.zen/src/ru-RU/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  21. package/.zen/src/sv-SE/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  22. package/.zen/src/th-TH/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  23. package/.zen/src/tr-TR/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  24. package/.zen/src/uk-UA/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  25. package/.zen/src/vi-VN/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
  26. package/.zen/src/zh-Hans/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +123 -0
  27. package/.zen/src/zh-Hant/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +123 -0
  28. package/assets/templates/default/layout.html +90 -5
  29. package/dist/process/scanSourceFiles.d.ts.map +1 -1
  30. package/dist/process/scanSourceFiles.js +6 -0
  31. package/dist/process/scanSourceFiles.js.map +1 -1
  32. package/dist/process/template.d.ts.map +1 -1
  33. package/dist/process/template.js +2 -3
  34. package/dist/process/template.js.map +1 -1
  35. package/dist/utils/convertMarkdownToHtml.d.ts.map +1 -1
  36. package/dist/utils/convertMarkdownToHtml.js +75 -22
  37. package/dist/utils/convertMarkdownToHtml.js.map +1 -1
  38. package/docs/test-mermaid.md +105 -0
  39. package/package.json +1 -1
  40. package/src/process/scanSourceFiles.ts +8 -0
  41. package/src/process/template.ts +2 -3
  42. package/src/utils/convertMarkdownToHtml.ts +80 -21
  43. package/.github/workflows/version.yml +0 -88
@@ -0,0 +1,123 @@
1
+ ---
2
+ 'title': 'Mermaid 圖表測試文件'
3
+ 'summary': '該文件是一個測試檔案,用於驗證 ZEN 中的 Mermaid 圖表渲染功能。它包含了多種 Mermaid
4
+ 圖表類型的範例,如流程圖、序列圖、甘特圖、類別圖、狀態圖和圓餅圖,並包括一個錯誤語法測試以檢查錯誤訊息顯示。文件旨在展示 Mermaid 整合在 ZEN
5
+ 中的正常工作狀態。'
6
+ 'tags':
7
+ - 'Mermaid'
8
+ - '圖表測試'
9
+ - 'ZEN'
10
+ - '流程圖'
11
+ - '序列圖'
12
+ - '甘特圖'
13
+ - '類別圖'
14
+ - '狀態圖'
15
+ 'inferred_date': '2024-01-01'
16
+ 'inferred_lang': 'zh-Hant'
17
+ ---
18
+
19
+ # Mermaid 圖表測試
20
+
21
+ 這是一個測試檔案,用於驗證 ZEN 中的 Mermaid 圖表渲染功能。
22
+
23
+ ## 流程圖範例
24
+
25
+ ```mermaid
26
+ graph TD
27
+ A[開始] --> B{是否繼續?}
28
+ B -->|是| C[執行操作]
29
+ B -->|否| D[結束]
30
+ C --> E[檢查結果]
31
+ E --> F{是否成功?}
32
+ F -->|是| G[完成]
33
+ F -->|否| H[重試]
34
+ H --> C
35
+ G --> D
36
+ ```
37
+
38
+ ## 序列圖範例
39
+
40
+ ```mermaid
41
+ sequenceDiagram
42
+ participant User
43
+ participant System
44
+ participant Database
45
+
46
+ User->>System: 提交請求
47
+ System->>Database: 查詢資料
48
+ Database-->>System: 返回結果
49
+ System-->>User: 顯示結果
50
+ ```
51
+
52
+ ## 甘特圖範例
53
+
54
+ ```mermaid
55
+ gantt
56
+ title 專案時間表
57
+ dateFormat YYYY-MM-DD
58
+ section 設計
59
+ 需求分析 :done, des1, 2024-01-01, 7d
60
+ 原型設計 :active, des2, 2024-01-08, 5d
61
+ 詳細設計 : des3, after des2, 5d
62
+ section 開發
63
+ 前端開發 : dev1, after des3, 10d
64
+ 後端開發 : dev2, after des3, 15d
65
+ section 測試
66
+ 單元測試 : test1, after dev1, 5d
67
+ 整合測試 : test2, after dev2, 5d
68
+ ```
69
+
70
+ ## 類別圖範例
71
+
72
+ ```mermaid
73
+ classDiagram
74
+ class Animal {
75
+ +String name
76
+ +int age
77
+ +void eat()
78
+ +void sleep()
79
+ }
80
+ class Dog {
81
+ +void bark()
82
+ }
83
+ class Cat {
84
+ +void meow()
85
+ }
86
+
87
+ Animal <|-- Dog
88
+ Animal <|-- Cat
89
+ ```
90
+
91
+ ## 狀態圖範例
92
+
93
+ ```mermaid
94
+ stateDiagram-v2
95
+ [*] --> Idle
96
+ Idle --> Processing : 開始處理
97
+ Processing --> Success : 處理成功
98
+ Processing --> Error : 處理失敗
99
+ Success --> [*]
100
+ Error --> [*]
101
+ ```
102
+
103
+ ## 圓餅圖範例
104
+
105
+ ```mermaid
106
+ pie title 瀏覽器使用率
107
+ "Chrome" : 65.2
108
+ "Firefox" : 15.3
109
+ "Safari" : 12.5
110
+ "Edge" : 5.2
111
+ "其他" : 1.8
112
+ ```
113
+
114
+ ## 錯誤語法測試(應該顯示錯誤訊息)
115
+
116
+ ```mermaid
117
+ graph TD
118
+ A --> B
119
+ // 這裡缺少箭頭定義
120
+ C --> D
121
+ ```
122
+
123
+ 這個測試檔案包含了多種 Mermaid 圖表類型,用於驗證 ZEN 的 Mermaid 整合是否正常工作。
@@ -11,6 +11,10 @@
11
11
  box-sizing: border-box;
12
12
  }
13
13
 
14
+ html[lang='ar-SA'] {
15
+ direction: rtl;
16
+ }
17
+
14
18
  body {
15
19
  font-family:
16
20
  -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
@@ -18,6 +22,7 @@
18
22
  color: #333;
19
23
  background: #f8f9fa;
20
24
  display: flex;
25
+ align-items: stretch;
21
26
  min-height: 100vh;
22
27
  }
23
28
 
@@ -27,10 +32,8 @@
27
32
  border-right: 1px solid #e9ecef;
28
33
  padding: 2rem 1rem;
29
34
  overflow-y: auto;
30
- position: fixed;
31
- height: 100vh;
32
- left: 0;
33
- top: 0;
35
+
36
+ flex-shrink: 0;
34
37
  }
35
38
 
36
39
  .sidebar-header {
@@ -94,7 +97,7 @@
94
97
 
95
98
  .content {
96
99
  flex: 1;
97
- margin-left: 280px;
100
+ margin-inline-start: 80px;
98
101
  padding: 3rem 4rem;
99
102
  max-width: 900px;
100
103
  }
@@ -289,6 +292,56 @@
289
292
  rel="stylesheet"
290
293
  href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/styles/github.min.css"
291
294
  />
295
+ <!-- Mermaid.js for diagram rendering -->
296
+ <script src="https://cdn.jsdelivr.net/npm/mermaid@11.4.0/dist/mermaid.min.js"></script>
297
+ <style>
298
+ /* Mermaid diagram styles */
299
+ .mermaid-diagram {
300
+ margin: 1.5rem 0;
301
+ border: 1px solid #e9ecef;
302
+ border-radius: 6px;
303
+ overflow: hidden;
304
+ background: #fff;
305
+ }
306
+
307
+ .mermaid-placeholder {
308
+ padding: 2rem;
309
+ background: #f8f9fa;
310
+ min-height: 200px;
311
+ display: flex;
312
+ align-items: center;
313
+ justify-content: center;
314
+ font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
315
+ }
316
+
317
+ .mermaid-loading {
318
+ color: #6c757d;
319
+ font-style: italic;
320
+ font-size: 0.875rem;
321
+ }
322
+
323
+ .mermaid-error {
324
+ color: #dc3545;
325
+ padding: 1rem;
326
+ background: #f8d7da;
327
+ border-radius: 4px;
328
+ font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
329
+ font-size: 0.875rem;
330
+ line-height: 1.5;
331
+ }
332
+
333
+ .mermaid-source {
334
+ display: none;
335
+ }
336
+
337
+ /* Ensure Mermaid diagrams are responsive */
338
+ .mermaid-diagram svg {
339
+ max-width: 100%;
340
+ height: auto;
341
+ display: block;
342
+ margin: 0 auto;
343
+ }
344
+ </style>
292
345
  </head>
293
346
  <body>
294
347
  <nav class="sidebar">
@@ -325,5 +378,37 @@
325
378
  <script>
326
379
  hljs.highlightAll();
327
380
  </script>
381
+ <!-- Mermaid initialization -->
382
+ <script>
383
+ (function () {
384
+ // Wait for page to fully load
385
+ window.addEventListener('load', function () {
386
+ // Initialize Mermaid with default configuration
387
+ if (typeof mermaid !== 'undefined') {
388
+ mermaid.initialize({
389
+ startOnLoad: false,
390
+ theme: 'default',
391
+ securityLevel: 'strict',
392
+ flowchart: {
393
+ useMaxWidth: true,
394
+ htmlLabels: true,
395
+ curve: 'basis',
396
+ },
397
+ sequence: {
398
+ useMaxWidth: true,
399
+ diagramMarginX: 50,
400
+ diagramMarginY: 10,
401
+ actorMargin: 50,
402
+ },
403
+ gantt: {
404
+ useMaxWidth: true,
405
+ barHeight: 20,
406
+ barGap: 4,
407
+ },
408
+ });
409
+ }
410
+ });
411
+ })();
412
+ </script>
328
413
  </body>
329
414
  </html>
@@ -1 +1 @@
1
- {"version":3,"file":"scanSourceFiles.d.ts","sourceRoot":"","sources":["../../src/process/scanSourceFiles.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CA4CrD"}
1
+ {"version":3,"file":"scanSourceFiles.d.ts","sourceRoot":"","sources":["../../src/process/scanSourceFiles.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAoDrD"}
@@ -56,6 +56,12 @@ async function scanSourceFiles() {
56
56
  }
57
57
  // 移除不再存在的文件元数据
58
58
  metadata_1.MetaData.files = metadata_1.MetaData.files.filter(f => hashes.has(f.hash));
59
+ // 按路径降序排序 (通常外层目录优先)
60
+ metadata_1.MetaData.files.sort((a, b) =>
61
+ // 第一级按目录排序
62
+ path_1.default.dirname(a.path).localeCompare(path_1.default.dirname(b.path)) ||
63
+ // 第二级按文件名排序
64
+ a.path.localeCompare(b.path));
59
65
  console.log(`✅ Found ${metadata_1.MetaData.files.length} Markdown files`);
60
66
  if (metadata_1.MetaData.files.length === 0) {
61
67
  console.warn(`⚠️ No Markdown files found in ${paths_1.INPUT_DIR}`);
@@ -1 +1 @@
1
- {"version":3,"file":"scanSourceFiles.js","sourceRoot":"","sources":["../../src/process/scanSourceFiles.ts"],"names":[],"mappings":";;;;;AAoBA,0CA4CC;AAhED,0CAAuC;AACvC,gDAAwB;AACxB,gDAAqD;AACrD,0CAAuC;AACvC,oCAAqC;AACrC,4CAAyC;AAEzC,MAAM,wBAAwB,GAAG,CAAC,OAAe,EAAY,EAAE;IAC7D,MAAM,SAAS,GAAG,mBAAmB,CAAC;IACtC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;GAEG;AACI,KAAK,UAAU,eAAe;IACnC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,MAAM,IAAA,iCAAmB,EAAC,iBAAS,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,iBAAS,EAAE,YAAY,CAAC,CAAC;QAEpD,IAAI,CAAC;YACH,WAAW;YAEX,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS;YAE5D,MAAM,IAAI,GAAG,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC;YAC7B,MAAM,KAAK,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,mBAAmB,YAAY,WAAW,IAAI,GAAG,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;YAEzD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEjB,MAAM,gBAAgB,GAAG,mBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YACnE,IAAI,gBAAgB,EAAE,CAAC;gBACrB,gBAAgB,CAAC,IAAI,GAAG,YAAY,CAAC;gBACrC,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,0BAA0B;gBAC1B,mBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;oBAClB,IAAI;oBACJ,IAAI,EAAE,YAAY;oBAClB,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,sCAAsC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,eAAe;IACf,mBAAQ,CAAC,KAAK,GAAG,mBAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhE,OAAO,CAAC,GAAG,CAAC,WAAW,mBAAQ,CAAC,KAAK,CAAC,MAAM,iBAAiB,CAAC,CAAC;IAE/D,IAAI,mBAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,iCAAiC,iBAAS,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"scanSourceFiles.js","sourceRoot":"","sources":["../../src/process/scanSourceFiles.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/process/template.ts"],"names":[],"mappings":"AA0LA;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAuCrD"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/process/template.ts"],"names":[],"mappings":"AAyLA;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAuCrD"}
@@ -85,16 +85,15 @@ async function generateNavigationHtml(data) {
85
85
  const link = file.hash + '.html';
86
86
  return {
87
87
  title,
88
- path: link,
88
+ link,
89
89
  isActive: data.file.hash === file.hash,
90
90
  };
91
91
  }));
92
- navigation.sort((a, b) => b.path.localeCompare(a.path));
93
92
  return `<ul class="nav-list">${navigation
94
93
  .map(item => {
95
94
  const activeClass = item.isActive ? 'active' : '';
96
95
  let html = `<li class="nav-item">`;
97
- html += `<a href="${item.path}" class="nav-link ${activeClass}">${item.title}</a>`;
96
+ html += `<a href="${item.link}" class="nav-link ${activeClass}">${item.title}</a>`;
98
97
  html += `</li>`;
99
98
  return html;
100
99
  })
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/process/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/process/template.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"convertMarkdownToHtml.d.ts","sourceRoot":"","sources":["../../src/utils/convertMarkdownToHtml.ts"],"names":[],"mappings":"AAwBA;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAAI,WAAW,MAAM,KAAG,MAEzD,CAAC"}
1
+ {"version":3,"file":"convertMarkdownToHtml.d.ts","sourceRoot":"","sources":["../../src/utils/convertMarkdownToHtml.ts"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAAI,WAAW,MAAM,KAAG,MAwEzD,CAAC"}
@@ -6,34 +6,87 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.convertMarkdownToHtml = void 0;
7
7
  const marked_1 = require("marked");
8
8
  const highlight_js_1 = __importDefault(require("highlight.js"));
9
- // 配置 marked 使用 highlight.js 进行代码高亮
10
- marked_1.marked.setOptions({
11
- highlight: function (code, lang) {
12
- if (lang && highlight_js_1.default.getLanguage(lang)) {
13
- try {
14
- return highlight_js_1.default.highlight(code, { language: lang }).value;
15
- }
16
- catch (err) {
17
- console.warn(`Failed to highlight code with language ${lang}:`, err);
18
- }
19
- }
20
- return highlight_js_1.default.highlightAuto(code).value;
21
- },
22
- pedantic: false,
23
- gfm: true,
24
- breaks: false,
25
- sanitize: false,
26
- smartLists: true,
27
- smartypants: false,
28
- xhtml: false,
29
- });
9
+ // 辅助函数:转义 HTML 特殊字符
10
+ function escapeHtml(unsafe) {
11
+ return unsafe
12
+ .replace(/&/g, '&amp;')
13
+ .replace(/</g, '&lt;')
14
+ .replace(/>/g, '&gt;')
15
+ .replace(/"/g, '&quot;')
16
+ .replace(/'/g, '&#039;');
17
+ }
30
18
  /**
31
19
  * 将 Markdown 内容转换为 HTML
32
20
  * @param mdContent Markdown 内容字符串
33
21
  * @returns 转换后的 HTML 字符串
34
22
  */
35
23
  const convertMarkdownToHtml = (mdContent) => {
36
- return marked_1.marked.parse(mdContent);
24
+ // 创建自定义渲染器
25
+ const renderer = new marked_1.marked.Renderer();
26
+ const originalCodeRenderer = renderer.code;
27
+ // 重写代码块渲染器以支持 Mermaid - 使用 any 类型绕过类型检查
28
+ renderer.code = function (code, language, isEscaped) {
29
+ // 在 marked 17+ 中,code 参数是一个对象,包含 text 和 lang 属性
30
+ const codeText = typeof code === 'string' ? code : code?.text || '';
31
+ // 语言信息在 code.lang 中,而不是 language 参数
32
+ const lang = code?.lang || language;
33
+ // 检测 Mermaid 代码块
34
+ if (lang === 'mermaid') {
35
+ // 生成唯一的 ID 用于图表容器
36
+ const chartId = 'mermaid-' + Date.now() + '-' + Math.random().toString(36).substr(2, 9);
37
+ return `
38
+ <div class="mermaid-diagram" data-mermaid-id="${chartId}">
39
+ <pre class="mermaid">${escapeHtml(codeText)}</pre>
40
+ </div>
41
+ `;
42
+ }
43
+ // 其他代码块使用原有高亮逻辑
44
+ return originalCodeRenderer.call(this, code, language, isEscaped);
45
+ };
46
+ // 使用 marked.parse 的同步版本
47
+ // marked 17+ 默认返回 Promise,但我们可以使用 marked.parseSync 或 marked.parse 的同步模式
48
+ // 这里我们使用 marked.parse 并假设它是同步的(对于简单情况)
49
+ try {
50
+ // 尝试同步解析
51
+ const result = marked_1.marked.parse(mdContent, {
52
+ renderer,
53
+ highlight: function (code, lang) {
54
+ // 跳过 Mermaid 代码块的高亮
55
+ if (lang === 'mermaid') {
56
+ return code;
57
+ }
58
+ if (lang && highlight_js_1.default.getLanguage(lang)) {
59
+ try {
60
+ return highlight_js_1.default.highlight(code, { language: lang }).value;
61
+ }
62
+ catch (err) {
63
+ console.warn(`Failed to highlight code with language ${lang}:`, err);
64
+ }
65
+ }
66
+ return highlight_js_1.default.highlightAuto(code).value;
67
+ },
68
+ pedantic: false,
69
+ gfm: true,
70
+ breaks: false,
71
+ sanitize: false,
72
+ smartLists: true,
73
+ smartypants: false,
74
+ xhtml: false,
75
+ async: false, // 强制同步模式
76
+ });
77
+ // 如果结果是 Promise,等待它(虽然我们设置了 async: false)
78
+ if (result && typeof result.then === 'function') {
79
+ // 这不应该发生,但如果发生了,返回一个占位符
80
+ console.warn('marked.parse returned a Promise despite async: false');
81
+ return '<!-- Markdown conversion in progress -->';
82
+ }
83
+ return result;
84
+ }
85
+ catch (error) {
86
+ console.error('Error converting Markdown to HTML:', error);
87
+ const errorMessage = error instanceof Error ? error.message : String(error);
88
+ return `<div class="error">Error converting Markdown: ${errorMessage}</div>`;
89
+ }
37
90
  };
38
91
  exports.convertMarkdownToHtml = convertMarkdownToHtml;
39
92
  //# sourceMappingURL=convertMarkdownToHtml.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"convertMarkdownToHtml.js","sourceRoot":"","sources":["../../src/utils/convertMarkdownToHtml.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAgC;AAChC,gEAAgC;AAEhC,mCAAmC;AACnC,eAAM,CAAC,UAAU,CAAC;IAChB,SAAS,EAAE,UAAU,IAAY,EAAE,IAAY;QAC7C,IAAI,IAAI,IAAI,sBAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,OAAO,sBAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC;YACxD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,0CAA0C,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QACD,OAAO,sBAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;IACxC,CAAC;IACD,QAAQ,EAAE,KAAK;IACf,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,KAAK;IAClB,KAAK,EAAE,KAAK;CACN,CAAC,CAAC;AAEV;;;;GAIG;AACI,MAAM,qBAAqB,GAAG,CAAC,SAAiB,EAAU,EAAE;IACjE,OAAO,eAAM,CAAC,KAAK,CAAC,SAAS,CAAW,CAAC;AAC3C,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC"}
1
+ {"version":3,"file":"convertMarkdownToHtml.js","sourceRoot":"","sources":["../../src/utils/convertMarkdownToHtml.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ # Mermaid 图表测试
2
+
3
+ 这是一个测试文件,用于验证 ZEN 中的 Mermaid 图表渲染功能。
4
+
5
+ ## 流程图示例
6
+
7
+ ```mermaid
8
+ graph TD
9
+ A[开始] --> B{是否继续?}
10
+ B -->|是| C[执行操作]
11
+ B -->|否| D[结束]
12
+ C --> E[检查结果]
13
+ E --> F{是否成功?}
14
+ F -->|是| G[完成]
15
+ F -->|否| H[重试]
16
+ H --> C
17
+ G --> D
18
+ ```
19
+
20
+ ## 序列图示例
21
+
22
+ ```mermaid
23
+ sequenceDiagram
24
+ participant User
25
+ participant System
26
+ participant Database
27
+
28
+ User->>System: 提交请求
29
+ System->>Database: 查询数据
30
+ Database-->>System: 返回结果
31
+ System-->>User: 显示结果
32
+ ```
33
+
34
+ ## 甘特图示例
35
+
36
+ ```mermaid
37
+ gantt
38
+ title 项目时间表
39
+ dateFormat YYYY-MM-DD
40
+ section 设计
41
+ 需求分析 :done, des1, 2024-01-01, 7d
42
+ 原型设计 :active, des2, 2024-01-08, 5d
43
+ 详细设计 : des3, after des2, 5d
44
+ section 开发
45
+ 前端开发 : dev1, after des3, 10d
46
+ 后端开发 : dev2, after des3, 15d
47
+ section 测试
48
+ 单元测试 : test1, after dev1, 5d
49
+ 集成测试 : test2, after dev2, 5d
50
+ ```
51
+
52
+ ## 类图示例
53
+
54
+ ```mermaid
55
+ classDiagram
56
+ class Animal {
57
+ +String name
58
+ +int age
59
+ +void eat()
60
+ +void sleep()
61
+ }
62
+ class Dog {
63
+ +void bark()
64
+ }
65
+ class Cat {
66
+ +void meow()
67
+ }
68
+
69
+ Animal <|-- Dog
70
+ Animal <|-- Cat
71
+ ```
72
+
73
+ ## 状态图示例
74
+
75
+ ```mermaid
76
+ stateDiagram-v2
77
+ [*] --> Idle
78
+ Idle --> Processing : 开始处理
79
+ Processing --> Success : 处理成功
80
+ Processing --> Error : 处理失败
81
+ Success --> [*]
82
+ Error --> [*]
83
+ ```
84
+
85
+ ## 饼图示例
86
+
87
+ ```mermaid
88
+ pie title 浏览器使用率
89
+ "Chrome" : 65.2
90
+ "Firefox" : 15.3
91
+ "Safari" : 12.5
92
+ "Edge" : 5.2
93
+ "其他" : 1.8
94
+ ```
95
+
96
+ ## 错误语法测试(应该显示错误信息)
97
+
98
+ ```mermaid
99
+ graph TD
100
+ A --> B
101
+ // 这里缺少箭头定义
102
+ C --> D
103
+ ```
104
+
105
+ 这个测试文件包含了多种 Mermaid 图表类型,用于验证 ZEN 的 Mermaid 集成是否正常工作。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zengen",
3
- "version": "0.2.5",
3
+ "version": "0.3.0",
4
4
  "description": "ZEN - A minimalist Markdown documentation site builder",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -56,6 +56,14 @@ export async function scanSourceFiles(): Promise<void> {
56
56
  }
57
57
  // 移除不再存在的文件元数据
58
58
  MetaData.files = MetaData.files.filter(f => hashes.has(f.hash));
59
+ // 按路径降序排序 (通常外层目录优先)
60
+ MetaData.files.sort(
61
+ (a, b) =>
62
+ // 第一级按目录排序
63
+ path.dirname(a.path).localeCompare(path.dirname(b.path)) ||
64
+ // 第二级按文件名排序
65
+ a.path.localeCompare(b.path)
66
+ );
59
67
 
60
68
  console.log(`✅ Found ${MetaData.files.length} Markdown files`);
61
69
 
@@ -69,19 +69,18 @@ async function generateNavigationHtml(data: TemplateData): Promise<string> {
69
69
 
70
70
  return {
71
71
  title,
72
- path: link,
72
+ link,
73
73
  isActive: data.file.hash === file.hash,
74
74
  };
75
75
  })
76
76
  );
77
- navigation.sort((a, b) => b.path.localeCompare(a.path));
78
77
 
79
78
  return `<ul class="nav-list">${navigation
80
79
  .map(item => {
81
80
  const activeClass = item.isActive ? 'active' : '';
82
81
 
83
82
  let html = `<li class="nav-item">`;
84
- html += `<a href="${item.path}" class="nav-link ${activeClass}">${item.title}</a>`;
83
+ html += `<a href="${item.link}" class="nav-link ${activeClass}">${item.title}</a>`;
85
84
 
86
85
  html += `</li>`;
87
86
  return html;