nadesiko3 3.2.52 → 3.3.3

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 (178) hide show
  1. package/README.md +1 -1
  2. package/bin/cnako3 +1 -1
  3. package/bin/cnako3.bat +1 -1
  4. package/demo/browsers.html +9 -10
  5. package/demo/flow.html +1 -0
  6. package/demo/runscript3.html +35 -0
  7. package/demo/turtle3.html +18 -17
  8. package/demo/turtle3d.html +1 -1
  9. package/demo/turtle3d2.html +1 -1
  10. package/doc/browsers.md +9 -10
  11. package/package.json +58 -57
  12. package/release/_hash.txt +57 -52
  13. package/release/_script-tags.txt +14 -13
  14. package/release/command.json +1 -1
  15. package/release/command.json.js +1 -1
  16. package/release/command_cnako3.json +1 -1
  17. package/release/command_list.json +1 -1
  18. package/release/editor.js +1 -1
  19. package/release/editor.js.LICENSE.txt +9 -12
  20. package/release/nako_gen_async.js +1 -1
  21. package/release/nako_gen_async.js.LICENSE.txt +10 -666
  22. package/release/plugin_caniuse.js +1 -1
  23. package/release/plugin_caniuse.js.LICENSE.txt +9 -425
  24. package/release/plugin_csv.js +1 -1
  25. package/release/plugin_csv.js.LICENSE.txt +3 -419
  26. package/release/plugin_datetime.js +1 -1
  27. package/release/plugin_datetime.js.LICENSE.txt +6 -530
  28. package/release/plugin_kansuji.js +1 -1
  29. package/release/plugin_kansuji.js.LICENSE.txt +3 -559
  30. package/release/plugin_markup.js +1 -1
  31. package/release/plugin_markup.js.LICENSE.txt +4 -420
  32. package/release/plugin_turtle.js +1 -1
  33. package/release/plugin_turtle.js.LICENSE.txt +12 -500
  34. package/release/plugin_webworker.js +1 -1
  35. package/release/plugin_webworker.js.LICENSE.txt +3 -563
  36. package/release/plugin_weykturtle3d.js +1 -0
  37. package/release/plugin_weykturtle3d.js.LICENSE.txt +3 -0
  38. package/release/stats.json +1 -1
  39. package/release/version.js +1 -1
  40. package/release/version.js.LICENSE.txt +9 -12
  41. package/release/wnako3.js +1 -1
  42. package/release/wnako3.js.LICENSE.txt +1 -1
  43. package/release/wnako3webworker.js +1 -1
  44. package/release/wnako3webworker.js.LICENSE.txt +1 -1117
  45. package/src/browsers.mjs +1 -0
  46. package/src/browsers.txt +15 -15
  47. package/src/browsers_agents.mjs +1 -0
  48. package/src/cnako3.mjs +13 -0
  49. package/src/{cnako3.js → cnako3mod.mjs} +119 -101
  50. package/src/{commander_ja.js → commander_ja.mjs} +16 -11
  51. package/src/{enako3.js → enako3.mjs} +0 -0
  52. package/src/{era.json → era.mjs} +1 -1
  53. package/src/image_turtle-elephant.mjs +5 -0
  54. package/src/image_turtle-panda.mjs +5 -0
  55. package/src/image_turtle64.mjs +5 -0
  56. package/src/index.mjs +9 -0
  57. package/src/{nako3.js → nako3.mjs} +69 -57
  58. package/src/{nako3_assert.js → nako3_assert.mjs} +7 -6
  59. package/src/{nako3server.js → nako3server.mjs} +12 -5
  60. package/src/{nako_colors.js → nako_colors.mjs} +1 -1
  61. package/src/{nako_errors.js → nako_errors.mjs} +10 -20
  62. package/src/{nako_from_dncl.js → nako_from_dncl.mjs} +11 -8
  63. package/src/{nako_gen.js → nako_gen.mjs} +93 -87
  64. package/src/{nako_gen_async.js → nako_gen_async.mjs} +5 -8
  65. package/src/{nako_global.js → nako_global.mjs} +4 -5
  66. package/src/{nako_indent.js → nako_indent.mjs} +29 -25
  67. package/src/{nako_josi_list.js → nako_josi_list.mjs} +16 -14
  68. package/src/nako_lex_rules.mjs +244 -0
  69. package/src/{nako_lexer.js → nako_lexer.mjs} +7 -10
  70. package/src/{nako_logger.js → nako_logger.mjs} +3 -4
  71. package/src/{nako_parser3.js → nako_parser3.mjs} +5 -5
  72. package/src/{nako_parser_base.js → nako_parser_base.mjs} +1 -9
  73. package/src/{nako_parser_const.js → nako_parser_const.mjs} +2 -6
  74. package/src/{nako_prepare.js → nako_prepare.mjs} +46 -8
  75. package/src/{nako_reserved_words.js → nako_reserved_words.mjs} +1 -1
  76. package/src/{nako_source_mapping.js → nako_source_mapping.mjs} +4 -11
  77. package/src/{nako_test.js → nako_test.mjs} +0 -0
  78. package/src/nako_version.mjs +7 -0
  79. package/src/{plugin_browser.js → plugin_browser.mjs} +30 -30
  80. package/src/{plugin_browser_ajax.js → plugin_browser_ajax.mjs} +7 -7
  81. package/src/{plugin_browser_audio.js → plugin_browser_audio.mjs} +1 -1
  82. package/src/{plugin_browser_canvas.js → plugin_browser_canvas.mjs} +1 -1
  83. package/src/{plugin_browser_chart.js → plugin_browser_chart.mjs} +1 -1
  84. package/src/{plugin_browser_color.js → plugin_browser_color.mjs} +1 -1
  85. package/src/{plugin_browser_crypto.js → plugin_browser_crypto.mjs} +1 -1
  86. package/src/{plugin_browser_dialog.js → plugin_browser_dialog.mjs} +1 -1
  87. package/src/{plugin_browser_dom_basic.js → plugin_browser_dom_basic.mjs} +1 -1
  88. package/src/{plugin_browser_dom_event.js → plugin_browser_dom_event.mjs} +1 -1
  89. package/src/{plugin_browser_dom_parts.js → plugin_browser_dom_parts.mjs} +1 -1
  90. package/src/{plugin_browser_geolocation.js → plugin_browser_geolocation.mjs} +1 -1
  91. package/src/{plugin_browser_hotkey.js → plugin_browser_hotkey.mjs} +2 -2
  92. package/src/{plugin_browser_html.js → plugin_browser_html.mjs} +1 -1
  93. package/src/{plugin_browser_in_worker.js → plugin_browser_in_worker.mjs} +4 -4
  94. package/src/{plugin_browser_location.js → plugin_browser_location.mjs} +1 -1
  95. package/src/{plugin_browser_speech.js → plugin_browser_speech.mjs} +1 -1
  96. package/src/{plugin_browser_storage.js → plugin_browser_storage.mjs} +1 -1
  97. package/src/{plugin_browser_system.js → plugin_browser_system.mjs} +1 -1
  98. package/src/{plugin_browser_websocket.js → plugin_browser_websocket.mjs} +1 -1
  99. package/src/{plugin_caniuse.js → plugin_caniuse.mjs} +8 -3
  100. package/src/{plugin_csv.js → plugin_csv.mjs} +4 -5
  101. package/src/{plugin_datetime.js → plugin_datetime.mjs} +19 -26
  102. package/src/{plugin_express.js → plugin_express.mjs} +4 -3
  103. package/src/{plugin_kansuji.js → plugin_kansuji.mjs} +1 -1
  104. package/src/{plugin_keigo.js → plugin_keigo.mjs} +1 -1
  105. package/src/{plugin_markup.js → plugin_markup.mjs} +6 -6
  106. package/src/{plugin_math.js → plugin_math.mjs} +1 -4
  107. package/src/{plugin_node.js → plugin_node.mjs} +25 -57
  108. package/src/{plugin_promise.js → plugin_promise.mjs} +1 -3
  109. package/src/{plugin_system.js → plugin_system.mjs} +32 -15
  110. package/src/{plugin_test.js → plugin_test.mjs} +1 -3
  111. package/src/{plugin_turtle.js → plugin_turtle.mjs} +5 -4
  112. package/src/{plugin_webworker.js → plugin_webworker.mjs} +3 -3
  113. package/src/{plugin_weykturtle3d.js → plugin_weykturtle3d.mjs} +1 -3
  114. package/src/{plugin_worker.js → plugin_worker.mjs} +4 -1
  115. package/src/{wnako3.js → wnako3.mjs} +24 -14
  116. package/src/{wnako3_editor.js → wnako3_editor.mjs} +28 -22
  117. package/src/{wnako3webworker.js → wnako3webworker.mjs} +0 -0
  118. package/test/async/{async_basic_test.js → async_basic_test.mjs} +3 -4
  119. package/test/browser/karma.config.js +9 -0
  120. package/test/browser/test/plugin_browser_test.js +2 -2
  121. package/test/browser/test/plugin_turtle_test.js +2 -2
  122. package/test/browser/test/plugin_webworker_test.js +3 -3
  123. package/test/browser/test/require_test.js +2 -2
  124. package/test/common/{array_test.js → array_test.mjs} +3 -3
  125. package/test/common/{basic_test.js → basic_test.mjs} +3 -13
  126. package/test/common/{calc_test.js → calc_test.mjs} +2 -2
  127. package/test/common/{debug_test.js → debug_test.mjs} +2 -2
  128. package/test/common/{dncl_test.js → dncl_test.mjs} +3 -3
  129. package/test/common/{error_test.js → error_test.mjs} +2 -2
  130. package/test/common/{flow_test.js → flow_test.mjs} +2 -2
  131. package/test/common/{func_call.js → func_call.mjs} +3 -3
  132. package/test/common/{func_test.js → func_test.mjs} +2 -2
  133. package/test/common/{indent_test.js → indent_test.mjs} +3 -2
  134. package/test/common/{lex_test.js → lex_test.mjs} +2 -2
  135. package/test/common/{literal_test.js → literal_test.mjs} +3 -2
  136. package/test/common/{nako_logger_test.js → nako_logger_test.mjs} +3 -3
  137. package/test/common/{plugin_browser_test.js → plugin_browser_test.mjs} +4 -4
  138. package/test/common/{plugin_browser_ut_audio_test.js → plugin_browser_ut_audio_test.mjs} +4 -4
  139. package/test/common/{plugin_browser_ut_color_test.js → plugin_browser_ut_color_test.mjs} +2 -2
  140. package/test/common/{plugin_browser_ut_dialog_test.js → plugin_browser_ut_dialog_test.mjs} +3 -3
  141. package/test/common/{plugin_browser_ut_html_test.js → plugin_browser_ut_html_test.mjs} +2 -2
  142. package/test/common/{plugin_browser_ut_system_test.js → plugin_browser_ut_system_test.mjs} +2 -2
  143. package/test/common/{plugin_csv_test.js → plugin_csv_test.mjs} +3 -3
  144. package/test/common/{plugin_datetime_test.js → plugin_datetime_test.mjs} +4 -4
  145. package/test/common/{plugin_kansuji_test.js → plugin_kansuji_test.mjs} +3 -3
  146. package/test/common/{plugin_markup_test.js → plugin_markup_test.mjs} +3 -3
  147. package/test/common/{plugin_promise_test.js → plugin_promise_test.mjs} +2 -2
  148. package/test/common/{plugin_system_test.js → plugin_system_test.mjs} +2 -2
  149. package/test/common/{prepare_test.js → prepare_test.mjs} +2 -2
  150. package/test/common/{re_test.js → re_test.mjs} +2 -2
  151. package/test/common/{variable_scope_test.js → variable_scope_test.mjs} +2 -2
  152. package/test/karma.config.js +3 -3
  153. package/test/node/{async_test.js → async_test.mjs} +4 -2
  154. package/test/node/{commander_ja_test.js → commander_ja_test.mjs} +17 -12
  155. package/test/node/{error_message_test.js → error_message_test.mjs} +13 -10
  156. package/test/node/node_test.mjs +57 -0
  157. package/test/node/{plugin_browser_ut_ajax_test.js → plugin_browser_ut_ajax_test.mjs} +7 -5
  158. package/test/node/{plugin_browser_ut_location_test.js → plugin_browser_ut_location_test.mjs} +3 -3
  159. package/test/node/{plugin_markup_test.js → plugin_markup_test.mjs} +6 -7
  160. package/test/node/{plugin_math_test.js → plugin_math_test.mjs} +5 -5
  161. package/test/node/{plugin_node_test.js → plugin_node_test.mjs} +11 -7
  162. package/test/node/{plugin_test.js → plugin_test.mjs} +11 -5
  163. package/test/node/{require_nako3_test.js → require_nako3_test.mjs} +19 -12
  164. package/test/node/{side_effects_test.js → side_effects_test.mjs} +24 -13
  165. package/test/node/{wnako3_editor_test.js → wnako3_editor_test.mjs} +16 -9
  166. package/tools/nako3edit/html/daisyui/LICENSE +22 -0
  167. package/tools/nako3edit/html/daisyui/full.css +1 -0
  168. package/tools/nako3edit/html/daisyui/tailwind.min.css +1 -0
  169. package/tools/nako3edit/html/daisyui/version_2.14.1 +1 -0
  170. package/tools/nako3edit/html/edit.html +104 -19
  171. package/tools/nako3edit/html/files.html +84 -8
  172. package/tools/nako3edit/html/nako3edit.css +6 -7
  173. package/tools/nako3edit/index.nako3 +45 -6
  174. package/tools/nako3edit/{run.js → run.mjs} +8 -2
  175. package/src/index.js +0 -5
  176. package/src/nako_lex_rules.js +0 -260
  177. package/src/nako_version.js +0 -8
  178. package/test/node/node_test.js +0 -43
