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.
- package/README.md +1 -1
- package/bin/cnako3 +1 -1
- package/bin/cnako3.bat +1 -1
- package/demo/browsers.html +9 -10
- package/demo/flow.html +1 -0
- package/demo/runscript3.html +35 -0
- package/demo/turtle3.html +18 -17
- package/demo/turtle3d.html +1 -1
- package/demo/turtle3d2.html +1 -1
- package/doc/browsers.md +9 -10
- package/package.json +58 -57
- package/release/_hash.txt +57 -52
- package/release/_script-tags.txt +14 -13
- 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/editor.js +1 -1
- package/release/editor.js.LICENSE.txt +9 -12
- package/release/nako_gen_async.js +1 -1
- package/release/nako_gen_async.js.LICENSE.txt +10 -666
- package/release/plugin_caniuse.js +1 -1
- package/release/plugin_caniuse.js.LICENSE.txt +9 -425
- package/release/plugin_csv.js +1 -1
- package/release/plugin_csv.js.LICENSE.txt +3 -419
- package/release/plugin_datetime.js +1 -1
- package/release/plugin_datetime.js.LICENSE.txt +6 -530
- package/release/plugin_kansuji.js +1 -1
- package/release/plugin_kansuji.js.LICENSE.txt +3 -559
- package/release/plugin_markup.js +1 -1
- package/release/plugin_markup.js.LICENSE.txt +4 -420
- package/release/plugin_turtle.js +1 -1
- package/release/plugin_turtle.js.LICENSE.txt +12 -500
- package/release/plugin_webworker.js +1 -1
- package/release/plugin_webworker.js.LICENSE.txt +3 -563
- package/release/plugin_weykturtle3d.js +1 -0
- package/release/plugin_weykturtle3d.js.LICENSE.txt +3 -0
- package/release/stats.json +1 -1
- package/release/version.js +1 -1
- package/release/version.js.LICENSE.txt +9 -12
- package/release/wnako3.js +1 -1
- package/release/wnako3.js.LICENSE.txt +1 -1
- package/release/wnako3webworker.js +1 -1
- package/release/wnako3webworker.js.LICENSE.txt +1 -1117
- package/src/browsers.mjs +1 -0
- package/src/browsers.txt +15 -15
- package/src/browsers_agents.mjs +1 -0
- package/src/cnako3.mjs +13 -0
- package/src/{cnako3.js → cnako3mod.mjs} +119 -101
- package/src/{commander_ja.js → commander_ja.mjs} +16 -11
- package/src/{enako3.js → enako3.mjs} +0 -0
- package/src/{era.json → era.mjs} +1 -1
- package/src/image_turtle-elephant.mjs +5 -0
- package/src/image_turtle-panda.mjs +5 -0
- package/src/image_turtle64.mjs +5 -0
- package/src/index.mjs +9 -0
- package/src/{nako3.js → nako3.mjs} +69 -57
- package/src/{nako3_assert.js → nako3_assert.mjs} +7 -6
- package/src/{nako3server.js → nako3server.mjs} +12 -5
- package/src/{nako_colors.js → nako_colors.mjs} +1 -1
- package/src/{nako_errors.js → nako_errors.mjs} +10 -20
- package/src/{nako_from_dncl.js → nako_from_dncl.mjs} +11 -8
- package/src/{nako_gen.js → nako_gen.mjs} +93 -87
- package/src/{nako_gen_async.js → nako_gen_async.mjs} +5 -8
- package/src/{nako_global.js → nako_global.mjs} +4 -5
- package/src/{nako_indent.js → nako_indent.mjs} +29 -25
- package/src/{nako_josi_list.js → nako_josi_list.mjs} +16 -14
- package/src/nako_lex_rules.mjs +244 -0
- package/src/{nako_lexer.js → nako_lexer.mjs} +7 -10
- package/src/{nako_logger.js → nako_logger.mjs} +3 -4
- package/src/{nako_parser3.js → nako_parser3.mjs} +5 -5
- package/src/{nako_parser_base.js → nako_parser_base.mjs} +1 -9
- package/src/{nako_parser_const.js → nako_parser_const.mjs} +2 -6
- package/src/{nako_prepare.js → nako_prepare.mjs} +46 -8
- package/src/{nako_reserved_words.js → nako_reserved_words.mjs} +1 -1
- package/src/{nako_source_mapping.js → nako_source_mapping.mjs} +4 -11
- package/src/{nako_test.js → nako_test.mjs} +0 -0
- package/src/nako_version.mjs +7 -0
- package/src/{plugin_browser.js → plugin_browser.mjs} +30 -30
- package/src/{plugin_browser_ajax.js → plugin_browser_ajax.mjs} +7 -7
- package/src/{plugin_browser_audio.js → plugin_browser_audio.mjs} +1 -1
- package/src/{plugin_browser_canvas.js → plugin_browser_canvas.mjs} +1 -1
- package/src/{plugin_browser_chart.js → plugin_browser_chart.mjs} +1 -1
- package/src/{plugin_browser_color.js → plugin_browser_color.mjs} +1 -1
- package/src/{plugin_browser_crypto.js → plugin_browser_crypto.mjs} +1 -1
- package/src/{plugin_browser_dialog.js → plugin_browser_dialog.mjs} +1 -1
- package/src/{plugin_browser_dom_basic.js → plugin_browser_dom_basic.mjs} +1 -1
- package/src/{plugin_browser_dom_event.js → plugin_browser_dom_event.mjs} +1 -1
- package/src/{plugin_browser_dom_parts.js → plugin_browser_dom_parts.mjs} +1 -1
- package/src/{plugin_browser_geolocation.js → plugin_browser_geolocation.mjs} +1 -1
- package/src/{plugin_browser_hotkey.js → plugin_browser_hotkey.mjs} +2 -2
- package/src/{plugin_browser_html.js → plugin_browser_html.mjs} +1 -1
- package/src/{plugin_browser_in_worker.js → plugin_browser_in_worker.mjs} +4 -4
- package/src/{plugin_browser_location.js → plugin_browser_location.mjs} +1 -1
- package/src/{plugin_browser_speech.js → plugin_browser_speech.mjs} +1 -1
- package/src/{plugin_browser_storage.js → plugin_browser_storage.mjs} +1 -1
- package/src/{plugin_browser_system.js → plugin_browser_system.mjs} +1 -1
- package/src/{plugin_browser_websocket.js → plugin_browser_websocket.mjs} +1 -1
- package/src/{plugin_caniuse.js → plugin_caniuse.mjs} +8 -3
- package/src/{plugin_csv.js → plugin_csv.mjs} +4 -5
- package/src/{plugin_datetime.js → plugin_datetime.mjs} +19 -26
- package/src/{plugin_express.js → plugin_express.mjs} +4 -3
- package/src/{plugin_kansuji.js → plugin_kansuji.mjs} +1 -1
- package/src/{plugin_keigo.js → plugin_keigo.mjs} +1 -1
- package/src/{plugin_markup.js → plugin_markup.mjs} +6 -6
- package/src/{plugin_math.js → plugin_math.mjs} +1 -4
- package/src/{plugin_node.js → plugin_node.mjs} +25 -57
- package/src/{plugin_promise.js → plugin_promise.mjs} +1 -3
- package/src/{plugin_system.js → plugin_system.mjs} +32 -15
- package/src/{plugin_test.js → plugin_test.mjs} +1 -3
- package/src/{plugin_turtle.js → plugin_turtle.mjs} +5 -4
- package/src/{plugin_webworker.js → plugin_webworker.mjs} +3 -3
- package/src/{plugin_weykturtle3d.js → plugin_weykturtle3d.mjs} +1 -3
- package/src/{plugin_worker.js → plugin_worker.mjs} +4 -1
- package/src/{wnako3.js → wnako3.mjs} +24 -14
- package/src/{wnako3_editor.js → wnako3_editor.mjs} +28 -22
- package/src/{wnako3webworker.js → wnako3webworker.mjs} +0 -0
- package/test/async/{async_basic_test.js → async_basic_test.mjs} +3 -4
- package/test/browser/karma.config.js +9 -0
- package/test/browser/test/plugin_browser_test.js +2 -2
- package/test/browser/test/plugin_turtle_test.js +2 -2
- package/test/browser/test/plugin_webworker_test.js +3 -3
- package/test/browser/test/require_test.js +2 -2
- package/test/common/{array_test.js → array_test.mjs} +3 -3
- package/test/common/{basic_test.js → basic_test.mjs} +3 -13
- package/test/common/{calc_test.js → calc_test.mjs} +2 -2
- package/test/common/{debug_test.js → debug_test.mjs} +2 -2
- package/test/common/{dncl_test.js → dncl_test.mjs} +3 -3
- package/test/common/{error_test.js → error_test.mjs} +2 -2
- package/test/common/{flow_test.js → flow_test.mjs} +2 -2
- package/test/common/{func_call.js → func_call.mjs} +3 -3
- package/test/common/{func_test.js → func_test.mjs} +2 -2
- package/test/common/{indent_test.js → indent_test.mjs} +3 -2
- package/test/common/{lex_test.js → lex_test.mjs} +2 -2
- package/test/common/{literal_test.js → literal_test.mjs} +3 -2
- package/test/common/{nako_logger_test.js → nako_logger_test.mjs} +3 -3
- package/test/common/{plugin_browser_test.js → plugin_browser_test.mjs} +4 -4
- package/test/common/{plugin_browser_ut_audio_test.js → plugin_browser_ut_audio_test.mjs} +4 -4
- package/test/common/{plugin_browser_ut_color_test.js → plugin_browser_ut_color_test.mjs} +2 -2
- package/test/common/{plugin_browser_ut_dialog_test.js → plugin_browser_ut_dialog_test.mjs} +3 -3
- package/test/common/{plugin_browser_ut_html_test.js → plugin_browser_ut_html_test.mjs} +2 -2
- package/test/common/{plugin_browser_ut_system_test.js → plugin_browser_ut_system_test.mjs} +2 -2
- package/test/common/{plugin_csv_test.js → plugin_csv_test.mjs} +3 -3
- package/test/common/{plugin_datetime_test.js → plugin_datetime_test.mjs} +4 -4
- package/test/common/{plugin_kansuji_test.js → plugin_kansuji_test.mjs} +3 -3
- package/test/common/{plugin_markup_test.js → plugin_markup_test.mjs} +3 -3
- package/test/common/{plugin_promise_test.js → plugin_promise_test.mjs} +2 -2
- package/test/common/{plugin_system_test.js → plugin_system_test.mjs} +2 -2
- package/test/common/{prepare_test.js → prepare_test.mjs} +2 -2
- package/test/common/{re_test.js → re_test.mjs} +2 -2
- package/test/common/{variable_scope_test.js → variable_scope_test.mjs} +2 -2
- package/test/karma.config.js +3 -3
- package/test/node/{async_test.js → async_test.mjs} +4 -2
- package/test/node/{commander_ja_test.js → commander_ja_test.mjs} +17 -12
- package/test/node/{error_message_test.js → error_message_test.mjs} +13 -10
- package/test/node/node_test.mjs +57 -0
- package/test/node/{plugin_browser_ut_ajax_test.js → plugin_browser_ut_ajax_test.mjs} +7 -5
- package/test/node/{plugin_browser_ut_location_test.js → plugin_browser_ut_location_test.mjs} +3 -3
- package/test/node/{plugin_markup_test.js → plugin_markup_test.mjs} +6 -7
- package/test/node/{plugin_math_test.js → plugin_math_test.mjs} +5 -5
- package/test/node/{plugin_node_test.js → plugin_node_test.mjs} +11 -7
- package/test/node/{plugin_test.js → plugin_test.mjs} +11 -5
- package/test/node/{require_nako3_test.js → require_nako3_test.mjs} +19 -12
- package/test/node/{side_effects_test.js → side_effects_test.mjs} +24 -13
- package/test/node/{wnako3_editor_test.js → wnako3_editor_test.mjs} +16 -9
- package/tools/nako3edit/html/daisyui/LICENSE +22 -0
- package/tools/nako3edit/html/daisyui/full.css +1 -0
- package/tools/nako3edit/html/daisyui/tailwind.min.css +1 -0
- package/tools/nako3edit/html/daisyui/version_2.14.1 +1 -0
- package/tools/nako3edit/html/edit.html +104 -19
- package/tools/nako3edit/html/files.html +84 -8
- package/tools/nako3edit/html/nako3edit.css +6 -7
- package/tools/nako3edit/index.nako3 +45 -6
- package/tools/nako3edit/{run.js → run.mjs} +8 -2
- package/src/index.js +0 -5
- package/src/nako_lex_rules.js +0 -260
- package/src/nako_version.js +0 -8
- package/test/node/node_test.js +0 -43
|
@@ -0,0 +1 @@
|
|
|
1
|
+
memo
|
|
@@ -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
|
|
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=
|
|
28
|
+
FNAME=(「/get_new_filename?appkey={APPKEY}」からAJAX_JSON取得)
|
|
26
29
|
FILE2 = "new"
|
|
27
30
|
違えば
|
|
28
31
|
FILE2 = FNAMEをURLエンコード。
|
|
29
32
|
ここまで。
|
|
30
|
-
|
|
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
|
-
<
|
|
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="
|
|
73
|
-
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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> 」
|
|
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> 」
|
|
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
|
-
<
|
|
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
|
-
<
|
|
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.
|
|
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}
|
|
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.
|
|
132
|
-
|
|
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
|
-
|
|
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
|
-
|
|
4
|
-
|
|
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'))
|