Skip to content

Commit 2a232a8

Browse files
committed
version: 0.5.2
1 parent fdc2b4d commit 2a232a8

File tree

7 files changed

+40
-5
lines changed

7 files changed

+40
-5
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ Click the menu button on the left side of a Pseudocode Widget block. An option l
8686

8787
## Changelog
8888

89+
+ v0.5.2
90+
+ Fix: need manual refresh when load and unload plugin
91+
+ Fix: pseudocode block view is editable
8992
+ v0.5.1
9093
+ Fix: compile always fails
9194
+ Feature: PDF export support

README_zh_CN.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@
8585

8686
## 更新日志
8787

88+
+ v0.5.2
89+
+ 修复缺陷:启动和关闭插件时需刷新文档才生效
90+
+ 修复缺陷:渲染出的代码块可被编辑导致再次编译时出错
8891
+ v0.5.1
8992
+ 修复缺陷:伪代码总是编译错误的问题
9093
+ 功能特征:增加PDF导出支持

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "siyuan-embed-pseudocode",
3-
"version": "0.5.1",
3+
"version": "0.5.2",
44
"type": "module",
55
"description": "This is a plugin for siyuan",
66
"author": "",

plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "siyuan-embed-pseudocode",
33
"author": "Yuxin Zhao",
44
"url": "https://github.com/YuxinZhaozyx/siyuan-embed-pseudocode",
5-
"version": "0.5.1",
5+
"version": "0.5.2",
66
"minAppVersion": "3.3.0",
77
"disabledInPublish": false,
88
"backends": [

src/daemon.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1-
import { setAutoCompileMuatationObserver } from "./main";
1+
import {
2+
setAutoCompileMuatationObserver,
3+
turnOnAllPseudocodeView,
4+
} from "./main";
25
import { initPseudocode } from "./pseudocode";
36

47
console.log("pseudocode daemon start");
58

69
initPseudocode();
10+
turnOnAllPseudocodeView();
711
setAutoCompileMuatationObserver(document.documentElement);

src/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import {
2020
updatePseudocodeViewAttribute,
2121
switchPseudocodeView,
2222
setAutoCompileMuatationObserver,
23+
turnOnAllPseudocodeView,
24+
turnOffAllPseudocodeView,
2325
} from "@/main";
2426

2527
let PluginInfo = {
@@ -58,6 +60,8 @@ export default class PseudocodePlugin extends Plugin {
5860
this.setPdfScript();
5961

6062
initPseudocode();
63+
64+
turnOnAllPseudocodeView();
6165

6266
this._mutationObserver = setAutoCompileMuatationObserver(document.body);
6367

@@ -92,6 +96,7 @@ export default class PseudocodePlugin extends Plugin {
9296
}
9397

9498
onunload() {
99+
turnOffAllPseudocodeView();
95100
if (this._mutationObserver) this._mutationObserver.disconnect();
96101
if (this._clickBlockIconHandler) this.eventBus.off("click-blockicon", this._clickBlockIconHandler);
97102
if (this._globalKeyDownHandler) document.documentElement.removeEventListener("keydown", this._globalKeyDownHandler);

src/main.ts

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,24 @@
11
import { fetchPost, fetchSyncPost } from "@/utils/fetch";
22
import { compilePseudocode } from "@/pseudocode";
33

4+
export function turnOnAllPseudocodeView() {
5+
document.querySelectorAll(".code-block[data-type='NodeCodeBlock'][custom-view='pseudocode']").forEach((blockElement: HTMLElement) => {
6+
const blockID = blockElement.getAttribute("data-node-id");
7+
const code = getBlockPseudocodeCode(blockElement);
8+
const pseudocodeConfig = getBlockPseudocodeConfigByElement(blockElement);
9+
setAutoAlgorithmNumber(blockElement, pseudocodeConfig);
10+
const compileResult = compilePseudocode(code, pseudocodeConfig);
11+
updatePseudocodeViewAttribute(blockID, pseudocodeConfig.view);
12+
updatePseudocodeElements(blockID, pseudocodeConfig, compileResult);
13+
});
14+
}
15+
16+
export function turnOffAllPseudocodeView() {
17+
document.querySelectorAll(".code-block[data-type='NodeCodeBlock'][custom-view='pseudocode']").forEach((blockElement: HTMLElement) => {
18+
switchPseudocodeView("off", blockElement);
19+
});
20+
}
21+
422
export function setAutoCompileMuatationObserver(element: HTMLElement): MutationObserver {
523
const mutationObserver = new MutationObserver(mutations => {
624
for (const mutation of mutations) {
@@ -88,11 +106,10 @@ export function switchPseudocodeView(mode: "on" | "off", blockElement: HTMLEleme
88106
if (codeElement) {
89107
codeElement.classList.toggle("fn__none", mode === "on");
90108
blockElement.querySelector(".protyle-action__language").classList.toggle("fn__none", mode === "on");
91-
blockElement.setAttribute("custom-view", mode === "on" ? "pseudocode" : "");
92109
const containerElement = blockElement.querySelector(".pseudocode-container");
93110
if (mode === "on") {
94111
if (!containerElement) {
95-
codeElement.insertAdjacentHTML('afterend', '<div class="pseudocode-container"></div>');
112+
codeElement.insertAdjacentHTML('afterend', '<div class="pseudocode-container" contenteditable="false"></div>');
96113
}
97114
} else {
98115
if (containerElement) containerElement.remove();
@@ -101,6 +118,9 @@ export function switchPseudocodeView(mode: "on" | "off", blockElement: HTMLEleme
101118
}
102119

103120
export function updatePseudocodeViewAttribute(blockID: string, view: string) {
121+
document.querySelectorAll(`.code-block[data-node-id="${blockID}"]`).forEach((blockElement: HTMLElement) => {
122+
blockElement.setAttribute("custom-view", view);
123+
});
104124
fetchPost("/api/attr/setBlockAttrs", {
105125
id: blockID,
106126
attrs: {

0 commit comments

Comments
 (0)