@@ -1,8 +1,12 @@
1
1
  <!DOCTYPE html>
2
- <html>
2
+ <html data-theme="winter">
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
- <title>なでしこ3(Node版)エディタ</title>
5
+ <title>Node版 なでしこ3 エディタ</title>
6
+ <!-- daisyUI-->
7
+ <link href="daisyui/tailwind.min.css" rel="stylesheet" type="text/css" />
8
+ <link href="daisyui/full.css" rel="stylesheet" type="text/css" />
9
+ <!-- nako3edit -->
6
10
  <link href="/html/nako3edit.css" rel="stylesheet" type="text/css" />
7
11
  <script defer type="text/javascript" src="/release/wnako3.js?run&v=1"></script>
8
12
  <script defer type="text/javascript" src="/html/edit_plugin.js"></script>
@@ -16,21 +20,28 @@ Pを表示。
16
20
  FNAME="無題.nako3"
17
21
  もし、P["file"]ならば、FNAME=P["file"]
18
22
  エディタ初期化。
23
+ 対象ファイル読込処理。
19
24
 
20
- ●エディタ初期化
21
- 「エディタ初期化」を表示。
22
- 「#run_btn」の「onclick」に「P実行処理」をDOMイベント設定。
23
- 「#save_btn」の「onclick」に「P保存処理」をDOMイベント設定。
25
+ ●対象ファイル読込処理とは
26
+ # ファイル名解決
24
27
  もし、FNAME=「new」ならば
