nadesiko3 3.8.1 → 3.8.8

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.
Files changed (194) hide show
  1. package/README.md +32 -73
  2. package/batch/analize-code-line.nako3 +39 -0
  3. package/batch/command.txt +1278 -476
  4. package/batch/doctest.mjs +43 -14
  5. package/batch/merge_gonako_commands.nako3 +98 -0
  6. package/batch/pickup_command.nako3 +4 -0
  7. package/batch/search_command.nako3 +2 -2
  8. package/core/package-lock.json +519 -0
  9. package/core/package.json +3 -3
  10. package/core/src/nako_ast.mts +6 -0
  11. package/core/src/nako_core_version.mjs +2 -2
  12. package/core/src/nako_core_version.mts +2 -2
  13. package/core/src/nako_csv.mjs +49 -27
  14. package/core/src/nako_csv.mts +49 -28
  15. package/core/src/nako_dncl_ensure_array.mjs +29 -0
  16. package/core/src/nako_dncl_ensure_array.mts +29 -0
  17. package/core/src/nako_from_dncl.mjs +944 -56
  18. package/core/src/nako_from_dncl.mts +738 -51
  19. package/core/src/nako_gen.mjs +226 -46
  20. package/core/src/nako_gen.mts +223 -50
  21. package/core/src/nako_global.mjs +7 -0
  22. package/core/src/nako_global.mts +12 -0
  23. package/core/src/nako_inc_value.mjs +30 -0
  24. package/core/src/nako_inc_value.mts +26 -0
  25. package/core/src/nako_josi_list.mjs +15 -0
  26. package/core/src/nako_josi_list.mts +16 -0
  27. package/core/src/nako_lex_rules.mjs +5 -17
  28. package/core/src/nako_lex_rules.mts +5 -13
  29. package/core/src/nako_lexer.mjs +8 -11
  30. package/core/src/nako_lexer.mts +8 -9
  31. package/core/src/nako_parser3.mjs +51 -20
  32. package/core/src/nako_parser3.mts +58 -24
  33. package/core/src/nako_parser_message.mjs +5 -0
  34. package/core/src/nako_parser_message.mts +5 -0
  35. package/core/src/nako_tokenizer.mjs +3 -2
  36. package/core/src/nako_tokenizer.mts +3 -2
  37. package/core/src/plugin_api.mts +2 -1
  38. package/core/src/plugin_promise.mjs +5 -0
  39. package/core/src/plugin_promise.mts +5 -0
  40. package/core/src/plugin_system.mjs +11 -6
  41. package/core/src/plugin_system.mts +11 -6
  42. package/core/src/plugin_system_array.mjs +48 -20
  43. package/core/src/plugin_system_array.mts +45 -16
  44. package/core/src/plugin_system_datetime.mjs +2 -7
  45. package/core/src/plugin_system_datetime.mts +2 -7
  46. package/core/src/plugin_system_debug.mjs +2 -6
  47. package/core/src/plugin_system_debug.mts +2 -4
  48. package/core/src/plugin_system_math.mjs +11 -5
  49. package/core/src/plugin_system_math.mts +11 -5
  50. package/core/src/plugin_system_string.mjs +64 -32
  51. package/core/src/plugin_system_string.mts +63 -26
  52. package/core/src/plugin_system_timer.mjs +2 -6
  53. package/core/src/plugin_system_timer.mts +2 -2
  54. package/core/src/plugin_system_url.mjs +12 -29
  55. package/core/src/plugin_system_url.mts +10 -24
  56. package/core/src/url_util.mjs +35 -0
  57. package/core/src/url_util.mts +35 -0
  58. package/core/test/array_hang_test.mjs +169 -0
  59. package/core/test/array_test.mjs +58 -0
  60. package/core/test/calc_test.mjs +63 -1
  61. package/core/test/compat_fixture_test.mjs +49 -0
  62. package/core/test/dncl2_test.mjs +5 -0
  63. package/core/test/dncl_test.mjs +696 -0
  64. package/core/test/fixtures/README.md +9 -0
  65. package/core/test/fixtures/compat/README.md +85 -0
  66. package/core/test/fixtures/compat/SPEC.md +133 -0
  67. package/core/test/fixtures/compat/cases/01_literal.json +44 -0
  68. package/core/test/fixtures/compat/cases/02_operator.json +174 -0
  69. package/core/test/fixtures/compat/cases/03_type_convert.json +177 -0
  70. package/core/test/fixtures/compat/cases/04_string.json +282 -0
  71. package/core/test/fixtures/compat/cases/05_array.json +188 -0
  72. package/core/test/fixtures/compat/cases/06_dict.json +93 -0
  73. package/core/test/fixtures/compat/cases/07_flow.json +24 -0
  74. package/core/test/fixtures/compat/cases/08_func.json +94 -0
  75. package/core/test/fixtures/compat/cases/09_error.json +16 -0
  76. package/core/test/fixtures/compat/cases/10_async.json +48 -0
  77. package/core/test/fixtures/compat/cases/11_regexp.json +78 -0
  78. package/core/test/fixtures/compat/check_compat.mjs +133 -0
  79. package/core/test/fixtures/compat/compat_case.mjs +171 -0
  80. package/core/test/fixtures/compat/expected/01_literal.json +377 -0
  81. package/core/test/fixtures/compat/expected/02_operator.json +195 -0
  82. package/core/test/fixtures/compat/expected/03_type_convert.json +263 -0
  83. package/core/test/fixtures/compat/expected/04_string.json +333 -0
  84. package/core/test/fixtures/compat/expected/05_array.json +665 -0
  85. package/core/test/fixtures/compat/expected/06_dict.json +279 -0
  86. package/core/test/fixtures/compat/expected/07_flow.json +125 -0
  87. package/core/test/fixtures/compat/expected/08_func.json +146 -0
  88. package/core/test/fixtures/compat/expected/09_error.json +87 -0
  89. package/core/test/fixtures/compat/expected/10_async.json +39 -0
  90. package/core/test/fixtures/compat/expected/11_regexp.json +85 -0
  91. package/core/test/fixtures/compat/make_compat_golden.mjs +39 -0
  92. package/core/test/fixtures/parser_ast_golden.json +9 -29
  93. package/core/test/func_call.mjs +40 -0
  94. package/core/test/func_test.mjs +12 -0
  95. package/core/test/lex_test.mjs +30 -0
  96. package/core/test/nako_basic_plugins_test.mjs +23 -0
  97. package/core/test/pad_hang_test.mjs +58 -0
  98. package/core/test/plugin_csv_test.mjs +129 -2
  99. package/core/test/plugin_system_test.mjs +713 -0
  100. package/core/test/refrain_hang_test.mjs +51 -0
  101. package/doc/command_list.json +7877 -485
  102. package/doc/doctest.md +28 -7
  103. package/doc/gonako.md +470 -0
  104. package/doc/plugins.md +9 -1
  105. package/doc/search_command.md +15 -1
  106. package/package.json +8 -7
  107. package/release/_hash.txt +48 -48
  108. package/release/_script-tags.txt +16 -16
  109. package/release/command.json +1 -1
  110. package/release/command.json.js +1 -1
  111. package/release/command_cnako3.json +1 -1
  112. package/release/command_list.json +1 -1
  113. package/release/edit_main.js +13 -13
  114. package/release/edit_main.js.map +3 -3
  115. package/release/editor.js +13 -13
  116. package/release/plugin_kansuji.js +1 -1
  117. package/release/plugin_kansuji.js.map +3 -3
  118. package/release/plugin_markup.js +43 -41
  119. package/release/plugin_markup.js.map +3 -3
  120. package/release/plugin_turtle.js +1 -1
  121. package/release/plugin_turtle.js.map +3 -3
  122. package/release/plugin_webworker.js +2 -2
  123. package/release/plugin_webworker.js.map +2 -2
  124. package/release/plugin_weykturtle3d.js +1 -1
  125. package/release/plugin_weykturtle3d.js.map +2 -2
  126. package/release/version.js +7 -7
  127. package/release/version_main.js +7 -7
  128. package/release/version_main.js.map +3 -3
  129. package/release/wnako3.js +263 -228
  130. package/release/wnako3.js.map +4 -4
  131. package/release/wnako3webworker.js +212 -204
  132. package/release/wnako3webworker.js.map +4 -4
  133. package/src/cnako3mod.mjs +2 -1
  134. package/src/cnako3mod.mts +2 -1
  135. package/src/nako_version.mjs +2 -2
  136. package/src/nako_version.mts +2 -2
  137. package/src/plugin_browser.mjs +22 -33
  138. package/src/plugin_browser.mts +21 -28
  139. package/src/plugin_browser_ajax.mjs +7 -2
  140. package/src/plugin_browser_ajax.mts +7 -2
  141. package/src/plugin_browser_api.mts +2 -2
  142. package/src/plugin_browser_canvas.mjs +1 -1
  143. package/src/plugin_browser_canvas.mts +1 -1
  144. package/src/plugin_browser_crypto.mjs +1 -1
  145. package/src/plugin_browser_crypto.mts +1 -1
  146. package/src/plugin_browser_dialog.mjs +115 -17
  147. package/src/plugin_browser_dialog.mts +103 -17
  148. package/src/plugin_browser_dialog_dom.mjs +247 -0
  149. package/src/plugin_browser_dialog_dom.mts +258 -0
  150. package/src/plugin_browser_dom_basic.mjs +1 -1
  151. package/src/plugin_browser_dom_basic.mts +1 -1
  152. package/src/plugin_browser_dom_event.mjs +23 -26
  153. package/src/plugin_browser_dom_event.mts +23 -24
  154. package/src/plugin_browser_geolocation.mjs +2 -8
  155. package/src/plugin_browser_geolocation.mts +2 -4
  156. package/src/plugin_browser_hotkey.mjs +1 -1
  157. package/src/plugin_browser_hotkey.mts +1 -1
  158. package/src/plugin_browser_html.mjs +1 -3
  159. package/src/plugin_browser_html.mts +1 -1
  160. package/src/plugin_browser_speech.mjs +1 -0
  161. package/src/plugin_browser_speech.mts +1 -0
  162. package/src/plugin_browser_websocket.mjs +3 -3
  163. package/src/plugin_browser_websocket.mts +3 -3
  164. package/src/plugin_httpserver.mjs +367 -50
  165. package/src/plugin_httpserver.mts +333 -50
  166. package/src/plugin_kansuji.mjs +59 -34
  167. package/src/plugin_node.mjs +109 -67
  168. package/src/plugin_node.mts +108 -66
  169. package/src/plugin_turtle.mjs +3 -7
  170. package/src/plugin_turtle.mts +3 -5
  171. package/src/plugin_webworker.mjs +3 -3
  172. package/src/plugin_weykturtle3d.mjs +2 -0
  173. package/src/plugin_weykturtle3d.mts +2 -0
  174. package/src/plugin_worker.mjs +2 -2
  175. package/test/common/plugin_browser_ut_audio_test.mjs +6 -7
  176. package/test/common/plugin_browser_ut_dialog_test.mjs +66 -71
  177. package/test/doctest/cnako_basic.txt +12 -0
  178. package/test/doctest/wnako_canvas.txt +8 -0
  179. package/test/doctest/wnako_dom.txt +14 -0
  180. package/test/doctest/wnako_event.txt +10 -0
  181. package/test/node/ajax_content_test.mjs +43 -0
  182. package/test/node/analize_code_line_test.mjs +48 -0
  183. package/test/node/doctest_test.mjs +55 -14
  184. package/test/node/merge_gonako_commands_test.mjs +171 -0
  185. package/test/node/node_test.mjs +50 -17
  186. package/test/node/package_json_test.mjs +14 -0
  187. package/test/node/plugin_browser_dialog_test.mjs +379 -0
  188. package/test/node/plugin_browser_test.mjs +64 -0
  189. package/test/node/plugin_browser_ut_location_test.mjs +3 -5
  190. package/test/node/plugin_httpserver_test.mjs +480 -15
  191. package/test/node/plugin_kansuji_test.mjs +142 -0
  192. package/test/node/plugin_node_test.mjs +355 -26
  193. package/test/node/plugin_worker_test.mjs +43 -0
  194. package/test/node/add_test.nako3 +0 -1
