nadesiko3 3.6.41 → 3.6.44
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/batch/build_browsers.nako3 +1 -0
- package/batch/build_nako_version.nako3 +32 -8
- package/batch/command.txt +13 -12
- package/core/batch/build_nako_version.nako3 +1 -1
- package/core/package.json +2 -2
- package/core/src/nako_core_version.mjs +2 -2
- package/core/src/nako_core_version.mts +2 -2
- package/core/src/nako_csv.mjs +11 -4
- package/core/src/nako_csv.mts +15 -6
- package/core/src/nako_josi_list.mjs +1 -1
- package/core/src/nako_josi_list.mts +1 -1
- package/core/src/nako_lexer.mjs +1 -1
- package/core/src/nako_lexer.mts +1 -1
- package/core/src/plugin_csv.mjs +20 -0
- package/core/src/plugin_csv.mts +21 -3
- package/core/src/plugin_system.mjs +6 -6
- package/core/src/plugin_system.mts +7 -7
- package/core/test/func_test.mjs +0 -6
- package/core/test/plugin_csv_test.mjs +10 -0
- package/demo/browsers.html +13 -13
- package/doc/browsers.md +13 -13
- package/package.json +2 -2
- package/release/_hash.txt +32 -32
- package/release/_script-tags.txt +33 -33
- package/release/command.json +1 -1
- package/release/command.json.js +1 -1
- package/release/command_cnako3.json +1 -1
- package/release/command_list.json +1 -1
- package/release/edit_main.js +5 -5
- package/release/edit_main.js.map +2 -2
- package/release/editor.js +5 -5
- package/release/josi.json +0 -1
- package/release/plugin_caniuse.js +1 -1
- package/release/plugin_caniuse.js.map +2 -2
- package/release/plugin_kansuji.js.map +1 -1
- package/release/version.js +1 -1
- package/release/version_main.js +1 -1
- package/release/version_main.js.map +1 -1
- package/release/wnako3.js +39 -39
- package/release/wnako3.js.map +3 -3
- package/release/wnako3webworker.js +25 -25
- package/release/wnako3webworker.js.map +3 -3
- package/src/browsers.mjs +1 -1
- package/src/browsers.txt +25 -36
- package/src/cnako3mod.mjs +1 -1
- package/src/cnako3mod.mts +1 -1
- package/src/nako_version.mjs +2 -2
- package/src/nako_version.mts +2 -2
- package/src/plugin_browser_audio.mts +7 -7
- package/src/plugin_kansuji.mjs +1 -1
|
@@ -4,14 +4,23 @@
|
|
|
4
4
|
# -----------------------------------------------------
|
|
5
5
|
# ●説明
|
|
6
6
|
# package.json の内容を読んで ./src/nako_version.mts を生成
|
|
7
|
+
# core/package.json の内容を元に、/core/src/nako_version.mts を生成
|
|
7
8
|
# -----------------------------------------------------
|
|
9
|
+
# 定数の宣言
|
|
8
10
|
母艦パス取得してパス抽出して基本パスに代入。
|
|
9
|
-
「{基本パス}/package.json」を読んでJSONデコードして、Pに代入。
|
|
10
|
-
VER=P@"version"
|
|
11
|
-
定数[MAJOR,MINOR,PATCH]=(VERを「.」で区切る)
|
|
12
11
|
QS=『{』
|
|
13
12
|
QE=『}』
|
|
14
|
-
|
|
13
|
+
メインバージョン=「」
|
|
14
|
+
# --- メイン処理 ---
|
|
15
|
+
メインバージョン更新。# 必ず先に読む
|
|
16
|
+
コアバージョン更新
|
|
17
|
+
|
|
18
|
+
●メインバージョン更新とは:
|
|
19
|
+
「{基本パス}/package.json」を読んでJSONデコードして、Pに代入。
|
|
20
|
+
VER=P@"version"
|
|
21
|
+
メインバージョン=VER
|
|
22
|
+
定数[MAJOR,MINOR,PATCH]=(VERを「.」で区切る)
|
|
23
|
+
VS=「/**
|
|
15
24
|
* なでしこのバージョン情報
|
|
16
25
|
* package.json から自動的に作成されます。このファイルを編集しないでください。
|
|
17
26
|
*/
|
|
@@ -31,12 +40,27 @@ const nakoVersion: NakoVersion = {QS}
|
|
|
31
40
|
{QE}
|
|
32
41
|
export default nakoVersion
|
|
33
42
|
」
|
|
34
|
-
保存先=「{基本パス}/src/nako_version.mts」
|
|
35
|
-
VSを保存先へ保存。
|
|
36
|
-
「
|
|
43
|
+
保存先=「{基本パス}/src/nako_version.mts」
|
|
44
|
+
VSを保存先へ保存。
|
|
45
|
+
「
|
|
37
46
|
# ---------------------------------------------
|
|
38
|
-
# ●
|
|
47
|
+
# ● なでしこのバージョン情報(src/nako_version.mts)を更新しました。
|
|
39
48
|
# version {VER}
|
|
40
49
|
# file: {保存先}
|
|
41
50
|
# ---------------------------------------------
|
|
42
51
|
」を表示。
|
|
52
|
+
|
|
53
|
+
●コアバージョン更新とは:
|
|
54
|
+
もし、メインバージョン=空ならば:
|
|
55
|
+
「!! [ERROR] メインバージョンが間違っています」と表示。終わる。
|
|
56
|
+
CORE_PACKAGE=「{基本パス}/core/package.json」
|
|
57
|
+
CORE_PACKAGEを読んでJSONデコードして、Pに代入。
|
|
58
|
+
VER=P@"version"
|
|
59
|
+
「★★コアバージョンを勝手に書き換えます!!」と表示。
|
|
60
|
+
P@"version" = メインバージョン
|
|
61
|
+
PをJSONエンコード整形してSに代入。
|
|
62
|
+
CORE_PACKAGEにSを保存。
|
|
63
|
+
RES=「cnako3 "{基本パス}/core/batch/build_nako_version.nako3"」を起動待機。
|
|
64
|
+
RESを表示。
|
|
65
|
+
|
|
66
|
+
|
package/batch/command.txt
CHANGED
|
@@ -124,10 +124,10 @@
|
|
|
124
124
|
| 関数 | OR | AとBの | (ビット演算で)AとBの論理和を返す。 | OR | https://github.com/kujirahand/nadesiko3core/blob/main/src/plugin_system.mts#L1019
|
|
125
125
|
| 関数 | AND | AとBの | (ビット演算で)AとBの論理積を返す。日本語の「AかつB」に相当する | AND | https://github.com/kujirahand/nadesiko3core/blob/main/src/plugin_system.mts#L1027
|
|
126
126
|
| 関数 | XOR | AとBの | (ビット演算で)AとBの排他的論理和を返す。 | XOR | https://github.com/kujirahand/nadesiko3core/blob/main/src/plugin_system.mts#L1035
|
|
127
|
-
| 関数 | NOT | Vの | (ビット演算で)
|
|
128
|
-
| 関数 | SHIFT_L | A
|
|
129
|
-
| 関数 | SHIFT_R | A
|
|
130
|
-
| 関数 | SHIFT_UR | A
|
|
127
|
+
| 関数 | NOT | Vの | (ビット演算で)Vの各ビットを反転して返す。 | NOT | https://github.com/kujirahand/nadesiko3core/blob/main/src/plugin_system.mts#L1043
|
|
128
|
+
| 関数 | SHIFT_L | VをAで | VをAビット左へシフトして返す | SHIFT_L | https://github.com/kujirahand/nadesiko3core/blob/main/src/plugin_system.mts#L1051
|
|
129
|
+
| 関数 | SHIFT_R | VをAで | VをAビット右へシフトして返す(符号を維持する) | SHIFT_R | https://github.com/kujirahand/nadesiko3core/blob/main/src/plugin_system.mts#L1059
|
|
130
|
+
| 関数 | SHIFT_UR | VをAで | VをAビット右へシフトして返す(符号を維持しない、0で埋める) | SHIFT_UR | https://github.com/kujirahand/nadesiko3core/blob/main/src/plugin_system.mts#L1067
|
|
131
131
|
●文字列処理
|
|
132
132
|
| 関数 | 文字数 | Vの | 文字列Vの文字数を返す | もじすう | https://github.com/kujirahand/nadesiko3core/blob/main/src/plugin_system.mts#L1077
|
|
133
133
|
| 関数 | 何文字目 | SでAが/Sの | 文字列SでAが何文字目にあるか調べて返す。見つからなければ0を返す。 | なんもじめ | https://github.com/kujirahand/nadesiko3core/blob/main/src/plugin_system.mts#L1086
|
|
@@ -336,6 +336,7 @@
|
|
|
336
336
|
| 関数 | TSV取得 | STRを/STRの/STRで | TSV形式のデータstrを強制的に二次元配列に変換して返す | TSVしゅとく | https://github.com/kujirahand/nadesiko3core/blob/main/src/plugin_csv.mts#L36
|
|
337
337
|
| 関数 | 表CSV変換 | Aを | 二次元配列AをCSV形式に変換して返す | ひょうCSVへんかん | https://github.com/kujirahand/nadesiko3core/blob/main/src/plugin_csv.mts#L45
|
|
338
338
|
| 関数 | 表TSV変換 | Aを | 二次元配列AをTSV形式に変換して返す | ひょうTSVへんかん | https://github.com/kujirahand/nadesiko3core/blob/main/src/plugin_csv.mts#L54
|
|
339
|
+
| 関数 | CSVオプション設定 | OBJ{ [KEY}を/OBJ{ [KEY}で | 「CSV取得」「表CSV変換」命令のオプションOBJ{delimiter,eol,auto_convert_number}をオブジェクトで指定 | CSVおぷしょんせってい | https://github.com/kujirahand/nadesiko3core/blob/main/src/plugin_csv.mts#L63
|
|
339
340
|
|
|
340
341
|
|
|
341
342
|
■plugin_math(基本プラグイン,wnako,cnako)
|
|
@@ -656,15 +657,15 @@
|
|
|
656
657
|
| 関数 | WS切断 | | アクティブなWebSocketを閉じる | WSせつだん | https://github.com/kujirahand/nadesiko3/blob/master/src/plugin_browser_websocket.mts#L68
|
|
657
658
|
●オーディオ
|
|
658
659
|
| 関数 | オーディオ開 | URLを/URLの | オーディオファイルのURLを指定して、オーディオを読み込み、Audioオブジェクトを返す | おーでぃおひらく | https://github.com/kujirahand/nadesiko3/blob/master/src/plugin_browser_audio.mts#L8
|
|
659
|
-
| 関数 | オーディオ再生 | OBJを | AudioオブジェクトOBJ
|
|
660
|
-
| 関数 | オーディオループ再生 | OBJを | AudioオブジェクトOBJ
|
|
661
|
-
| 関数 | オーディオ停止 | OBJを | AudioオブジェクトOBJ
|
|
662
|
-
| 関数 | オーディオ一時停止 | OBJを | AudioオブジェクトOBJ
|
|
660
|
+
| 関数 | オーディオ再生 | OBJを | AudioオブジェクトOBJを指定してオーディオを再生 | おーでぃおさいせい | https://github.com/kujirahand/nadesiko3/blob/master/src/plugin_browser_audio.mts#L19
|
|
661
|
+
| 関数 | オーディオループ再生 | OBJを | AudioオブジェクトOBJを指定してオーディオをループ再生する | おーでぃおるーぷさいせい | https://github.com/kujirahand/nadesiko3/blob/master/src/plugin_browser_audio.mts#L30
|
|
662
|
+
| 関数 | オーディオ停止 | OBJを | AudioオブジェクトOBJを指定してオーディオを停止 | おーでぃおていし | https://github.com/kujirahand/nadesiko3/blob/master/src/plugin_browser_audio.mts#L41
|
|
663
|
+
| 関数 | オーディオ一時停止 | OBJを | AudioオブジェクトOBJを指定してオーディオを一時停止 | おーでぃおいちじていし | https://github.com/kujirahand/nadesiko3/blob/master/src/plugin_browser_audio.mts#L56
|
|
663
664
|
| 関数 | オーディオ音量取得 | OBJの/OBJから | AudioオブジェクトOBJの音量を取得して返す | おーでぃおおんりょうしゅとく | https://github.com/kujirahand/nadesiko3/blob/master/src/plugin_browser_audio.mts#L66
|
|
664
665
|
| 関数 | オーディオ音量設定 | OBJをVに/Vへ | AudioオブジェクトOBJの音量をV(0-1)に設定する | おーでぃおおんりょうせってい | https://github.com/kujirahand/nadesiko3/blob/master/src/plugin_browser_audio.mts#L75
|
|
665
|
-
| 関数 | オーディオ長取得 | OBJの/OBJから | AudioオブジェクトOBJ
|
|
666
|
-
| 関数 | オーディオ再生位置取得 | OBJの/OBJから | AudioオブジェクトOBJ
|
|
667
|
-
| 関数 | オーディオ再生位置設定 | OBJをVに/Vへ | AudioオブジェクトOBJ
|
|
666
|
+
| 関数 | オーディオ長取得 | OBJの/OBJから | AudioオブジェクトOBJを指定してオーディオの長さを取得して返す | おーでぃおながさしゅとく | https://github.com/kujirahand/nadesiko3/blob/master/src/plugin_browser_audio.mts#L85
|
|
667
|
+
| 関数 | オーディオ再生位置取得 | OBJの/OBJから | AudioオブジェクトOBJを指定してオーディオの再生位置を取得して返す | おーでぃおさいせいいちしゅとく | https://github.com/kujirahand/nadesiko3/blob/master/src/plugin_browser_audio.mts#L94
|
|
668
|
+
| 関数 | オーディオ再生位置設定 | OBJをVに/Vへ | AudioオブジェクトOBJを指定してオーディオの位置を数値Vで設定する | おーでぃおさいせい | https://github.com/kujirahand/nadesiko3/blob/master/src/plugin_browser_audio.mts#L103
|
|
668
669
|
●ホットキー
|
|
669
670
|
| 関数 | ホットキー登録 | KEYにFNAMEを/KEYで | ホットキーKEYにEVENTを登録する | ほっときーとうろく | https://github.com/kujirahand/nadesiko3/blob/master/src/plugin_browser_hotkey.mts#L10
|
|
670
671
|
| 関数 | ホットキー解除 | KEYを/KEYの | ホットキーKEYを解除する | ほっときーかいじょ | https://github.com/kujirahand/nadesiko3/blob/master/src/plugin_browser_hotkey.mts#L22
|
|
@@ -894,7 +895,7 @@
|
|
|
894
895
|
■plugin_kansuji(基本プラグイン,wnako,cnako)
|
|
895
896
|
●漢数字関連
|
|
896
897
|
| 関数 | 漢数字 | INPUTを/INPUTの | 引数を数字と解釈して漢数字の文字列を返す | かんすうじ | https://github.com/kujirahand/nadesiko3/tree/master/src/plugin_kansuji.mjs#L27
|
|
897
|
-
| 関数 | 算用数字 | INPUTを/INPUTの |
|
|
898
|
+
| 関数 | 算用数字 | INPUTを/INPUTの | 引数を漢数字と解釈して数値を返す | さんようすうじ | https://github.com/kujirahand/nadesiko3/tree/master/src/plugin_kansuji.mjs#L136
|
|
898
899
|
|
|
899
900
|
|
|
900
901
|
■plugin_weykturtle3d(基本プラグイン,wnako)
|
|
@@ -35,7 +35,7 @@ export default coreVersion
|
|
|
35
35
|
VSを保存先へ保存。
|
|
36
36
|
「
|
|
37
37
|
# ---------------------------------------------
|
|
38
|
-
# ●
|
|
38
|
+
# ● なでしこのコアバージョン(core/src/nako_core_version.mts)情報を更新しました。
|
|
39
39
|
# version {VER}
|
|
40
40
|
# file: {保存先}
|
|
41
41
|
# ---------------------------------------------
|
package/core/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nadesiko3core",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.44",
|
|
4
4
|
"description": "Japanese Programming Language Nadesiko v3 core",
|
|
5
5
|
"main": "index.mjs",
|
|
6
6
|
"type": "module",
|
|
@@ -53,4 +53,4 @@
|
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"cross-env": "^7.0.3"
|
|
55
55
|
}
|
|
56
|
-
}
|
|
56
|
+
}
|
package/core/src/nako_csv.mjs
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
export const options = {
|
|
2
2
|
delimiter: ',',
|
|
3
|
-
eol: '\r\n'
|
|
3
|
+
eol: '\r\n',
|
|
4
|
+
auto_convert_number: true
|
|
4
5
|
};
|
|
5
6
|
export function resetEnv() {
|
|
6
7
|
options.delimiter = ',';
|
|
7
8
|
options.eol = '\r\n';
|
|
9
|
+
options.auto_convert_number = true;
|
|
10
|
+
}
|
|
11
|
+
/// 文字列が数値化どうか判定する関数
|
|
12
|
+
function is_numeric(str) {
|
|
13
|
+
return /^-?\d+(\.\d+)?([eE][-+]?\d+)?$/.test(str);
|
|
8
14
|
}
|
|
9
15
|
export function parse(txt, delimiter = undefined) {
|
|
10
16
|
// delimiter
|
|
@@ -22,12 +28,13 @@ export function parse(txt, delimiter = undefined) {
|
|
|
22
28
|
const reToDelim = new RegExp(patToDelim);
|
|
23
29
|
// if value is number then convert to float
|
|
24
30
|
const convType = function (v) {
|
|
31
|
+
let result = v;
|
|
25
32
|
if (typeof (v) === 'string') {
|
|
26
|
-
if (
|
|
27
|
-
|
|
33
|
+
if (options.auto_convert_number && is_numeric(v)) {
|
|
34
|
+
result = parseFloat(v); // convert number
|
|
28
35
|
}
|
|
29
36
|
}
|
|
30
|
-
return
|
|
37
|
+
return result;
|
|
31
38
|
};
|
|
32
39
|
// parse txt
|
|
33
40
|
const res = [];
|
package/core/src/nako_csv.mts
CHANGED
|
@@ -2,19 +2,27 @@
|
|
|
2
2
|
export interface CSVOptions {
|
|
3
3
|
delimiter: string;
|
|
4
4
|
eol: string;
|
|
5
|
+
auto_convert_number: boolean;
|
|
5
6
|
}
|
|
6
7
|
|
|
7
8
|
export const options: CSVOptions = {
|
|
8
9
|
delimiter: ',',
|
|
9
|
-
eol: '\r\n'
|
|
10
|
+
eol: '\r\n',
|
|
11
|
+
auto_convert_number: true
|
|
10
12
|
}
|
|
11
13
|
|
|
12
14
|
export function resetEnv (): void {
|
|
13
15
|
options.delimiter = ','
|
|
14
16
|
options.eol = '\r\n'
|
|
17
|
+
options.auto_convert_number = true
|
|
15
18
|
}
|
|
16
19
|
|
|
17
|
-
|
|
20
|
+
/// 文字列が数値化どうか判定する関数
|
|
21
|
+
function is_numeric(str: string): boolean {
|
|
22
|
+
return /^-?\d+(\.\d+)?([eE][-+]?\d+)?$/.test(str);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function parse (txt: string, delimiter: string|undefined = undefined): (string|number)[][] {
|
|
18
26
|
// delimiter
|
|
19
27
|
if (delimiter === undefined) {
|
|
20
28
|
delimiter = options.delimiter
|
|
@@ -29,13 +37,14 @@ export function parse (txt: string, delimiter: string|undefined = undefined): st
|
|
|
29
37
|
const patToDelim = '^(.*?)([\\' + delimiter + '\\n])'
|
|
30
38
|
const reToDelim = new RegExp(patToDelim)
|
|
31
39
|
// if value is number then convert to float
|
|
32
|
-
const convType = function (v:
|
|
40
|
+
const convType = function (v: string) {
|
|
41
|
+
let result: string|number = v
|
|
33
42
|
if (typeof (v) === 'string') {
|
|
34
|
-
if (
|
|
35
|
-
|
|
43
|
+
if (options.auto_convert_number && is_numeric(v)) {
|
|
44
|
+
result = parseFloat(v) // convert number
|
|
36
45
|
}
|
|
37
46
|
}
|
|
38
|
-
return
|
|
47
|
+
return result
|
|
39
48
|
}
|
|
40
49
|
// parse txt
|
|
41
50
|
const res = []; let cells = []; let c = ''
|
|
@@ -6,7 +6,7 @@ export const josiList = [
|
|
|
6
6
|
'について', 'くらい', 'なのか', 'までを', 'までの', 'による',
|
|
7
7
|
'とは', 'から', 'まで', 'だけ', 'より', 'ほど', 'など',
|
|
8
8
|
'いて', 'えて', 'きて', 'けて', 'して', 'って', 'にて', 'みて',
|
|
9
|
-
'めて', 'ねて', 'では', 'には', '
|
|
9
|
+
'めて', 'ねて', 'では', 'には', 'んで', 'ずつ',
|
|
10
10
|
'は', 'を', 'に', 'へ', 'で', 'と', 'が', 'の'
|
|
11
11
|
];
|
|
12
12
|
// 「もし」文で使う助詞
|
|
@@ -7,7 +7,7 @@ export const josiList: string[] = [
|
|
|
7
7
|
'について', 'くらい', 'なのか', 'までを', 'までの', 'による',
|
|
8
8
|
'とは', 'から', 'まで', 'だけ', 'より', 'ほど', 'など',
|
|
9
9
|
'いて', 'えて', 'きて', 'けて', 'して', 'って', 'にて', 'みて',
|
|
10
|
-
'めて', 'ねて', 'では', 'には', '
|
|
10
|
+
'めて', 'ねて', 'では', 'には', 'んで', 'ずつ',
|
|
11
11
|
'は', 'を', 'に', 'へ', 'で', 'と', 'が', 'の'
|
|
12
12
|
]
|
|
13
13
|
|
package/core/src/nako_lexer.mjs
CHANGED
|
@@ -188,7 +188,7 @@ export class NakoLexer {
|
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
190
|
// 無名関数の定義:「xxには**」があった場合 ... 暗黙的な関数定義とする
|
|
191
|
-
if (
|
|
191
|
+
if (t.type === 'word' && t.josi === 'には') {
|
|
192
192
|
t.josi = 'には';
|
|
193
193
|
tokens.splice(i + 1, 0, { type: 'def_func', value: '関数', indent: t.indent, line: t.line, column: t.column, file: t.file, josi: '', startOffset: t.endOffset, endOffset: t.endOffset, rawJosi: '', tag: '無名関数' });
|
|
194
194
|
i++;
|
package/core/src/nako_lexer.mts
CHANGED
|
@@ -194,7 +194,7 @@ export class NakoLexer {
|
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
196
|
// 無名関数の定義:「xxには**」があった場合 ... 暗黙的な関数定義とする
|
|
197
|
-
if (
|
|
197
|
+
if (t.type === 'word' && t.josi === 'には') {
|
|
198
198
|
t.josi = 'には'
|
|
199
199
|
tokens.splice(i + 1, 0, { type: 'def_func', value: '関数', indent: t.indent, line: t.line, column: t.column, file: t.file, josi: '', startOffset: t.endOffset, endOffset: t.endOffset, rawJosi: '', tag: '無名関数' })
|
|
200
200
|
i++
|
package/core/src/plugin_csv.mjs
CHANGED
|
@@ -54,6 +54,26 @@ const PluginCSV = {
|
|
|
54
54
|
options.delimiter = '\t';
|
|
55
55
|
return stringify(a);
|
|
56
56
|
}
|
|
57
|
+
},
|
|
58
|
+
'CSVオプション設定': {
|
|
59
|
+
type: 'func',
|
|
60
|
+
josi: [['を', 'で']],
|
|
61
|
+
pure: true,
|
|
62
|
+
fn: function (obj) {
|
|
63
|
+
for (const key in obj) {
|
|
64
|
+
const value = obj[key];
|
|
65
|
+
if (key === 'delimiter' || key === '区切文字') {
|
|
66
|
+
options.delimiter = value;
|
|
67
|
+
}
|
|
68
|
+
else if (key === 'eol') {
|
|
69
|
+
options.eol = value;
|
|
70
|
+
}
|
|
71
|
+
else if (key === 'auto_convert_number') {
|
|
72
|
+
options.auto_convert_number = value;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
return_none: true
|
|
57
77
|
}
|
|
58
78
|
};
|
|
59
79
|
export default PluginCSV;
|
package/core/src/plugin_csv.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { options, parse, stringify } from './nako_csv.mjs'
|
|
1
|
+
import { CSVOptions, options, parse, stringify } from './nako_csv.mjs'
|
|
2
2
|
|
|
3
3
|
const PluginCSV = {
|
|
4
4
|
'meta': {
|
|
@@ -24,7 +24,7 @@ const PluginCSV = {
|
|
|
24
24
|
type: 'func',
|
|
25
25
|
josi: [['を', 'の', 'で']],
|
|
26
26
|
pure: true,
|
|
27
|
-
fn: function (str: string): string[][] {
|
|
27
|
+
fn: function (str: string): (string | number)[][] {
|
|
28
28
|
options.delimiter = ','
|
|
29
29
|
return parse(str)
|
|
30
30
|
}
|
|
@@ -33,7 +33,7 @@ const PluginCSV = {
|
|
|
33
33
|
type: 'func',
|
|
34
34
|
josi: [['を', 'の', 'で']],
|
|
35
35
|
pure: true,
|
|
36
|
-
fn: function (str: string): string[][] {
|
|
36
|
+
fn: function (str: string): (string|number)[][] {
|
|
37
37
|
options.delimiter = '\t'
|
|
38
38
|
return parse(str)
|
|
39
39
|
}
|
|
@@ -55,6 +55,24 @@ const PluginCSV = {
|
|
|
55
55
|
options.delimiter = '\t'
|
|
56
56
|
return stringify(a)
|
|
57
57
|
}
|
|
58
|
+
},
|
|
59
|
+
'CSVオプション設定': { // @「CSV取得」「表CSV変換」命令のオプションOBJ{delimiter,eol,auto_convert_number}をオブジェクトで指定 // @CSVおぷしょんせってい
|
|
60
|
+
type: 'func',
|
|
61
|
+
josi: [['を','で']],
|
|
62
|
+
pure: true,
|
|
63
|
+
fn: function (obj: { [key: string]: unknown }): void {
|
|
64
|
+
for (const key in obj) {
|
|
65
|
+
const value: unknown = obj[key]
|
|
66
|
+
if (key === 'delimiter' || key === '区切文字') {
|
|
67
|
+
options.delimiter = value as string
|
|
68
|
+
} else if (key === 'eol') {
|
|
69
|
+
options.eol = value as string
|
|
70
|
+
} else if (key === 'auto_convert_number') {
|
|
71
|
+
options.auto_convert_number = value as boolean
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
return_none: true
|
|
58
76
|
}
|
|
59
77
|
}
|
|
60
78
|
export default PluginCSV
|
|
@@ -1088,24 +1088,24 @@ export default {
|
|
|
1088
1088
|
type: 'func',
|
|
1089
1089
|
josi: [['を'], ['で']],
|
|
1090
1090
|
pure: true,
|
|
1091
|
-
fn: function (
|
|
1092
|
-
return (
|
|
1091
|
+
fn: function (v, a) {
|
|
1092
|
+
return (v << a);
|
|
1093
1093
|
}
|
|
1094
1094
|
},
|
|
1095
1095
|
'SHIFT_R': {
|
|
1096
1096
|
type: 'func',
|
|
1097
1097
|
josi: [['を'], ['で']],
|
|
1098
1098
|
pure: true,
|
|
1099
|
-
fn: function (
|
|
1100
|
-
return (
|
|
1099
|
+
fn: function (v, a) {
|
|
1100
|
+
return (v >> a);
|
|
1101
1101
|
}
|
|
1102
1102
|
},
|
|
1103
1103
|
'SHIFT_UR': {
|
|
1104
1104
|
type: 'func',
|
|
1105
1105
|
josi: [['を'], ['で']],
|
|
1106
1106
|
pure: true,
|
|
1107
|
-
fn: function (
|
|
1108
|
-
return (
|
|
1107
|
+
fn: function (v, a) {
|
|
1108
|
+
return (v >>> a);
|
|
1109
1109
|
}
|
|
1110
1110
|
},
|
|
1111
1111
|
// @文字列処理
|
|
@@ -1036,7 +1036,7 @@ export default {
|
|
|
1036
1036
|
return (a ^ b)
|
|
1037
1037
|
}
|
|
1038
1038
|
},
|
|
1039
|
-
'NOT': { // @(ビット演算で)
|
|
1039
|
+
'NOT': { // @(ビット演算で)Vの各ビットを反転して返す。// @NOT
|
|
1040
1040
|
type: 'func',
|
|
1041
1041
|
josi: [['の']],
|
|
1042
1042
|
pure: true,
|
|
@@ -1048,24 +1048,24 @@ export default {
|
|
|
1048
1048
|
type: 'func',
|
|
1049
1049
|
josi: [['を'], ['で']],
|
|
1050
1050
|
pure: true,
|
|
1051
|
-
fn: function (
|
|
1052
|
-
return (
|
|
1051
|
+
fn: function (v: any, a: any) {
|
|
1052
|
+
return (v << a)
|
|
1053
1053
|
}
|
|
1054
1054
|
},
|
|
1055
1055
|
'SHIFT_R': { // @VをAビット右へシフトして返す(符号を維持する) // @SHIFT_R
|
|
1056
1056
|
type: 'func',
|
|
1057
1057
|
josi: [['を'], ['で']],
|
|
1058
1058
|
pure: true,
|
|
1059
|
-
fn: function (
|
|
1060
|
-
return (
|
|
1059
|
+
fn: function (v: any, a: any) {
|
|
1060
|
+
return (v >> a)
|
|
1061
1061
|
}
|
|
1062
1062
|
},
|
|
1063
1063
|
'SHIFT_UR': { // @VをAビット右へシフトして返す(符号を維持しない、0で埋める) // @SHIFT_UR
|
|
1064
1064
|
type: 'func',
|
|
1065
1065
|
josi: [['を'], ['で']],
|
|
1066
1066
|
pure: true,
|
|
1067
|
-
fn: function (
|
|
1068
|
-
return (
|
|
1067
|
+
fn: function (v: any, a: any) {
|
|
1068
|
+
return (v >>> a)
|
|
1069
1069
|
}
|
|
1070
1070
|
},
|
|
1071
1071
|
|
package/core/test/func_test.mjs
CHANGED
|
@@ -137,12 +137,6 @@ describe('func_test', async () => {
|
|
|
137
137
|
await cmp('●(fでaを)演算処理とは\nf(a)を表示\nここまで\n' +
|
|
138
138
|
'2を演算処理には(a)\nそれはa*2\nここまで\n', '4')
|
|
139
139
|
})
|
|
140
|
-
it('暗黙的な無名関数「は〜」', async () => {
|
|
141
|
-
await cmp('●(Fを)処理した時\nF()を表示\nここまで\n' +
|
|
142
|
-
'処理した時は〜\nそれは「OK」\nここまで。', 'OK')
|
|
143
|
-
await cmp('●(fでaを)演算処理とは\nf(a)を表示\nここまで\n' +
|
|
144
|
-
'2を演算処理は~(a)\nそれはa*2\nここまで\n', '4')
|
|
145
|
-
})
|
|
146
140
|
it('**すること #936', async () => {
|
|
147
141
|
await cmp('●(AとBを)加算処理とは\nAとBを足すこと。。。3と5を加算処理して表示。', '8')
|
|
148
142
|
await cmp('●(Nを)二乗処理とは;A=0;N回,AにNを足してAに代入すること。それはA。。。5を二乗処理して表示。', '25')
|
|
@@ -35,4 +35,14 @@ describe('plugin_csv_test', () => {
|
|
|
35
35
|
await cmp('[[1,2,3],[4,5,6]]を表TSV変換して表示', '1\t2\t3\r\n4\t5\t6')
|
|
36
36
|
await cmp('[[1,2,"3\r\n\t"],[4,5,6]]を表TSV変換して表示', '1\t2\t"3\r\n\t"\r\n4\t5\t6')
|
|
37
37
|
})
|
|
38
|
+
it('「2024.01.01」のような日付形式が実数として誤判定する #1910', async () => {
|
|
39
|
+
await cmp('a=「2024.01.01,200,300\n4,5,6」のCSV取得。a[0][0]を表示', '2024.01.01')
|
|
40
|
+
await cmp('a=「3.14,200,300\n4,5,6」のCSV取得。a[0][0]を表示', '3.14')
|
|
41
|
+
await cmp('a=「3.14,200,300\n4,5,6」のCSV取得。TYPEOF(a[0][0])を表示', 'number')
|
|
42
|
+
await cmp('a=「2010.1.5,200,300\n4,5,6」のCSV取得。TYPEOF(a[0][0])を表示', 'string')
|
|
43
|
+
})
|
|
44
|
+
it('「2024.01.01」のような日付形式が実数として誤判定する #1910', async () => {
|
|
45
|
+
await cmp('{"auto_convert_number": FALSE}をCSVオプション設定;a=「2024.01,200,300\n4,5,6」のCSV取得。TYPEOF(a[0][0])を表示', 'string')
|
|
46
|
+
await cmp('{"auto_convert_number": FALSE}をCSVオプション設定;a=「2024.01,200,300\n4,5,6」のCSV取得。a[0][0]を表示', '2024.01')
|
|
47
|
+
})
|
|
38
48
|
})
|
package/demo/browsers.html
CHANGED
|
@@ -8,26 +8,26 @@
|
|
|
8
8
|
<h2>デスクトップ</h2>
|
|
9
9
|
|
|
10
10
|
<ul>
|
|
11
|
-
<li>Edge (
|
|
12
|
-
<li>Firefox (
|
|
13
|
-
<li>Chrome (
|
|
14
|
-
<li>Safari (17.
|
|
15
|
-
<li>Opera (
|
|
16
|
-
<li>Node.js (
|
|
11
|
+
<li>Edge (127/126以上)</li>
|
|
12
|
+
<li>Firefox (129/128/127/115以上)</li>
|
|
13
|
+
<li>Chrome (127/126/125/109以上)</li>
|
|
14
|
+
<li>Safari (17.5/17.4以上)</li>
|
|
15
|
+
<li>Opera (111/110以上)</li>
|
|
16
|
+
<li>Node.js (22.5.0/20.15.0/18.20.0以上)</li>
|
|
17
17
|
</ul>
|
|
18
18
|
|
|
19
19
|
<h2>モバイル</h2>
|
|
20
20
|
|
|
21
21
|
<ul>
|
|
22
|
-
<li>Safari on iOS (17.
|
|
22
|
+
<li>Safari on iOS (17.5/17.4/16.6-16.7/15.6-15.8以上)</li>
|
|
23
23
|
<li>Opera Mini (all以上)</li>
|
|
24
|
-
<li>Android Browser (
|
|
25
|
-
<li>Opera Mobile (
|
|
26
|
-
<li>Chrome for Android (
|
|
27
|
-
<li>Firefox for Android (
|
|
24
|
+
<li>Android Browser (127以上)</li>
|
|
25
|
+
<li>Opera Mobile (80以上)</li>
|
|
26
|
+
<li>Chrome for Android (127以上)</li>
|
|
27
|
+
<li>Firefox for Android (127以上)</li>
|
|
28
28
|
<li>UC Browser for Android (15.5以上)</li>
|
|
29
|
-
<li>Samsung Internet (
|
|
30
|
-
<li>QQ Browser (
|
|
29
|
+
<li>Samsung Internet (25/24以上)</li>
|
|
30
|
+
<li>QQ Browser (14.9以上)</li>
|
|
31
31
|
<li>KaiOS Browser (3.0-3.1/2.5以上)</li>
|
|
32
32
|
</ul>
|
|
33
33
|
</body></html>
|
package/doc/browsers.md
CHANGED
|
@@ -4,22 +4,22 @@
|
|
|
4
4
|
|
|
5
5
|
## デスクトップ
|
|
6
6
|
|
|
7
|
-
- Edge (
|
|
8
|
-
- Firefox (
|
|
9
|
-
- Chrome (
|
|
10
|
-
- Safari (17.
|
|
11
|
-
- Opera (
|
|
12
|
-
- Node.js (
|
|
7
|
+
- Edge (127/126以上)
|
|
8
|
+
- Firefox (129/128/127/115以上)
|
|
9
|
+
- Chrome (127/126/125/109以上)
|
|
10
|
+
- Safari (17.5/17.4以上)
|
|
11
|
+
- Opera (111/110以上)
|
|
12
|
+
- Node.js (22.5.0/20.15.0/18.20.0以上)
|
|
13
13
|
|
|
14
14
|
## モバイル
|
|
15
15
|
|
|
16
|
-
- Safari on iOS (17.
|
|
16
|
+
- Safari on iOS (17.5/17.4/16.6-16.7/15.6-15.8以上)
|
|
17
17
|
- Opera Mini (all以上)
|
|
18
|
-
- Android Browser (
|
|
19
|
-
- Opera Mobile (
|
|
20
|
-
- Chrome for Android (
|
|
21
|
-
- Firefox for Android (
|
|
18
|
+
- Android Browser (127以上)
|
|
19
|
+
- Opera Mobile (80以上)
|
|
20
|
+
- Chrome for Android (127以上)
|
|
21
|
+
- Firefox for Android (127以上)
|
|
22
22
|
- UC Browser for Android (15.5以上)
|
|
23
|
-
- Samsung Internet (
|
|
24
|
-
- QQ Browser (
|
|
23
|
+
- Samsung Internet (25/24以上)
|
|
24
|
+
- QQ Browser (14.9以上)
|
|
25
25
|
- KaiOS Browser (3.0-3.1/2.5以上)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nadesiko3",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.44",
|
|
4
4
|
"description": "Japanese Programming Language",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.mjs",
|
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
"globals": "^15.1.0",
|
|
122
122
|
"hotkeys-js": "^3.13.7",
|
|
123
123
|
"markdownlint": "^0.37.0",
|
|
124
|
-
"markdownlint-cli": "^0.
|
|
124
|
+
"markdownlint-cli": "^0.44.0",
|
|
125
125
|
"mocha": "^11.0.1",
|
|
126
126
|
"mocha-css": "^1.0.1",
|
|
127
127
|
"module-alias": "^2.2.3",
|