25
- FNAME="無題.nako3"
28
+ FNAME=(「/get_new_filename?appkey={APPKEY}」からAJAX_JSON取得)
26
29
  FILE2 = "new"
27
30
  違えば
28
31
  FILE2 = FNAMEをURLエンコード。
29
32
  ここまで。
30
- 「#name」にFNAMEをDOMテキスト設定
33
+ # ロード
34
+ 「#name」にFNAMEをDOMテキスト設定。
31
35
  「/load?file={FILE2}&appkey={APPKEY}」へGET送信した時には
32
36
  「#body」に対象をDOMテキスト設定。
33
37
  ここまで。
38
+ ここまで。
39
+
40
+ ●エディタ初期化
41
+ 「エディタ初期化」を表示。
42
+ 「#run_btn」の「onclick」に「P実行処理」をDOMイベント設定。
43
+ 「#save_btn」の「onclick」に「P保存処理」をDOMイベント設定。
44
+ 「#clear_btn」の「onclick」に「Pクリア処理」をDOMイベント設定。
34
45
  # 戻るリンクをAPPKEYを入れて初期化
35
46
  「.backlink」のDOM要素全取得して反復
36
47
  対象["href"] = "/html/files.html?appkey={APPKEY}"
@@ -46,6 +57,12 @@ FNAME="無題.nako3"
46
57
  "appkey": APPKEY