package/README.md CHANGED
@@ -5,26 +5,31 @@
5
5
 
6
6
  ## 「なでしこ3」とは
7
7
 
8
- 「なでしこ3」とは、日本語のプログラミング言語です。JavaScript/TypeScriptをベースとしているので、PC/スマホ/タブレットなど、幅広い環境で動きます。日本語プログラミング言語は、読みやすく理解しやすいのが特徴で、初めてでも楽しくプログラミングを覚えることができます。また、バッチ処理や定型処理などを手軽に記述できます。
8
+ 「なでしこ3」とは、日本語のプログラミング言語です。「誰でも簡単プログラマー」を合い言葉に開発しています。
9
+ 日本語プログラミング言語は、読みやすく理解しやすいのが特徴で、初めてでも楽しくプログラミングを覚えることができます。
10
+ 日本語話者にとって、母国語で行うプログラミング教育にも最適です!
11
+ また、なでしこは、もともと業務改善のためのツールとして開発されましたので、定型処理やバッチ処理などを手軽に記述するのも得意です。ゲームやツール、さまざまな用途でお使いいただけます。
9
12
 
10
13
  - [なでしこのWebサイト](https://nadesi.com/)
11
14
  - [マニュアル](https://nadesi.com/v3/doc/)
12
15
 
13
16
  はじめて「なでしこ」に挑戦する方は、次のチュートリアルから始めることをオススメします。日本語プログラミング言語の雰囲気が容易に理解できます。
14
17
 
15
- - [チュートリアル](https://nadesi.com/v3/doc/go.php?997)
16
- - [生成AIになでしこ3のプログラムを作ってもらう](doc/ai-code-generation.md)
18
+ - [チュートリアル](https://nadesi.com/v3/doc/index.php?%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB)
17
19
 
18
20
  ## 対応機器/ブラウザ
19
21
 
20
- なでしこ3は、内部的にJavaScriptに変換されて実行されます。そのため、JavaScriptが動作するさまざまな端末で実行できます。
22
+ WEB版なでしこ3は、内部的にJavaScriptに変換されて実行されます。そのため、JavaScriptが動作するさまざまな端末で実行できます。
21
23
 
22
- 1. Webブラウザ(wnako) - 主要ブラウザ(Chrome/Safari/Edge/Firefox)に対応し、PC/スマートフォンで動作
23
- 2. コマンドライン(cnako) - JavaScriptの実行エンジン「Node.js」上で動作
24
- 3. 配付パッケージ - Electronを利用してローカルPC上で動作
24
+ - Webブラウザ(wnako3) - 主要ブラウザ(Chrome/Safari/Edge/Firefox)に対応し、PC/スマートフォンで動作
25
+ - コマンドライン(cnako3) - JavaScriptの実行エンジン「Node.js」上で動作
25
26
 
26
27
  具体的な対応ブラウザについて詳しくは、[対応機器/ブラウザ](doc/browsers.md) をご覧ください。Node.jsの対応バージョンは、v22以上です。
27
28
 
29
+ また、本リポジトリとは別に、PC版のなでしこ3(Go言語で実装されたもの)があります。
30
+
31
+ - [PC版(gonako/gonako-gui)](https://github.com/kujirahand/nadesiko3go/) - デスクトップアプリ(gonako-gui)やコマンドライン(gonako)アプリを開発できます。作成したアプリを実行ファイル1個に梱包でき配布も簡単です。エディタ一体型のツールです。
32
+
28
33
  ## ブラウザで利用する方法
29
34
 
30
35
  次のWebエディタ上で、なでしこを実行できます。ブラウザがあれば動作します。
@@ -36,12 +41,17 @@
36
41
 
37
42
  なでしこ3をインストールして動かす方法は下記にまとめています。
38
43
 
39
- - [なでしこマニュアル > FAQ/なでしこ3をインストールして使うには?](https://nadesi.com/v3/doc/go.php?3907)
44
+ - [なでしこマニュアル > FAQ/なでしこ3をインストールして使うには?](https://nadesi.com/v3/doc/index.php?FAQ%2F%E3%81%AA%E3%81%A7%E3%81%97%E3%81%933%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%A6%E4%BD%BF%E3%81%86%E3%81%AB%E3%81%AF%EF%BC%9F&show)
45
+
46
+ ## AIと一緒になでしこを使う
47
+
48
+ AIになでしこの文法を読み込ませることで、なでしこのプログラムをエラーなく動かすことが可能です。
49
+
50
+ - [生成AIになでしこ3のプログラムを作ってもらう](doc/ai-code-generation.md)
40
51
 
41
52
  ## Node.jsでなでしこ3コマンドライン版をインストール
42
53
 
43
- 先にNode.js/npmをインストールします。
44
- 次いで、コマンドラインから次のコマンドを実行します。
54
+ 先にNode.js/npmをインストールします。次いで、コマンドラインから次のコマンドを実行します。
45
55
 
46
56
  ```sh
47
57
  npm install -g nadesiko3
@@ -67,45 +77,6 @@ npm install
67
77
  npm run build
68
78
  ```
69
79
 
70
- ## Ubuntuへの開発環境のセットアップ
71
-
72
- まっさらなUbuntu22.04に、なでしこ3の開発環境を整える場合は次のコマンドを実行します。
73
-
74
- ```sh
75
- sudo apt update
76
- # nvm で Node.js をインストール
77
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash
78
- source ~/.bashrc
79
- nvm install v24
80
- nvm use v24
81
- # リポジトリのセットアップ
82
- git clone https://github.com/kujirahand/nadesiko3.git
83
- cd nadesiko3
84
- npm install
85
- # なでしこ3のビルド
86
- npm run build
87
- ```
88
-
89
- ## 追加インストール(macOS/Linux)
90
-
91
- 必要に応じて次のコマンドをインストールします。
92
-
93
- macOS:
94
-
95
- ```sh
96
- # 『圧縮』『解凍』命令のために
97
- brew install p7zip
98
- ```
99
-
100
- Ubuntu/Debian:
101
-
102
- ```sh
103
- # 『圧縮』『解凍』命令のために
104
- sudo apt install p7zip-full
105
- # 『キー送信』命令のために
106
- sudo apt install xdotool
107
- ```
108
-
109
80
  全てのコマンドが正しく動くかを確認するには、次のコマンドを実行します。
110
81
 
111
82
  ```sh
@@ -121,7 +92,7 @@ npm test
121
92
  ```sh
122
93
  # なでしこエディタ(WEB版)のサーバーを起動
123
94
  npm start
124
- # なでしこエディタ(PC版)を起動
95
+ # なでしこエディタ(Node.js版)を起動
125
96
  npm run nako3edit
126
97
  ```
127
98
 
@@ -143,25 +114,15 @@ npm run search:command -- --help
143
114
 
144
115
  詳しくは、[doc/search_command.md](doc/search_command.md) をご覧ください。
145
116
 
146
- ## Colabでなでしこを使って作業をする場合
147
-
148
- 以下にColabを使ってなでしこを使う場合の作業用テンプレートを用意しました。
149
- ノートを複製して自分の作業に利用できます。
150
-
151
- - [作業用テンプレート](https://colab.research.google.com/drive/1FmOIoJGeFP57C9fgZXCP5pvcVJ6HmvH4?usp=sharing)
152
-
153
- ## Colabでビルドテスト
154
-
155
- Google Colabでなでしこのビルドテストできます。
156
-
157
- - [ノートブック](https://colab.research.google.com/drive/1a-Choj3tCBCA1R7x7vPdNQN48vGzBd7E?usp=sharing)
158
-
159
117
  ## なでしこの開発履歴
160
118
 
161
119
  日本語プログラミング言語「なでしこ」の開発は2004年にはじまりました。その後、何度も作り直しを行って、現在の「なでしこ3」ができています。
162
120
  「なでしこ3」の開発は、2017年からコツコツと継続され、現在まで定期的にバージョンアップが続いています。
163
121
  2004年に掲げた「誰でも簡単プログラマー」の目標を実現するために開発を続けます。
164
122
 
123
+ - (2026-09-07) 現行TS版と互換性のある[なでしこ3(Go版)](https://github.com/kujirahand/nadesiko3go/)を公開
124
+ - (2026-09-01) v3.8.1で古い__getProp/__setPropによるプロパティアクセスを廃止
125
+ - (2026-04-05) v3.7.17より生成AIの活用を大々的に開始
165
126
  - (2024-07-22) v.3.6.11でcoreに分割した開発用リポジトリを再び本家に統合
166
127
  - (2024-07-04) v3.6.8で、バンドルツールを`webpack`から`esbuild`に変更(#1690)
167
128
  - (2024-05-02) v3.6.2で、プラグイン用APIを一新、なでしこの変数管理をObjectからMapに変更(#1638)
@@ -204,8 +165,9 @@ Google Colabでなでしこのビルドテストできます。
204
165
 
205
166
  ## なでしこ関連リポジトリへのリンク
206
167
 
207
- - [なでしこ3開発リポジトリ(GitHub)](https://github.com/kujirahand/nadesiko3/)
208
- - [なでしこ3拡張プラグイン](https://nadesi.com/v3/doc/index.php?FAQ%2F%E6%8B%A1%E5%BC%B5%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6&show)
168
+ - [WEB版なでしこ3(Node.js)](https://github.com/kujirahand/nadesiko3/)
169
+ - [PC版なでしこ3(Go)](https://github.com/kujirahand/nadesiko3go)
170
+ - [なでしこ3Node.js版の拡張プラグイン](https://nadesi.com/v3/doc/index.php?FAQ%2F%E6%8B%A1%E5%BC%B5%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6&show)
209
171
  - [nadesiko3-server](https://github.com/kujirahand/nadesiko3-server) --- Webサーバ(HTTP)
210
172
  - [nadesiko3-websocket](https://github.com/kujirahand/nadesiko3-websocket) --- WebSocket
211
173
  - [nadesiko3-office](https://github.com/kujirahand/nadesiko3-office) --- Excelなど
@@ -218,15 +180,12 @@ Google Colabでなでしこのビルドテストできます。
218
180
  - [nadesiko3-mysql](https://github.com/kujirahand/nadesiko3-mysql) --- データベースMySQL
219
181
  - [nadesiko3-postgresql](https://github.com/kujirahand/nadesiko3-postgresql) --- データベースPostgreSQL
220
182
  - [nadesiko3-mssql](https://github.com/kujirahand/nadesiko3-mssql) --- データベースmssql
221
- - 配布用パッケージ
183
+ - 配布用パッケージ (現在は非推奨)
222
184
  - [nadesiko3webkit - なでしこ3軽量配布キット(webkit版)](https://github.com/kujirahand/nadesiko3webkit)
223
185
  - [nadesiko3electron - なでしこ3フル配布キット(electron版)](https://github.com/kujirahand/nadesiko3electron)
224
186
  - [nadesiko3win32 - なでしこ3(コンソール版)のWindows配布パッケージ](https://github.com/kujirahand/nadesiko3win32/releases)
225
- - サーバーサイドJavaScriptエンジン用の実装
226
- - [nadesiko3(Node.js)](https://github.com/kujirahand/nadesiko3)
227
- - [nadesiko3(Deno)](https://github.com/kujirahand/nadesiko3deno)
228
- - 実験的に別言語で実装したなでしこ3
229
- - [nadesiko3php - なでしこ3PHP](https://github.com/kujirahand/nadesiko3php)
230
- - [nadesiko3rust - なでしこ3Rust](https://github.com/kujirahand/nadesiko3rust)
231
- - [nadesiko3go - なでしこ3Go言語](https://github.com/kujirahand/nadesiko3go)
187
+ - 実験/別言語で実装したなでしこ3
232
188
  - [nadesiko3core](https://github.com/kujirahand/nadesiko3core/) --- 言語コアのみ取り出したもの
189
+ - [nadesiko3rust - なでしこ3Rust](https://github.com/kujirahand/nadesiko3rust)
190
+ - [nadesiko3php - なでしこ3PHP](https://github.com/kujirahand/nadesiko3php)
191
+ - [nadesiko3(Deno)](https://github.com/kujirahand/nadesiko3deno)
@@ -0,0 +1,39 @@
1
+ ROOT_DIR = 母艦パスを「../」で相対パス展開。
2
+
3
+ FILES = 「{ROOT_DIR}/*.mts」の全ファイル列挙。
4
+ TOTAL_FILES = 0
5
+ TOTAL_LINES = 0
6
+ TOTAL_CHARS = 0
7
+
8
+ FILESを反復
9
+ # node_modules を除外
10
+ 対象を『node_modules』で正規表現マッチ。
11
+ もし、そうならば、続ける。
12
+
13
+ F = 対象
14
+ S = Fを開く。
15
+ CHARS = Sの文字数。
16
+
17
+ # 行末の改行を取り除いてから改行で区切る
18
+ S_TRIM = Sの「/\r?\n$/」を「」に正規表現置換。
19
+ もし、S_TRIM == ""ならば
20
+ LINES = 0
21
+ 違えば
22
+ LINES = (S_TRIMを改行で区切る)の要素数
23
+ ここまで。
24
+
25
+ TOTAL_FILES = TOTAL_FILES + 1
26
+ TOTAL_LINES = TOTAL_LINES + LINES
27
+ TOTAL_CHARS = TOTAL_CHARS + CHARS
28
+
29
+ # 相対パス表示
30
+ REL_PATH = Fの「{ROOT_DIR}」を「」に置換。
31
+ REL_PATH = REL_PATHの「/^[\\\/]/」を「」に正規表現置換。
32
+ 「{REL_PATH}: {LINES}行, {CHARS}文字」を表示。
33
+ ここまで。
34
+
35
+ 「----------------------------------------」を表示。
36
+ 「対象ファイル数: {TOTAL_FILES}」を表示。
37
+ 「総行数: {TOTAL_LINES} 行」を表示。
38
+ 「総文字数: {TOTAL_CHARS} 文字」を表示。
39
+ 「----------------------------------------」を表示。