nadesiko3 3.7.21 → 3.7.23
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/README.md +20 -1
- package/batch/command.txt +370 -334
- package/batch/generate_command_list.mjs +102 -0
- package/batch/jsplugin2text.nako3 +1 -1
- package/batch/pickup_command.nako3 +12 -0
- package/batch/search_command.mjs +34 -0
- package/batch/search_command.nako3 +430 -0
- package/core/command/snako.mts +5 -1
- package/core/deno/snako.ts +5 -1
- package/core/package-lock.json +382 -21
- package/core/package.json +7 -4
- package/core/sample/algorithms/README.md +43 -0
- package/core/sample/algorithms/graph/dijkstra.nako3 +47 -0
- package/core/sample/algorithms/graph/kruskal.nako3 +69 -0
- package/core/sample/algorithms/math/euclidean_gcd.nako3 +15 -0
- package/core/sample/algorithms/math/sieve_of_eratosthenes.nako3 +26 -0
- package/core/sample/algorithms/search/binary_search.nako3 +17 -0
- package/core/sample/algorithms/search/breadth_first_search.nako3 +33 -0
- package/core/sample/algorithms/search/depth_first_search.nako3 +25 -0
- package/core/sample/algorithms/sort/heap_sort.nako3 +37 -0
- package/core/sample/algorithms/sort/insertion_sort.nako3 +18 -0
- package/core/sample/algorithms/sort/merge_sort.nako3 +40 -0
- package/core/sample/algorithms/sort/quick_sort.nako3 +36 -0
- package/core/sample/algorithms/string/knuth_morris_pratt.nako3 +50 -0
- package/core/sample/algorithms/string/run_length_encoding.nako3 +25 -0
- package/core/src/nako3.mts +178 -614
- package/core/src/nako_basic_plugins.mts +39 -0
- package/core/src/nako_core_version.mts +2 -2
- package/core/src/nako_csv.mts +0 -1
- package/core/src/nako_event.mts +49 -0
- package/core/src/nako_gen.mts +320 -209
- package/core/src/nako_global.mts +18 -0
- package/core/src/nako_indent_inline.mts +2 -2
- package/core/src/nako_lex_rules.mts +1 -1
- package/core/src/nako_parser3.mts +111 -166
- package/core/src/nako_parser_async.mts +165 -0
- package/core/src/nako_parser_base.mts +4 -55
- package/core/src/nako_parser_message.mts +105 -0
- package/core/src/nako_parser_operator.mts +93 -0
- package/core/src/nako_plugin_manager.mts +260 -0
- package/core/src/nako_require.mts +292 -0
- package/core/src/nako_runner.mts +208 -0
- package/core/src/nako_tokenizer.mts +221 -0
- package/core/src/plugin_csv.mts +1 -1
- package/core/src/plugin_system.mts +34 -3259
- package/core/src/plugin_system_array.mts +699 -0
- package/core/src/plugin_system_datetime.mts +368 -0
- package/core/src/plugin_system_debug.mts +403 -0
- package/core/src/plugin_system_dict.mts +85 -0
- package/core/src/plugin_system_json.mts +73 -0
- package/core/src/plugin_system_math.mts +383 -0
- package/core/src/plugin_system_regexp.mts +120 -0
- package/core/src/plugin_system_stdio.mts +86 -0
- package/core/src/plugin_system_string.mts +666 -0
- package/core/src/plugin_system_timer.mts +152 -0
- package/core/src/plugin_system_types.mts +151 -0
- package/core/src/plugin_system_url.mts +193 -0
- package/core/src/plugin_toml.mts +3 -3
- package/core/test/algorithm_samples_test.mjs +58 -0
- package/core/test/algorithms/graph/dijkstra_test.nako3 +21 -0
- package/core/test/algorithms/graph/kruskal_test.nako3 +21 -0
- package/core/test/algorithms/helper.mjs +13 -0
- package/core/test/algorithms/math/euclidean_gcd_test.nako3 +13 -0
- package/core/test/algorithms/math/sieve_of_eratosthenes_test.nako3 +10 -0
- package/core/test/algorithms/search/binary_search_test.nako3 +15 -0
- package/core/test/algorithms/search/breadth_first_search_test.nako3 +13 -0
- package/core/test/algorithms/search/depth_first_search_test.nako3 +13 -0
- package/core/test/algorithms/sort/heap_sort_test.nako3 +13 -0
- package/core/test/algorithms/sort/insertion_sort_test.nako3 +13 -0
- package/core/test/algorithms/sort/merge_sort_test.nako3 +18 -0
- package/core/test/algorithms/sort/quick_sort_test.nako3 +34 -0
- package/core/test/algorithms/string/knuth_morris_pratt_test.nako3 +16 -0
- package/core/test/algorithms/string/run_length_encoding_test.nako3 +13 -0
- package/core/test/array_test.mjs +3 -0
- package/core/test/fixtures/README.md +39 -0
- package/core/test/fixtures/make_parser_ast_golden.mjs +31 -0
- package/core/test/fixtures/parser_ast_golden.json +8027 -0
- package/core/test/fixtures/parser_corpus.mjs +120 -0
- package/core/test/func_call.mjs +18 -0
- package/core/test/func_test.mjs +28 -0
- package/core/test/indent_test.mjs +6 -0
- package/core/test/nako_basic_plugins_test.mjs +44 -0
- package/core/test/nako_event_test.mjs +127 -0
- package/core/test/nako_gen_perf_test.mjs +178 -0
- package/core/test/nako_parser_async_test.mjs +385 -0
- package/core/test/nako_parser_test.mjs +160 -0
- package/core/test/nako_plugin_manager_test.mjs +185 -0
- package/core/test/nako_require_test.mjs +153 -0
- package/core/test/nako_runner_test.mjs +174 -0
- package/core/test/nako_tokenizer_test.mjs +115 -0
- package/core/test/plugin_system_debug_test.mjs +138 -0
- package/core/test/plugin_system_split_test.mjs +179 -0
- package/core/test/plugin_system_test.mjs +6 -0
- package/core/tsconfig.json +0 -1
- package/demo/browsers.html +1 -1
- package/doc/SETUP.md +1 -1
- package/doc/ai-code-generation.md +136 -0
- package/doc/browsers.md +1 -1
- package/doc/command_list.json +16842 -0
- package/doc/search_command.md +222 -0
- package/doc/syntax-nako3.md +344 -0
- package/package.json +29 -26
- package/release/_hash.txt +40 -40
- package/release/_script-tags.txt +16 -16
- 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 +6 -6
- package/release/edit_main.js.map +3 -3
- package/release/editor.js +6 -6
- package/release/plugin_caniuse.js +1 -1
- package/release/plugin_caniuse.js.map +2 -2
- package/release/plugin_keigo.js.map +3 -3
- package/release/plugin_markup.js +46 -46
- package/release/plugin_markup.js.map +3 -3
- package/release/plugin_weykturtle3d.js +1 -1
- package/release/plugin_weykturtle3d.js.map +3 -3
- package/release/version.js +2 -2
- package/release/version_main.js +2 -2
- package/release/version_main.js.map +1 -1
- package/release/wnako3.js +219 -230
- package/release/wnako3.js.map +4 -4
- package/release/wnako3webworker.js +193 -204
- package/release/wnako3webworker.js.map +4 -4
- package/src/browsers.mjs +1 -1
- package/src/browsers.txt +0 -1
- package/src/cnako3mod.mjs +7 -2
- package/src/cnako3mod.mts +7 -2
- package/src/nako_version.mjs +2 -2
- package/src/nako_version.mts +2 -2
- package/src/plugin_browser_ajax.mjs +4 -4
- package/src/plugin_browser_ajax.mts +4 -4
- package/src/plugin_browser_audio.mjs +10 -10
- package/src/plugin_browser_audio.mts +10 -10
- package/src/plugin_browser_camera.mjs +4 -4
- package/src/plugin_browser_camera.mts +4 -4
- package/src/plugin_browser_canvas.mjs +2 -2
- package/src/plugin_browser_canvas.mts +2 -2
- package/src/plugin_browser_crypto.mjs +3 -3
- package/src/plugin_browser_crypto.mts +3 -3
- package/src/plugin_browser_dom_event.mjs +1 -1
- package/src/plugin_browser_dom_event.mts +1 -1
- package/src/plugin_browser_geolocation.mjs +1 -1
- package/src/plugin_browser_geolocation.mts +1 -1
- package/src/plugin_browser_hotkey.mjs +1 -1
- package/src/plugin_browser_hotkey.mts +1 -1
- package/src/plugin_browser_html.mjs +1 -1
- package/src/plugin_browser_html.mts +1 -1
- package/src/plugin_browser_location.mjs +1 -1
- package/src/plugin_browser_location.mts +1 -1
- package/src/plugin_browser_speech.mjs +1 -1
- package/src/plugin_browser_speech.mts +1 -1
- package/src/plugin_browser_storage.mjs +2 -2
- package/src/plugin_browser_storage.mts +2 -2
- package/src/plugin_httpserver.mjs +3 -3
- package/src/plugin_httpserver.mts +3 -3
- package/src/plugin_keigo.mjs +2 -2
- package/src/plugin_keigo.mts +2 -2
- package/src/plugin_node.mjs +48 -48
- package/src/plugin_node.mts +53 -53
- package/src/plugin_weykturtle3d.mjs +56 -56
- package/src/plugin_weykturtle3d.mts +56 -56
- package/src/wnako3.mjs +1 -1
- package/src/wnako3.mts +1 -1
- package/src/wnako3_editor.mjs +5 -5
- package/src/wnako3_editor.mts +5 -5
- package/src/wnako3mod.mjs +2 -2
- package/src/wnako3mod.mts +2 -2
- package/test/nako3edit/index_nako3_test.mjs +282 -0
- package/test/nako3server/index_nako3_test.mjs +239 -0
- package/test/node/ai_code_generation_guide_test.mjs +29 -0
- package/test/node/node_version_support_test.mjs +45 -0
- package/test/node/search_command_test.mjs +174 -0
- package/tools/nako3edit/AGENTS.md +23 -0
- package/tools/nako3edit/index.nako3 +404 -0
- package/tools/nako3server/AGENTS.md +23 -0
- package/tools/nako3server/index.nako3 +156 -23
- package/core/src/nako3.mjs +0 -1021
- package/core/src/nako_ast.mjs +0 -4
- package/core/src/nako_colors.mjs +0 -77
- package/core/src/nako_core_version.mjs +0 -8
- package/core/src/nako_csv.mjs +0 -193
- package/core/src/nako_errors.mjs +0 -166
- package/core/src/nako_from_dncl.mjs +0 -285
- package/core/src/nako_from_dncl2.mjs +0 -347
- package/core/src/nako_gen.mjs +0 -2500
- package/core/src/nako_global.mjs +0 -138
- package/core/src/nako_indent.mjs +0 -442
- package/core/src/nako_indent_chars.mjs +0 -29
- package/core/src/nako_indent_inline.mjs +0 -361
- package/core/src/nako_josi_list.mjs +0 -47
- package/core/src/nako_lex_rules.mjs +0 -319
- package/core/src/nako_lexer.mjs +0 -794
- package/core/src/nako_logger.mjs +0 -221
- package/core/src/nako_parser3.mjs +0 -3250
- package/core/src/nako_parser_base.mjs +0 -403
- package/core/src/nako_parser_const.mjs +0 -37
- package/core/src/nako_prepare.mjs +0 -329
- package/core/src/nako_reserved_words.mjs +0 -42
- package/core/src/nako_source_mapping.mjs +0 -207
- package/core/src/nako_test.mjs +0 -37
- package/core/src/nako_token.mjs +0 -1
- package/core/src/nako_tools.mjs +0 -53
- package/core/src/nako_types.mjs +0 -14
- package/core/src/plugin_api.mjs +0 -4
- package/core/src/plugin_csv.mjs +0 -97
- package/core/src/plugin_math.mjs +0 -352
- package/core/src/plugin_promise.mjs +0 -102
- package/core/src/plugin_system.mjs +0 -3810
- package/core/src/plugin_test.mjs +0 -52
- package/core/src/plugin_toml.mjs +0 -39
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# 深さ優先探索処理のテスト
|
|
2
|
+
|
|
3
|
+
G=[[1,2],[0,3,4],[0,5],[1],[1,5],[2,4]]
|
|
4
|
+
実際はGを0から深さ優先探索処理してJSONエンコード
|
|
5
|
+
実際と『[0,1,3,4,5,2]』がASSERT等
|
|
6
|
+
|
|
7
|
+
G=[[1],[2],[0]]
|
|
8
|
+
実際はGを1から深さ優先探索処理してJSONエンコード
|
|
9
|
+
実際と『[1,2,0]』がASSERT等
|
|
10
|
+
|
|
11
|
+
G=[[1],[0]]
|
|
12
|
+
実際はGを-1から深さ優先探索処理してJSONエンコード
|
|
13
|
+
実際と『[]』がASSERT等
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# マージソート処理のテスト
|
|
2
|
+
|
|
3
|
+
A=[38,27,43,3,9,82,10]
|
|
4
|
+
実際はAをマージソート処理してJSONエンコード
|
|
5
|
+
実際と『[3,9,10,27,38,43,82]』がASSERT等
|
|
6
|
+
|
|
7
|
+
A=[]
|
|
8
|
+
実際はAをマージソート処理してJSONエンコード
|
|
9
|
+
実際と『[]』がASSERT等
|
|
10
|
+
|
|
11
|
+
A=[2,-3,2,0,-3]
|
|
12
|
+
実際はAをマージソート処理してJSONエンコード
|
|
13
|
+
実際と『[-3,-3,0,2,2]』がASSERT等
|
|
14
|
+
|
|
15
|
+
A=[3,1,2]
|
|
16
|
+
Aをマージソート処理
|
|
17
|
+
実際はAをJSONエンコード
|
|
18
|
+
実際と『[3,1,2]』がASSERT等
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# クイックソート処理のテスト
|
|
2
|
+
|
|
3
|
+
A=[5,3,8,4,2,7,1,10]
|
|
4
|
+
実際はAをクイックソート処理してJSONエンコード
|
|
5
|
+
実際と『[1,2,3,4,5,7,8,10]』がASSERT等
|
|
6
|
+
|
|
7
|
+
A=[]
|
|
8
|
+
実際はAをクイックソート処理してJSONエンコード
|
|
9
|
+
実際と『[]』がASSERT等
|
|
10
|
+
|
|
11
|
+
A=[42]
|
|
12
|
+
実際はAをクイックソート処理してJSONエンコード
|
|
13
|
+
実際と『[42]』がASSERT等
|
|
14
|
+
|
|
15
|
+
A=[1,2,3,4,5]
|
|
16
|
+
実際はAをクイックソート処理してJSONエンコード
|
|
17
|
+
実際と『[1,2,3,4,5]』がASSERT等
|
|
18
|
+
|
|
19
|
+
A=[5,4,3,2,1]
|
|
20
|
+
実際はAをクイックソート処理してJSONエンコード
|
|
21
|
+
実際と『[1,2,3,4,5]』がASSERT等
|
|
22
|
+
|
|
23
|
+
A=[3,1,3,2,1,3]
|
|
24
|
+
実際はAをクイックソート処理してJSONエンコード
|
|
25
|
+
実際と『[1,1,2,3,3,3]』がASSERT等
|
|
26
|
+
|
|
27
|
+
A=[0,-5,3,-1,2,-5]
|
|
28
|
+
実際はAをクイックソート処理してJSONエンコード
|
|
29
|
+
実際と『[-5,-5,-1,0,2,3]』がASSERT等
|
|
30
|
+
|
|
31
|
+
A=[3,1,2]
|
|
32
|
+
Aをクイックソート処理
|
|
33
|
+
実際はAをJSONエンコード
|
|
34
|
+
実際と『[1,2,3]』がASSERT等
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# KMP法のテスト
|
|
2
|
+
|
|
3
|
+
実際は「ABC ABCDAB ABCDABCDABDE」から「ABCDABD」をKMP検索処理
|
|
4
|
+
実際と15がASSERT等
|
|
5
|
+
|
|
6
|
+
実際は「なでしこ3」から「なでしこ」をKMP検索処理
|
|
7
|
+
実際と0がASSERT等
|
|
8
|
+
|
|
9
|
+
実際は「ABCDEFG」から「XYZ」をKMP検索処理
|
|
10
|
+
実際と-1がASSERT等
|
|
11
|
+
|
|
12
|
+
実際は「😀A😀B」から「😀B」をKMP検索処理
|
|
13
|
+
実際と2がASSERT等
|
|
14
|
+
|
|
15
|
+
実際は「ABC」から「」をKMP検索処理
|
|
16
|
+
実際と0がASSERT等
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# ランレングス圧縮処理のテスト
|
|
2
|
+
|
|
3
|
+
実際は「AAABCCDDDD」をランレングス圧縮処理してJSONエンコード
|
|
4
|
+
実際と『[["A",3],["B",1],["C",2],["D",4]]』がASSERT等
|
|
5
|
+
|
|
6
|
+
実際は「あああいうう」をランレングス圧縮処理してJSONエンコード
|
|
7
|
+
実際と『[["あ",3],["い",1],["う",2]]』がASSERT等
|
|
8
|
+
|
|
9
|
+
実際は「😀😀A」をランレングス圧縮処理してJSONエンコード
|
|
10
|
+
実際と『[["😀",2],["A",1]]』がASSERT等
|
|
11
|
+
|
|
12
|
+
実際は「」をランレングス圧縮処理してJSONエンコード
|
|
13
|
+
実際と『[]』がASSERT等
|
package/core/test/array_test.mjs
CHANGED
|
@@ -131,6 +131,9 @@ describe('array_test', async () => {
|
|
|
131
131
|
it('二次元配列+オブジェクトプロパティ #2139', async () => {
|
|
132
132
|
await cmp('A=[[{"b":10}],[{"b":20}]]; A[0][0].b = 88; A[0][0].bを表示。', '88')
|
|
133
133
|
})
|
|
134
|
+
it('カンマ指定の二次元配列+オブジェクトプロパティ', async () => {
|
|
135
|
+
await cmp('A=[[{"c":10}]]; A[0,0]$c = 88; A[0][0]$cを表示。', '88')
|
|
136
|
+
})
|
|
134
137
|
it('配列+オブジェクトプロパティ(DOM和スタイル適用) #2139', async () => {
|
|
135
138
|
// __getProp/__setPropを使った例
|
|
136
139
|
await cmp(`
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# core/test/fixtures
|
|
2
|
+
|
|
3
|
+
テストが読み込む固定データを置くディレクトリです。
|
|
4
|
+
`npm run test:core` のテストグロブは `core/test/*.mjs` なので、
|
|
5
|
+
このディレクトリのファイルがテストとして実行されることはありません。
|
|
6
|
+
|
|
7
|
+
## 構文解析器のゴールデン AST (#2364)
|
|
8
|
+
|
|
9
|
+
| ファイル | 役割 |
|
|
10
|
+
|---|---|
|
|
11
|
+
| `parser_corpus.mjs` | 構文解析のコーパス(なでしこコード集)と、AST をプレーン化するヘルパー |
|
|
12
|
+
| `parser_ast_golden.json` | コーパスを構文解析した結果の AST を固定したもの |
|
|
13
|
+
| `make_parser_ast_golden.mjs` | `parser_ast_golden.json` を生成するスクリプト |
|
|
14
|
+
|
|
15
|
+
`core/test/nako_parser_test.mjs` が、現在の構文解析結果と
|
|
16
|
+
`parser_ast_golden.json` を `assert.deepStrictEqual` で比較します。
|
|
17
|
+
AST の全キー・全値に加えて**キーの並び順**まで比較するため、
|
|
18
|
+
構文解析器に手を入れて結果が少しでも変われば必ず検出できます。
|
|
19
|
+
|
|
20
|
+
### ゴールデンを再生成する
|
|
21
|
+
|
|
22
|
+
コーパス(`parser_corpus.mjs` の `PARSER_CORPUS`)を追加・変更したときや、
|
|
23
|
+
**意図的に**構文解析の結果を変更したときに再生成します。
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm run build:tsc && node core/test/fixtures/make_parser_ast_golden.mjs
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
`core/src/*.mjs` はビルド生成物(git 管理外)なので、
|
|
30
|
+
**再生成の前に必ずビルドしてください**。ビルドを忘れると古いコードの
|
|
31
|
+
AST がゴールデンになってしまいます。
|
|
32
|
+
|
|
33
|
+
### 差分が出たときの読み方
|
|
34
|
+
|
|
35
|
+
構文解析器のリファクタリング中にこのテストが落ちた場合、それは
|
|
36
|
+
**リファクタリングで挙動が変わってしまった**ことを意味します。
|
|
37
|
+
ゴールデンを再生成して通す前に、差分が意図したものか必ず確認してください。
|
|
38
|
+
`assert.deepStrictEqual` は差分箇所を表示するので、
|
|
39
|
+
どのノードのどのキーが変わったかを追えます。
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/* eslint-disable no-undef */
|
|
2
|
+
/**
|
|
3
|
+
* `parser_ast_golden.json` を生成するスクリプト (#2364)
|
|
4
|
+
*
|
|
5
|
+
* コーパス(`parser_corpus.mjs` の PARSER_CORPUS)を構文解析し、
|
|
6
|
+
* その AST をゴールデンファイルとして書き出す。
|
|
7
|
+
*
|
|
8
|
+
* 実行前に必ずビルドすること(core/src/*.mjs はビルド生成物のため)。
|
|
9
|
+
*
|
|
10
|
+
* npm run build:tsc
|
|
11
|
+
* node core/test/fixtures/make_parser_ast_golden.mjs
|
|
12
|
+
*
|
|
13
|
+
* このディレクトリは `core/test/*.mjs` のテストグロブに含まれないので、
|
|
14
|
+
* テスト実行時にこのファイルが走ることはない。
|
|
15
|
+
*/
|
|
16
|
+
import fs from 'node:fs'
|
|
17
|
+
import { PARSER_CORPUS, parseToPlainAst } from './parser_corpus.mjs'
|
|
18
|
+
|
|
19
|
+
const golden = {}
|
|
20
|
+
for (const [name, code] of Object.entries(PARSER_CORPUS)) {
|
|
21
|
+
try {
|
|
22
|
+
golden[name] = parseToPlainAst(code)
|
|
23
|
+
} catch (err) {
|
|
24
|
+
console.error(`構文解析に失敗しました: ${name}`)
|
|
25
|
+
throw err
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const outPath = new URL('./parser_ast_golden.json', import.meta.url)
|
|
30
|
+
fs.writeFileSync(outPath, JSON.stringify(golden, null, 1) + '\n', 'utf8')
|
|
31
|
+
console.log(`${Object.keys(golden).length} 件のゴールデン AST を書き出しました`)
|