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.
- package/.zen/meta.json +18 -0
- package/.zen/src/ar-SA/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/da-DK/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/de-DE/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/en-US/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/es-ES/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/es-MX/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/fi-FI/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/fr-FR/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/hi-IN/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/id-ID/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/it-IT/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/ja-JP/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/ko-KR/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/nl-NL/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/no-NO/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/pl-PL/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/pt-BR/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/pt-PT/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/ru-RU/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/sv-SE/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/th-TH/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/tr-TR/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/uk-UA/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/vi-VN/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/zh-Hans/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +123 -0
- package/.zen/src/zh-Hant/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +123 -0
- package/assets/templates/default/layout.html +90 -5
- package/dist/process/scanSourceFiles.d.ts.map +1 -1
- package/dist/process/scanSourceFiles.js +6 -0
- package/dist/process/scanSourceFiles.js.map +1 -1
- package/dist/process/template.d.ts.map +1 -1
- package/dist/process/template.js +2 -3
- package/dist/process/template.js.map +1 -1
- package/dist/utils/convertMarkdownToHtml.d.ts.map +1 -1
- package/dist/utils/convertMarkdownToHtml.js +75 -22
- package/dist/utils/convertMarkdownToHtml.js.map +1 -1
- package/docs/test-mermaid.md +105 -0
- package/package.json +1 -1
- package/src/process/scanSourceFiles.ts +8 -0
- package/src/process/template.ts +2 -3
- package/src/utils/convertMarkdownToHtml.ts +80 -21
- 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
|
-
|
|
31
|
-
|
|
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-
|
|
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,
|
|
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,
|
|
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":"
|
|
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"}
|
package/dist/process/template.js
CHANGED
|
@@ -85,16 +85,15 @@ async function generateNavigationHtml(data) {
|
|
|
85
85
|
const link = file.hash + '.html';
|
|
86
86
|
return {
|
|
87
87
|
title,
|
|
88
|
-
|
|
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.
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
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":"
|
|
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
|
-
//
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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, '&')
|
|
13
|
+
.replace(/</g, '<')
|
|
14
|
+
.replace(/>/g, '>')
|
|
15
|
+
.replace(/"/g, '"')
|
|
16
|
+
.replace(/'/g, ''');
|
|
17
|
+
}
|
|
30
18
|
/**
|
|
31
19
|
* 将 Markdown 内容转换为 HTML
|
|
32
20
|
* @param mdContent Markdown 内容字符串
|
|
33
21
|
* @returns 转换后的 HTML 字符串
|
|
34
22
|
*/
|
|
35
23
|
const convertMarkdownToHtml = (mdContent) => {
|
|
36
|
-
|
|
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,
|
|
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
|
@@ -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
|
|
package/src/process/template.ts
CHANGED
|
@@ -69,19 +69,18 @@ async function generateNavigationHtml(data: TemplateData): Promise<string> {
|
|
|
69
69
|
|
|
70
70
|
return {
|
|
71
71
|
title,
|
|
72
|
-
|
|
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.
|
|
83
|
+
html += `<a href="${item.link}" class="nav-link ${activeClass}">${item.title}</a>`;
|
|
85
84
|
|
|
86
85
|
html += `</li>`;
|
|
87
86
|
return html;
|