47
58
  }をPOST送信した時には
48
59
  H=対象をHTML変換して改行を「<br />」に置換。
60
+ Hで「エラー]」が何文字目。
61
+ もし、そうならば
62
+ Hの「(\[\d+m)」を「」に正規表現置換してHに代入。
63
+ Hの「(\[.*?\])」を「<span style='color:red;font-weight:bold;'>$1</span>」に正規表現置換してHに代入。
64
+ Hの「(『.*?』)」を「<span style='color:blue;font-weight:bold;'>$1</span>」に正規表現置換してHに代入。
65
+ ここまで。
49
66
  「#result」にHをDOMテキスト設定。
50
67
  ここまで。
51
68
  ここまで
@@ -58,26 +75,94 @@ FNAME="無題.nako3"
58
75
  "body": 「#body」のDOMテキスト取得,
59
76
  "appkey": APPKEY
60
77
  }をPOST送信した時には
61
- H=対象をHTML変換
78
+ H=対象をHTML変換。
62
79
  「#result」にHをDOMテキスト設定。
63
80
  ここまで。
64
- ここまで
81
+ ここまで。
82
+
83
+ ●Pクリア処理とは
84
+ 「#result」に「」をDOMテキスト設定。
85
+ ここまで。
65
86
 
66
87
  #-----------
