|
1 | 1 | <% (async () => { |
2 | | - // 【无星号版】使用立即执行函数包裹,完美避开语法解析 Bug |
| 2 | + // --- 终极修正版:强制创建 .html 后缀文件 --- |
3 | 3 |
|
4 | 4 | // 1. 获取剪贴板 |
5 | 5 | const htmlContent = await tp.system.clipboard(); |
6 | 6 |
|
7 | 7 | // 2. 建议名称逻辑 |
8 | 8 | let suggestion = "new-chart"; |
9 | 9 | if (tp.file && tp.file.title) { |
10 | | - // 这里的正则把空格替换为横杠,并转小写 |
11 | 10 | suggestion = tp.file.title.replace(/\s+/g, "-").toLowerCase(); |
12 | 11 | } |
13 | 12 |
|
14 | 13 | // 3. 弹窗询问 |
15 | 14 | const folderName = await tp.system.prompt("请输入图表文件夹名称 (英文ID)", suggestion); |
16 | 15 |
|
17 | 16 | if (folderName) { |
18 | | - // ⚠️ 路径配置:根据你的目录结构,这里指向 source/charts/ |
| 17 | + // 定义路径 |
19 | 18 | const targetFolder = `source/charts/${folderName}`; |
20 | | - const targetFile = `${targetFolder}/index.html`; |
21 | | - const vault = app.vault; |
| 19 | + const targetFilePath = `${targetFolder}/index.html`; // 完整路径 |
22 | 20 |
|
23 | | - // 检查剪贴板 |
| 21 | + const vault = app.vault; |
| 22 | + |
24 | 23 | if (!htmlContent || htmlContent.trim() === "") { |
25 | 24 | new Notice("❌ 剪贴板为空!请先复制 HTML 代码。"); |
26 | 25 | } else { |
27 | | - // 检查文件是否存在 |
28 | | - const existingFile = vault.getAbstractFileByPath(targetFile); |
| 26 | + |
| 27 | + // A. 先检查文件夹是否存在,不存在则手动创建 |
| 28 | + // (app.vault.create 不会自动创建父文件夹,所以要手动来) |
| 29 | + if (!vault.getAbstractFileByPath(targetFolder)) { |
| 30 | + await vault.createFolder(targetFolder); |
| 31 | + } |
| 32 | + |
| 33 | + // B. 检查文件是否存在 |
| 34 | + const existingFile = vault.getAbstractFileByPath(targetFilePath); |
29 | 35 | |
30 | 36 | if (existingFile) { |
31 | 37 | const confirm = await tp.system.prompt(`⚠️ ${folderName} 已存在,覆盖吗?(yes/no)`); |
|
34 | 40 | new Notice(`✅ 已更新图表: ${folderName}`); |
35 | 41 | } |
36 | 42 | } else { |
| 43 | + // C. 核心修改:使用底层 API 直接创建文件 |
| 44 | + // 这会创建一个纯正的 .html 文件,没有 .md 后缀 |
37 | 45 | try { |
38 | | - // 创建新文件 |
39 | | - await tp.file.create_new(htmlContent, "index.html", false, targetFolder); |
40 | | - new Notice(`🎉 创建成功: ${folderName}`); |
| 46 | + await vault.create(targetFilePath, htmlContent); |
| 47 | + new Notice(`🎉 创建成功: ${targetFilePath}`); |
41 | 48 | } catch (e) { |
42 | 49 | new Notice(`❌ 创建失败: ${e.message}`); |
43 | 50 | console.error(e); |
|
46 | 53 | } |
47 | 54 | } |
48 | 55 |
|
49 | | - // 4. 重要:返回空字符串,这样文档里就不会显示 undefined |
50 | 56 | return ""; |
51 | 57 | })() %> |
0 commit comments