Skip to content

Commit 2758547

Browse files
committed
V3.2.5 Update - RC3
1 parent 2aac84a commit 2758547

5 files changed

Lines changed: 19 additions & 8 deletions

File tree

docs/document/js-deploy.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,10 @@ let Abra = new Abracadabra(); //不附带参数,
6060
* @param {string} mode 指定模式,可以是 ENCRYPT DECRYPT 中的一种;
6161
* @param {string} key 指定密钥,默认是 ABRACADABRA;
6262
* @param {WenyanConfig} WenyanConfigObj 文言文的生成配置;
63+
* @param {any}callback 回调函数,获取执行过程中特定位置的结果
6364
* @return {number} 成功则返回 0(失败不会返回,会抛出异常)
6465
*/
65-
Abra.WenyanInput(input, mode, key, {...});
66+
Abra.WenyanInput(input, mode, key, {...}, callback);
6667
```
6768

6869
第一个参数 `input` 接受两种类型的输入,分别是 `String``Uint8Array`,这是此前在实例化的时候指定的输入类型。
@@ -75,6 +76,8 @@ Abra.WenyanInput(input, mode, key, {...});
7576

7677
如果指定了错误的密码,那么在解码/解密数据校验过程中会抛出错误。
7778

79+
第五个参数接受一个 callback 函数,程序会在执行中关键位置多次调用此函数,以便调试,无特殊用途可忽略此项。
80+
7881
第四个参数接受一个`WenyanConfig`配置对象的输入,仅在加密的时候需要:
7982

8083
```javascript

src/javascript/ChineseMappingHelper.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -662,10 +662,6 @@ export class WenyanSimulator {
662662

663663
this.RoundKey(); //首次对表前,先转动一次转轮
664664
for (let j = 0; j < Sentence.length; j++) {
665-
try {
666-
if (this.callback != null)
667-
this.callback(new CallbackObj("ENC_MAPTEMP", TempStr1));
668-
} catch (err) {}
669665
hasSpecialEndSymbol = false;
670666
CommaNumInSentence = 0;
671667
for (let k = 0; k < Sentence[j].length; k++) {
@@ -758,6 +754,10 @@ export class WenyanSimulator {
758754
//如果已填充的有效载荷满足了预计添加的载荷,那么标记已完成。
759755
Finished = true;
760756
}
757+
try {
758+
if (this.callback != null)
759+
this.callback(new CallbackObj("ENC_MAPTEMP", TempStr1));
760+
} catch (err) {}
761761
}
762762
//这里是句式和句式的外层控制循环
763763
if (Finished) {
@@ -772,6 +772,11 @@ export class WenyanSimulator {
772772
LastQuoteMark = false;
773773
}
774774
NoAutoSymbol = false;
775+
try {
776+
if (this.callback != null)
777+
this.callback(new CallbackObj("ENC_MAPTEMP", TempStr1));
778+
} catch (err) {}
779+
775780
break;
776781
} else {
777782
if (q && !hasSpecialEndSymbol && !NoAutoSymbol) {

src/javascript/RoundObfusHelper.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import CryptoJS from "crypto-js";
1414
import { wordArrayToUint8Array } from "./Misc.js";
15+
import { CallbackObj } from "./CoreHandler.js";
1516

1617
export class RoundObfus {
1718
constructor(key, callback = null) {

src/javascript/main.d.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,15 @@ export class Abracadabra {
3434
* @param {string} mode 指定模式,可以是 ENCRYPT DECRYPT 中的一种;
3535
* @param {string} key 指定密钥,默认是 ABRACADABRA;
3636
* @param {WenyanConfig} WenyanConfigObj 文言文的生成配置;
37+
* @param {any}callback 回调函数,获取执行过程中特定位置的结果
3738
* @return {number} 成功则返回 0(失败不会返回,会抛出异常)
3839
*/
3940
WenyanInput(
4041
input: string | Uint8Array,
4142
mode: "ENCRYPT" | "DECRYPT",
4243
key?: string,
43-
WenyanConfigObj?: WenyanConfig
44+
WenyanConfigObj?: WenyanConfig,
45+
callback?: any
4446
): number;
4547

4648
/**

src/javascript/main.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ export class Abracadabra {
8989
} else if (mode == Abracadabra.DECRYPT) {
9090
let Nextinput = new Object();
9191
Nextinput.output = input;
92-
this.#res = Core.Dec(Nextinput, key);
92+
this.#res = Core.Dec(Nextinput, key, callback);
9393
}
9494
return 0;
9595
} else if (this.#input == Abracadabra.TEXT) {
@@ -102,7 +102,7 @@ export class Abracadabra {
102102
if (mode == Abracadabra.ENCRYPT) {
103103
this.#res = Core.Enc(Nextinput, key, WenyanConfigObj, callback);
104104
} else if (mode == Abracadabra.DECRYPT) {
105-
this.#res = Core.Dec(Nextinput, key);
105+
this.#res = Core.Dec(Nextinput, key, callback);
106106
}
107107
return 0;
108108
}

0 commit comments

Comments
 (0)