67
88
  </script>
68
89
  </head>
69
90
  <body>
70
- <h1>なでしこ3(Node版)エディタ - <span class="titlemenu"><a class="backlink" href="#">[ファイル一覧]</a></span></h1>
91
+ <div class="navbar bg-base-100">
92
+
93
+ <div class="dropdown">
94
+ <label tabindex="0" class="btn btn-ghost btn-circle">
95
+ <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h7" /></svg>
96
+ </label>
97
+ <ul tabindex="0" class="menu menu-compact dropdown-content mt-3 p-2 shadow bg-base-100 rounded-box w-52">
98
+ <li><a class="backlink">ファイル一覧</a></li>
99
+ <li><label for="my-modal-desc" class="modal-button">このエディタについて</label></li>
100
+ </ul>
101
+ </div>
102
+
103
+ <div class="flex-1">
104
+ <a class="btn btn-ghost normal-case text-xl">Node版 なでしこ3 エディタ</a>
105
+ </div>
106
+ <div class="flex-none">
107
+ <div class="namebox">file:
108
+ <input type="text" class="input input-bordered input-md max-w-xs" id="name" size="20" />
109
+ </div>
110
+ </div>
111
+ </div>
112
+
71
113
  <div class="editbox">
72
- <div class="namebox">file: <input type="text" id="name" size="40" /></div>
73
- <div><textarea id="body" rows="12" cols="60"></textarea></div>
114
+ <div class="text-sm breadcrumbs">
115
+ <ul>
116
+ <li>
117
+ <a class="backlink">
118
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" class="w-4 h-4 mr-2 stroke-current"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"></path></svg>
119
+ ファイル一覧
120
+ </a>
121
+ </li>
122
+ <li><label for="my-modal-desc" class="modal-button">エディタ</label></li>
123
+ </ul>
124
+ </div>
125
+ <div style="margin:1em;">
126
+ <textarea id="body" class="textarea" rows="12" cols="60"></textarea>
127
+ </div>
74
128
  <div class="cmd_btn">
75
- <button id="run_btn">実行(cnako3)</button>
76
- <button id="save_btn">保存</button>
129
+ <button id="run_btn" class="btn btn-primary">実行(cnako3)</button>
130
+ <button id="save_btn" class="btn">保存</button>
131
+ <button id="clear_btn" class="btn">クリア</button>
77
132
  </div>
78
- <div id="result"></div>
79
- </div>
80
- <hr />
81
- <div><a class="backlink" href="#">→ファイル一覧へ</a></div>
133
+ <!-- 実行画面 -->
134
+ <div style="margin: 1em">
135
+ <div class="mockup-window">
136
+ <div id="result" class="bg-base-200"></div>
137
+ </div>
138
+ </div>
139
+ <div class="divider"></div>
140
+
141
+ <!-- フッターのリンク -->
142
+ <div class="text-sm breadcrumbs">
143
+ <ul>
144
+ <li>
145
+ <a class="backlink">
146
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" class="w-4 h-4 mr-2 stroke-current"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"></path></svg>
147
+ ファイル一覧
148
+ </a>
149
+ </li>
150
+ <li>
151
+ <label for="my-modal-desc" class="modal-button">エディタ</label>
152
+ </li>
153
+ </ul>
154
+ </div>
155
+ </div><!-- end of #editbox -->
82
156
  </body>
157
+
158
+ <!-- エディタの説明モーダルダイアログ -->
159
+ <input type="checkbox" id="my-modal-desc" class="modal-toggle">
160
+ <div class="modal">
161
+ <div class="modal-box relative">
162
+ <label for="my-modal-desc" class="btn btn-sm btn-circle absolute right-2 top-2">✕</label>
163
+ <h3 class="text-lg font-bold">Node版 なでしこ3エディタとは</h3>
164
+ <p class="py-4">なでしこ3のNode.jsランタイムを実行するためのエディタです。</p>
165
+ </div>
166
+ </div>
167
+
83
168
  </html>
@@ -1,11 +1,16 @@
1
1
  <!DOCTYPE html>
2
- <html>
2
+ <html data-theme="winter">
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
- <title>なでしこ3(Node版)エディタ - ファイル一覧</title>
5
+ <title>Node版 なでしこ3 エディタ - ファイル一覧</title>
6
+ <!-- daisyUI-->
7
+ <link href="daisyui/tailwind.min.css" rel="stylesheet" type="text/css" />
8
+ <link href="daisyui/full.css" rel="stylesheet" type="text/css" />
9
+ <!-- nako3edit -->
6
10
  <link href="/html/nako3edit.css" rel="stylesheet" type="text/css" />
7
11
  <script defer type="text/javascript" src="/release/wnako3.js"></script>
8
12
  <script defer type="text/javascript" src="/html/edit_plugin.js"></script>
13
+
9
14
  <script type="なでしこ">
10
15
  #-----------
11
16
  APPKEY=""
@@ -16,18 +21,36 @@ Pを表示。
16
21
  APPKEY=P["appkey"]
17
22
  Pを表示。
18
23
  ファイル一覧取得処理
19
-
24
+ #-----------
25
+ # 新規ボタン
26
+ 「#new_btn」をクリックした時には
27
+   「/html/edit.html?file=new&appkey={APPKEY}」へブラウザ移動。
28
+ ここまで。
29
+ #-----------
20
30
  ●ファイル一覧取得処理
21
31
  「/files?appkey={APPKEY}」へAJAX送信した時には
22
- HTML=「<li><a href="/html/edit.html?file=new&appkey={APPKEY}"><span class="newfile">→新規作成</span></a></li>」
32
+ HTML=「」
23
33
  一覧=対象をJSONデコード
24
34
  一覧を反復
25
35
  F=それ
36
+ もし、LEFT(F,2)="__"ならば、続ける。
26
37
  F2 = FをHTML変換
27
38
  F3 = FをURLエンコード
28
- HTML=HTML&「<li><a href="/html/edit.html?file={F3}&appkey={APPKEY}">{F2}</a></li>」
29
- ここまで
39
+ Fを「\.(csv|txt|tsv|js|bat|nako3|nako|css|html|htm|)$」で正規表現マッチ。
40
+ もし、そうならば
41
+ HTML=HTML&「<li>」
42
+ HTML=HTML&「<a class="btn btn-sm btn-warning del_btn" data-file="{F3}">削除</a> &nbsp;」
43
+ HTML=HTML&「<a href="/html/edit.html?file={F3}&appkey={APPKEY}">📝 {F2}</a>」
44
+ HTML=HTML&「</li>」
45
+ 違えば
46
+ HTML=HTML&「<li>」
47
+ HTML=HTML&「<a class="btn btn-sm btn-warning del_btn" data-file="{F3}">削除</a> &nbsp;」
48
+ HTML=HTML&「<a>🌠 {F2}</a>」
49
+ HTML=HTML&「</li>」
50
+ ここまで。
51
+ ここまで。
30
52
  「#files_ul」にHTMLをDOM_HTML設定。
53
+ 削除ボタンイベント設定。
31
54
  ここまで。
32
55
  # ---
33
56
  AJAX失敗した時には(err)
@@ -37,13 +60,66 @@ Pを表示。
37
60
  「#files_ul」にSをDOM_HTML設定。
38
61
  ここまで
39
62
  ここまで。
63
+
64
+ ●削除ボタンイベント設定
65
+   「.del_btn」のDOM要素全取得して反復
66
+     対象の「onclick」に「ファイル削除処理」をDOMイベント設定。
67
+   ここまで。
68
+ ここまで。
69
+
70
+ ●(Eの)ファイル削除処理とは
71
+   「削除しても良いですか?」と二択。
72
+   もし、それがいいえならば戻る。
73
+   FF=E["target"]["dataset"]["file"]
74
+   エラー監視
75
+     RES=「/deletefile?appkey={APPKEY}&file={FF}」からAJAX_JSON取得。
76
+   エラーならば
77
+     「エラー」と言う。
78
+   ここまで。
79
+   もし、RES="ok"ならば、
80
+     「削除しました」と言う。
81
+   違えば
82
+     「失敗しました」と言う。
83
+   ここまで。
84
+   「/html/files.html?appkey={APPKEY}」にブラウザ移動。
85
+ ここまで。
86
+
40
87
  #-----------
41
88
  </script>
42
89
  </head>
43
90
  <body>
44
- <h1>なでしこ3(Node版) - ファイル一覧</h1>
91
+ <div class="navbar bg-base-100">
92
+
93
+ <div class="dropdown">
94
+ <label tabindex="0" class="btn btn-ghost btn-circle">
95
+ <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h7" /></svg>
96
+ </label>
97
+ <ul tabindex="0" class="menu menu-compact dropdown-content mt-3 p-2 shadow bg-base-100 rounded-box w-52">
98
+ <li><label for="my-modal-desc" class="modal-button">このエディタについて</label></li>
99
+ </ul>
100
+ </div>
101
+
102
+ <div class="flex-1">
103
+ <a class="btn btn-ghost normal-case text-xl">Node版 なでしこ3 エディタ</a>
104
+ </div>
105
+ </div>
45
106
  <div id="filesbox">
46
- <ul id="files_ul"><li>現在読み込み中です。少々お待ちください。</li></ul>
107
+ <div>
108
+ <a class="btn btn-info" id="new_btn">→新規作成</a>
109
+ </div>
110
+ <ul id="files_ul"></ul>
47
111
  </div>
48
112
  </body>
113
+
114
+ <!-- エディタの説明モーダルダイアログ -->
115
+ <input type="checkbox" id="my-modal-desc" class="modal-toggle">
116
+ <div class="modal">
117
+ <div class="modal-box relative">
118
+ <label for="my-modal-desc" class="btn btn-sm btn-circle absolute right-2 top-2">✕</label>
119
+ <h3 class="text-lg font-bold">Node版 なでしこ3エディタとは</h3>
120
+ <p class="py-4">なでしこ3のNode.js(PC版)ランタイムを実行するためのエディタです。</p>
121
+ <p class="py-4">もし、なでしこ3のWeb版を実行するには、「npm start」を実行してください。</p>
122
+ </div>
123
+ </div>
124
+
49
125
  </html>
@@ -1,17 +1,20 @@
1
1
  h1 {
2
- background-color: blue;
3
- color: white;
4
2
  padding: 4px;
5
3
  margin: 0;
6
4
  font-size: 1em;
7
5
  }
6
+ .btn {
7
+ text-transform: none;
8
+ }
8
9
 
9
10
  .editbox {
10
11
  padding: 4px;
11
12
  margin: 0px;
12
13
  background-color: #f0f0f0;
14
+ text-align: center;
13
15
  }
14
16
  .namebox {
17
+ text-align: left;
15
18
  color: gray;
16
19
  padding: 4px;
17
20
  margin: 4px;
@@ -24,17 +27,13 @@ h1 {
24
27
  padding: 4px;
25
28
  font-size: 1em;
26
29
  }
27
- .cmd_btn > button {
28
- margin: 4px;
29
- padding: 8px;
30
- font-size: 1.2em;
31
- }
32
30
  #result {
33
31
  background-color: white;
34
32
  border: 1px solid silver;
35
33
  margin: 4px;
36
34
  padding: 8px;
37
35
  font-size: 1em;
36
+ text-align: left;
38
37
  }
39
38
  #filesbox {
40
39
  border: 1px solid silver;
@@ -1,4 +1,4 @@
1
- !「../../src/plugin_express.js」を取り込む。
1
+ !「../../src/plugin_express.mjs」を取り込む。
2
2
  # ---------------------------------
3
3
  # なでしこ3のユーザーフォルダ
4
4
  # ---------------------------------
@@ -28,7 +28,7 @@ WEBサーバ起動失敗した時には
28
28
    PORT = PORT + 1
29
29
    もし、PORT> 3050ならば
30
30
      「WEBサーバが起動できませんでした。」と表示。
31
-   戻る。
31
+     戻る。
32
32
    ここまで
33
33
    「- PORT変更={PORT}」と表示。
34
34
    PORTでWEBサーバ起動
@@ -64,11 +64,41 @@ WEBサーバ起動失敗した時には
64
64
  もし、GETデータ["appkey"]≠APPKEYならば
65
65
  「["ERROR:APPKEYをセットしてください。"]」をWEBサーバ出力。
66
66
  違えば
67
- S=「{USER_DIR}/*.nako3」のファイル列挙
67
+ S=「{USER_DIR}/*.*」のファイル列挙
68
68
  SをJSONエンコードしてWEBサーバ出力。
69
69
  ここまで。
70
70
  ここまで
71
71
 
72
+ # ---------------------------------
73
+ 「/get_new_filename」へWEBサーバGETした時には
74
+ もし、GETデータ["appkey"]≠APPKEYならば
75
+ 「["ERROR:APPKEYをセットしてください。"]」をWEBサーバ出力。
76
+ 戻る。
77
+ ここまで。
78
+ Iを1から9999まで繰り返す
79
+ N=「無題{I}.nako3」
80
+ F=「{USER_DIR}/{N}」
81
+ もし(Fが存在する)ならば,続ける。
82
+ NをJSONエンコードしてWEBサーバ出力。
83
+ 戻る。
84
+ ここまで。
85
+ # 10000以上は無視
86
+ 「ファイル数が多すぎ.nako3」をJSONエンコードしてWEBサーバ出力。
87
+ ここまで
88
+
89
+ # ---------------------------------
90
+ 「/deletefile」へWEBサーバGETした時には
91
+ もし、GETデータ["appkey"]≠APPKEYならば
92
+ 「"ERROR:APPKEYをセットしてください。"」をWEBサーバ出力。
93
+ 違えば
94
+ N=GETデータ["file"]
95
+ F=「{USER_DIR}/{N}」
96
+ 「削除={F}」を表示。
97
+ Fをファイル削除。
98
+ 「ok」をJSONエンコードしてWEBサーバ出力。
99
+ ここまで。
100
+ ここまで
101
+
72
102
  # ---------------------------------
73
103
  「/load」へWEBサーバGETした時には
74
104
  GETデータを表示。
@@ -128,13 +158,22 @@ WEBサーバ起動失敗した時には
128
158
  F_OS=OS取得。
129
159
  もし、F_OS="win32"ならば
130
160
    NODE=母艦パスを「../../nodejs/node.exe」で相対パス展開。
131
-   CNAKO3=母艦パスを「../../src/cnako3.js」で相対パス展開。
132
-   RES=「"{NODE}" "{CNAKO3}" "{FPATH}"」を起動待機。
161
+   CNAKO3=母艦パスを「../../src/cnako3.mjs」で相対パス展開。
162
+   BAT=「{USER_DIR}\__editor_run.bat」
163
+   BATへ「echo off{CR}{LF}chcp 65001{CR}{LF}echo -----{CR}{LF}cd "{USER_DIR}"{CR}{LF}"{NODE}" "{CNAKO3}" "{FPATH}"{CR}{LF}」を保存。
164
+   RES=「cmd.exe /c "{BAT}"」を起動待機。
133
165
  違えば
134
166
    CNAKO3=母艦パスを「../../bin/cnako3」で相対パス展開。
135
-   RES=「cnako3 "{FPATH}"」を起動待機。
167
+   SH=「{USER_DIR}/__editor_run.sh」
168
+ SHへ「#!/bin/bash{LF}echo "-----"{LF}cd "{USER_DIR}"{LF}"{CNAKO3}" "{FPATH}"{LF}」を保存。
169
+   
170
+   RES=「bash "{SH}"」を起動待機。
136
171
  ここまで。
137
172
  「---」と表示。
173
+ I=RESで「-----」が何文字目
174
+ もし、I>0ならば
175
+ RES=(MID(RES,I+5,(RESの文字数))をトリム)
176
+ ここまで
138
177
  RESをWEBサーバ出力。
139
178
  エラーならば
140
179
  「[ERROR] {エラーメッセージ}」をWEBサーバ出力。
@@ -1,7 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const spawn = require('child_process').spawn
4
- const path = require('path')
3
+ import { spawn } from 'child_process'
4
+ import path from 'path'
5
+
6
+ // __dirname のために
7
+ import url from 'url'
8
+ const __filename = url.fileURLToPath(import.meta.url);
9
+ const __dirname = path.dirname(__filename);
10
+
5
11
  const nakoHome = path.resolve(path.join(__dirname, '../../'))
6
12
  const cnako3 = path.resolve(path.join(nakoHome, 'src/cnako3.js'))
7
13
  const nako3edit = path.resolve(path.join(__dirname, 'index.nako3'))
package/src/index.js DELETED
@@ -1,5 +0,0 @@
1
- module.exports = {
2
- // Node.jsのモジュールモードでなでしこを利用する場合
3
- compiler: require('./nako3.js'),
4
- PluginNode: require('./plugin_node.js')
5
- }