nadesiko3 3.2.27
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/LICENSE +21 -0
- package/README.md +107 -0
- package/bin/cnako3 +10 -0
- package/bin/cnako3.bat +11 -0
- package/bin/nako3server.bat +6 -0
- package/demo/ace_editor.html +90 -0
- package/demo/ace_editor_tabs.html +162 -0
- package/demo/basic.html +71 -0
- package/demo/browsers.html +128 -0
- package/demo/css/basic.css +3 -0
- package/demo/css/common.css +157 -0
- package/demo/css/editor.css +8 -0
- package/demo/css/flow.css +3 -0
- package/demo/css/index.css +3 -0
- package/demo/extlib/ace@1.4.12/ace.js +17 -0
- package/demo/extlib/ace@1.4.12/ext-code_lens.min.js +1 -0
- package/demo/extlib/ace@1.4.12/ext-language_tools.min.js +1 -0
- package/demo/extlib/ace@1.4.12/ext-options.min.js +1 -0
- package/demo/extlib/ace@1.4.12/ext-settings_menu.js +8 -0
- package/demo/extlib/ace@1.4.12/keybinding-vscode.js +8 -0
- package/demo/extlib/ace@1.4.12/theme-monokai.js +8 -0
- package/demo/extlib/ace@1.4.12/theme-xcode.js +8 -0
- package/demo/extlib/chart.js@3.2.1/chart.min.js +13 -0
- package/demo/extlib/pure-min.css +11 -0
- package/demo/flow.html +97 -0
- package/demo/graph.html +53 -0
- package/demo/image/nako.png +0 -0
- package/demo/image/nakopad-icon256.png +0 -0
- package/demo/image/turtle.fla +0 -0
- package/demo/image/turtle.png +0 -0
- package/demo/index.html +134 -0
- package/demo/js/common.js +17 -0
- package/demo/js/turtle3d_test.js +44 -0
- package/demo/js/turtle_test.js +44 -0
- package/demo/runscript.html +47 -0
- package/demo/runscript2.html +33 -0
- package/demo/turtle.html +58 -0
- package/demo/turtle2.html +141 -0
- package/demo/turtle3.html +278 -0
- package/demo/turtle3d.html +58 -0
- package/demo/turtle3d2.html +107 -0
- package/demo/version.html +24 -0
- package/doc/SETUP.md +172 -0
- package/doc/about.md +34 -0
- package/doc/browsers.md +60 -0
- package/doc/docgen.md +21 -0
- package/doc/editor.md +44 -0
- package/doc/files.md +37 -0
- package/doc/plugins.md +195 -0
- package/doc/release.md +78 -0
- package/doc/win32.md +57 -0
- package/package.json +196 -0
- package/release/_hash.txt +65 -0
- package/release/_script-tags.txt +13 -0
- package/release/command.json +1 -0
- package/release/command.json.js +1 -0
- package/release/command_cnako3.json +1 -0
- package/release/command_list.json +1 -0
- package/release/editor.js +2 -0
- package/release/editor.js.LICENSE.txt +32 -0
- package/release/josi.json +48 -0
- package/release/nako_gen_async.js +1 -0
- package/release/nako_gen_async.js.LICENSE.txt +595 -0
- package/release/plugin_caniuse.js +1 -0
- package/release/plugin_caniuse.js.LICENSE.txt +411 -0
- package/release/plugin_csv.js +1 -0
- package/release/plugin_csv.js.LICENSE.txt +367 -0
- package/release/plugin_datetime.js +1 -0
- package/release/plugin_datetime.js.LICENSE.txt +471 -0
- package/release/plugin_kansuji.js +1 -0
- package/release/plugin_kansuji.js.LICENSE.txt +491 -0
- package/release/plugin_markup.js +1 -0
- package/release/plugin_markup.js.LICENSE.txt +363 -0
- package/release/plugin_turtle.js +1 -0
- package/release/plugin_turtle.js.LICENSE.txt +435 -0
- package/release/plugin_webworker.js +1 -0
- package/release/plugin_webworker.js.LICENSE.txt +491 -0
- package/release/version.js +2 -0
- package/release/version.js.LICENSE.txt +32 -0
- package/release/wnako3.js +2 -0
- package/release/wnako3.js.LICENSE.txt +1 -0
- package/release/wnako3webworker.js +1 -0
- package/release/wnako3webworker.js.LICENSE.txt +847 -0
- package/release/yoyakugo.json +30 -0
- package/src/browsers.md +60 -0
- package/src/cnako3.js +466 -0
- package/src/commander_ja.js +154 -0
- package/src/enako3.js +69 -0
- package/src/era.json +22 -0
- package/src/index.js +5 -0
- package/src/nako3.js +836 -0
- package/src/nako3_assert.js +37 -0
- package/src/nako3editorfix.sfd +106 -0
- package/src/nako3editorfix.woff +0 -0
- package/src/nako3server.js +51 -0
- package/src/nako_colors.js +86 -0
- package/src/nako_errors.js +176 -0
- package/src/nako_gen.js +1459 -0
- package/src/nako_gen_async.js +1622 -0
- package/src/nako_global.js +113 -0
- package/src/nako_indent.js +480 -0
- package/src/nako_josi_list.js +46 -0
- package/src/nako_lex_rules.js +259 -0
- package/src/nako_lexer.js +576 -0
- package/src/nako_logger.js +138 -0
- package/src/nako_parser3.js +1768 -0
- package/src/nako_parser_base.js +265 -0
- package/src/nako_parser_const.js +37 -0
- package/src/nako_prepare.js +293 -0
- package/src/nako_reserved_words.js +35 -0
- package/src/nako_source_mapping.js +251 -0
- package/src/nako_test.js +37 -0
- package/src/nako_version.js +8 -0
- package/src/plugin_browser.js +191 -0
- package/src/plugin_browser_ajax.js +352 -0
- package/src/plugin_browser_audio.js +109 -0
- package/src/plugin_browser_canvas.js +462 -0
- package/src/plugin_browser_chart.js +296 -0
- package/src/plugin_browser_color.js +49 -0
- package/src/plugin_browser_crypto.js +26 -0
- package/src/plugin_browser_dialog.js +53 -0
- package/src/plugin_browser_dom_basic.js +322 -0
- package/src/plugin_browser_dom_event.js +193 -0
- package/src/plugin_browser_dom_parts.js +163 -0
- package/src/plugin_browser_geolocation.js +51 -0
- package/src/plugin_browser_hotkey.js +25 -0
- package/src/plugin_browser_html.js +59 -0
- package/src/plugin_browser_in_worker.js +44 -0
- package/src/plugin_browser_location.js +21 -0
- package/src/plugin_browser_speech.js +111 -0
- package/src/plugin_browser_storage.js +121 -0
- package/src/plugin_browser_system.js +12 -0
- package/src/plugin_browser_websocket.js +73 -0
- package/src/plugin_caniuse.js +24 -0
- package/src/plugin_csv.js +57 -0
- package/src/plugin_datetime.js +414 -0
- package/src/plugin_express.js +212 -0
- package/src/plugin_kansuji.js +224 -0
- package/src/plugin_keigo.js +55 -0
- package/src/plugin_markup.js +32 -0
- package/src/plugin_math.js +319 -0
- package/src/plugin_node.js +1018 -0
- package/src/plugin_promise.js +94 -0
- package/src/plugin_system.js +2109 -0
- package/src/plugin_test.js +38 -0
- package/src/plugin_turtle.js +646 -0
- package/src/plugin_webworker.js +334 -0
- package/src/plugin_weykturtle3d.js +1216 -0
- package/src/plugin_worker.js +92 -0
- package/src/repl.nako3 +63 -0
- package/src/turtle-elephant.png +0 -0
- package/src/turtle-panda.png +0 -0
- package/src/turtle64.png +0 -0
- package/src/wnako3.js +162 -0
- package/src/wnako3_editor.css +215 -0
- package/src/wnako3_editor.js +1645 -0
- package/src/wnako3_editor_marker_red.png +0 -0
- package/src/wnako3_editor_marker_red.xcf +0 -0
- package/src/wnako3_editor_marker_yellow.png +0 -0
- package/src/wnako3_editor_marker_yellow.xcf +0 -0
- package/src/wnako3webworker.js +70 -0
- package/test/ace_editor/karma.config.js +94 -0
- package/test/ace_editor/test/.babelrc.json +3 -0
- package/test/ace_editor/test/ace_editor_test.js +178 -0
- package/test/ace_editor/test/html/custom_context.html +140 -0
- package/test/async/async_basic_test.js +124 -0
- package/test/browser/karma.config.js +212 -0
- package/test/browser/test/.babelrc.json +3 -0
- package/test/browser/test/compare_util.js +50 -0
- package/test/browser/test/html/canvas_basic.html +1 -0
- package/test/browser/test/html/div_basic.html +2 -0
- package/test/browser/test/html/event_dom_form.html +4 -0
- package/test/browser/test/html/event_dom_scrolldiv.html +5 -0
- package/test/browser/test/image/canvas_test1.png +0 -0
- package/test/browser/test/image/canvas_test2.png +0 -0
- package/test/browser/test/image/canvas_test3.png +0 -0
- package/test/browser/test/image/canvas_test4.png +0 -0
- package/test/browser/test/image/canvas_test7.png +0 -0
- package/test/browser/test/image/canvas_test8.png +0 -0
- package/test/browser/test/image/canvas_test_blank.png +0 -0
- package/test/browser/test/image/elephant_kana.png +0 -0
- package/test/browser/test/image/panda_kana.png +0 -0
- package/test/browser/test/image/turtle_kana.png +0 -0
- package/test/browser/test/import_plugin_checker.js +24 -0
- package/test/browser/test/plugin_browser_test.js +52 -0
- package/test/browser/test/plugin_browser_test_ajax.js +123 -0
- package/test/browser/test/plugin_browser_test_color.js +18 -0
- package/test/browser/test/plugin_browser_test_dialog.js +72 -0
- package/test/browser/test/plugin_browser_test_dom_event.js +598 -0
- package/test/browser/test/plugin_browser_test_dom_parts.js +125 -0
- package/test/browser/test/plugin_browser_test_system.js +9 -0
- package/test/browser/test/plugin_turtle_test.js +817 -0
- package/test/browser/test/plugin_webworker_test.js +87 -0
- package/test/browser/test/require_test.js +71 -0
- package/test/bundled/karma.config.base.js +117 -0
- package/test/bundled/karma.config.js +86 -0
- package/test/bundled/test/.babelrc.json +3 -0
- package/test/bundled/test/bundled_test.js +69 -0
- package/test/bundled/test/html/custom_context.html +65 -0
- package/test/bundled/test/html/custom_debug.html +66 -0
- package/test/bundled/test4b.cmd +52 -0
- package/test/bundled/test_base/.babelrc.json +3 -0
- package/test/bundled/test_base/_checktool_test.js +25 -0
- package/test/bundled/test_base/basic_ajax_test.js +56 -0
- package/test/bundled/test_base/basic_async_test.js +18 -0
- package/test/bundled/test_base/basic_test.js +153 -0
- package/test/bundled/test_base/calc_test.js +132 -0
- package/test/bundled/test_base/css/browsers_box.css +114 -0
- package/test/bundled/test_base/html/custom_context.html +69 -0
- package/test/bundled/test_base/html/custom_debug.html +71 -0
- package/test/bundled/test_base/js/browsers_box.js +72 -0
- package/test/bundled/test_base/plugin_csv_test.js +37 -0
- package/test/bundled/test_base/plugin_datetime_test.js +115 -0
- package/test/bundled/test_base/plugin_kansuji_test.js +49 -0
- package/test/bundled/test_base/plugin_system_test.js +410 -0
- package/test/bundled/test_base/plugin_webworker_test.js +53 -0
- package/test/bundled/test_base/resources/ok.txt +1 -0
- package/test/bundled/test_base/test_utils.js +191 -0
- package/test/common/array_test.js +40 -0
- package/test/common/basic_test.js +317 -0
- package/test/common/calc_test.js +139 -0
- package/test/common/debug_test.js +16 -0
- package/test/common/error_test.js +16 -0
- package/test/common/flow_test.js +360 -0
- package/test/common/func_call.js +136 -0
- package/test/common/func_test.js +149 -0
- package/test/common/indent_test.js +362 -0
- package/test/common/lex_test.js +146 -0
- package/test/common/literal_test.js +72 -0
- package/test/common/nako_logger_test.js +26 -0
- package/test/common/plugin_browser_test.js +24 -0
- package/test/common/plugin_browser_ut_audio_test.js +88 -0
- package/test/common/plugin_browser_ut_color_test.js +21 -0
- package/test/common/plugin_browser_ut_dialog_test.js +100 -0
- package/test/common/plugin_browser_ut_html_test.js +13 -0
- package/test/common/plugin_browser_ut_system_test.js +10 -0
- package/test/common/plugin_csv_test.js +39 -0
- package/test/common/plugin_datetime_test.js +120 -0
- package/test/common/plugin_kansuji_test.js +59 -0
- package/test/common/plugin_promise_test.js +18 -0
- package/test/common/plugin_system_test.js +451 -0
- package/test/common/prepare_test.js +93 -0
- package/test/common/re_test.js +20 -0
- package/test/common/variable_scope_test.js +105 -0
- package/test/jsconfig.json +19 -0
- package/test/karma.config.js +91 -0
- package/test/node/add_test.nako3 +1 -0
- package/test/node/async_test.js +80 -0
- package/test/node/commander_ja_test.js +82 -0
- package/test/node/error_message_test.js +244 -0
- package/test/node/kai_test.nako3 +6 -0
- package/test/node/node_test.js +43 -0
- package/test/node/plugin_broken.js.txt +3 -0
- package/test/node/plugin_browser_ut_ajax_test.js +355 -0
- package/test/node/plugin_browser_ut_location_test.js +32 -0
- package/test/node/plugin_markup_test.js +44 -0
- package/test/node/plugin_math_test.js +42 -0
- package/test/node/plugin_node_test.js +93 -0
- package/test/node/plugin_test.js +16 -0
- package/test/node/relative_import_test_1.nako3 +1 -0
- package/test/node/relative_import_test_2.nako3 +2 -0
- package/test/node/require_nako3_test.js +59 -0
- package/test/node/requiretest.nako3 +4 -0
- package/test/node/requiretest_indirect.nako3 +1 -0
- package/test/node/requiretest_name.nako3 +5 -0
- package/test/node/runtime_error.nako3 +2 -0
- package/test/node/side_effects_test.js +106 -0
- package/test/node/sjis.txt +5 -0
- package/test/node/syntax_error.nako3 +2 -0
- package/test/node/wnako3_editor_test.js +360 -0
- package/tools/README.md +7 -0
- package/tools/nako3edit/html/edit.html +83 -0
- package/tools/nako3edit/html/edit_plugin.js +6 -0
- package/tools/nako3edit/html/files.html +49 -0
- package/tools/nako3edit/html/nako3edit.css +66 -0
- package/tools/nako3edit/index.nako3 +145 -0
- package/tools/nako3edit/run.js +12 -0
- package/tools/nako3server/html/edit.html +104 -0
- package/tools/nako3server/html/edit_plugin.js +6 -0
- package/tools/nako3server/html/files.html +53 -0
- package/tools/nako3server/html/nako3edit.css +66 -0
- package/tools/nako3server/index.nako3 +129 -0
- package/tools/nako3server/run.js +12 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
h1 {
|
|
2
|
+
background-color: blue;
|
|
3
|
+
color: white;
|
|
4
|
+
padding: 4px;
|
|
5
|
+
margin: 0;
|
|
6
|
+
font-size: 1em;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.editbox {
|
|
10
|
+
padding: 4px;
|
|
11
|
+
margin: 0px;
|
|
12
|
+
background-color: #f0f0f0;
|
|
13
|
+
}
|
|
14
|
+
.namebox {
|
|
15
|
+
color: gray;
|
|
16
|
+
padding: 4px;
|
|
17
|
+
margin: 4px;
|
|
18
|
+
}
|
|
19
|
+
#name {
|
|
20
|
+
padding: 4px;
|
|
21
|
+
font-size: 1em;
|
|
22
|
+
}
|
|
23
|
+
#body {
|
|
24
|
+
padding: 4px;
|
|
25
|
+
font-size: 1em;
|
|
26
|
+
}
|
|
27
|
+
.cmd_btn > button {
|
|
28
|
+
margin: 4px;
|
|
29
|
+
padding: 8px;
|
|
30
|
+
font-size: 1.2em;
|
|
31
|
+
}
|
|
32
|
+
#result {
|
|
33
|
+
background-color: white;
|
|
34
|
+
border: 1px solid silver;
|
|
35
|
+
margin: 4px;
|
|
36
|
+
padding: 8px;
|
|
37
|
+
font-size: 1em;
|
|
38
|
+
}
|
|
39
|
+
#filesbox {
|
|
40
|
+
border: 1px solid silver;
|
|
41
|
+
padding: 8px;
|
|
42
|
+
margin: 4px;
|
|
43
|
+
}
|
|
44
|
+
#filesbox > ul {
|
|
45
|
+
margin: 0;
|
|
46
|
+
padding: 4px;
|
|
47
|
+
}
|
|
48
|
+
#filesbox > ul > li {
|
|
49
|
+
border-bottom: 1px solid silver;
|
|
50
|
+
padding: 8px;
|
|
51
|
+
list-style-type: none;
|
|
52
|
+
}
|
|
53
|
+
.newfile {
|
|
54
|
+
padding: 4px;
|
|
55
|
+
background-color: #ffe0ff;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.titlemenu {
|
|
59
|
+
font-size: 0.9em;
|
|
60
|
+
color: yellow;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.titlemenu a {
|
|
64
|
+
color: yellow;
|
|
65
|
+
text-decoration: none;
|
|
66
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
!「../../src/plugin_express.js」を取り込む。
|
|
2
|
+
# ---------------------------------
|
|
3
|
+
# なでしこ3のユーザーフォルダ
|
|
4
|
+
# ---------------------------------
|
|
5
|
+
HOME=ホームディレクトリ取得
|
|
6
|
+
USER_DIR=「{HOME}/nadesiko3_user」
|
|
7
|
+
もし、!(USER_DIRのフォルダ存在)ならば
|
|
8
|
+
USER_DIRにフォルダ作成
|
|
9
|
+
ここまで
|
|
10
|
+
|
|
11
|
+
# ---------------------------------
|
|
12
|
+
# WEBサーバ起動
|
|
13
|
+
# ---------------------------------
|
|
14
|
+
APPKEY = (65535の乱数)&「_」&(65535の乱数)&「_」&(65535の乱数)
|
|
15
|
+
PORT=3030
|
|
16
|
+
PORTでWEBサーバ起動した時には
|
|
17
|
+
URL=「http://localhost:{PORT}?appkey={APPKEY}」
|
|
18
|
+
「>>> --------------------------------------------------」を表示
|
|
19
|
+
「>>> サーバ起動に成功しました。」を表示
|
|
20
|
+
「>>> nako3edit にアクセスするには、以下のURLにアクセスします」を表示
|
|
21
|
+
「>>> [URL] {URL}」を表示。
|
|
22
|
+
「>>>」を表示
|
|
23
|
+
ルーティング設定。
|
|
24
|
+
URLをブラウザ起動。
|
|
25
|
+
ここまで
|
|
26
|
+
|
|
27
|
+
WEBサーバ起動失敗した時には
|
|
28
|
+
PORT = PORT + 1
|
|
29
|
+
もし、PORT> 3050ならば
|
|
30
|
+
「WEBサーバが起動できませんでした。」と表示。
|
|
31
|
+
戻る。
|
|
32
|
+
ここまで
|
|
33
|
+
「- PORT変更={PORT}」と表示。
|
|
34
|
+
PORTでWEBサーバ起動
|
|
35
|
+
ここまで。
|
|
36
|
+
|
|
37
|
+
●ルーティング設定とは
|
|
38
|
+
# ---------------------------------
|
|
39
|
+
# 静的ディレクトリの指定
|
|
40
|
+
# ---------------------------------
|
|
41
|
+
「/html」を「{母艦パス}/html」へWEBサーバ静的パス指定
|
|
42
|
+
母艦パスを「../../release」で相対パス展開してRELEASEに代入。
|
|
43
|
+
「/release」をRELEASEへWEBサーバ静的パス指定。
|
|
44
|
+
# ---------------------------------
|
|
45
|
+
# ルーティング
|
|
46
|
+
# ---------------------------------
|
|
47
|
+
「/」へWEBサーバGETした時には
|
|
48
|
+
「- GET」を表示。
|
|
49
|
+
もし、GETデータ["appkey"]=APPKEYならば
|
|
50
|
+
URL_FILE=「/html/files.html?appkey={APPKEY}」
|
|
51
|
+
URL_FILEへWEBサーバリダイレクト。
|
|
52
|
+
「ファイル表示ページへ移動 => {URL_FILE}」と表示。
|
|
53
|
+
違えば
|
|
54
|
+
「サーバから提供されたappkeyを正しくセットしてください。」をWEBサーバ出力。
|
|
55
|
+
ここまで。
|
|
56
|
+
ここまで
|
|
57
|
+
# ---------------------------------
|
|
58
|
+
「/test」へWEBサーバGETした時には
|
|
59
|
+
「test」をWEBサーバ出力。
|
|
60
|
+
ここまで
|
|
61
|
+
|
|
62
|
+
# ---------------------------------
|
|
63
|
+
「/files」へWEBサーバGETした時には
|
|
64
|
+
もし、GETデータ["appkey"]≠APPKEYならば
|
|
65
|
+
「["ERROR:APPKEYをセットしてください。"]」をWEBサーバ出力。
|
|
66
|
+
違えば
|
|
67
|
+
S=「{USER_DIR}/*.nako3」のファイル列挙
|
|
68
|
+
SをJSONエンコードしてWEBサーバ出力。
|
|
69
|
+
ここまで。
|
|
70
|
+
ここまで
|
|
71
|
+
|
|
72
|
+
# ---------------------------------
|
|
73
|
+
「/load」へWEBサーバGETした時には
|
|
74
|
+
GETデータを表示。
|
|
75
|
+
FILE=GETデータ["file"]
|
|
76
|
+
UKEY=GETデータ["appkey"]
|
|
77
|
+
もし、UKEY≠APPKEYならば
|
|
78
|
+
『### APPKEYが違います ###』とWEBサーバ出力。
|
|
79
|
+
ここまで
|
|
80
|
+
FILE=FILEの「..」を「」に置換して、「/」を「」に置換。
|
|
81
|
+
FPATH=「{USER_DIR}/{FILE}」
|
|
82
|
+
FPATHが存在
|
|
83
|
+
もし、そうならば
|
|
84
|
+
FPATHを開く。
|
|
85
|
+
それをWEBサーバ出力。
|
|
86
|
+
違えば
|
|
87
|
+
『# --- ここにプログラムを記述 ---』&改行&『「こんにちは」と表示。』をWEBサーバ出力。
|
|
88
|
+
ここまで。
|
|
89
|
+
ここまで。
|
|
90
|
+
|
|
91
|
+
# ---------------------------------
|
|
92
|
+
「/run」へWEBサーバPOSTした時には
|
|
93
|
+
はいでサーバ保存実行処理。
|
|
94
|
+
ここまで
|
|
95
|
+
|
|
96
|
+
# ---------------------------------
|
|
97
|
+
「/save」へWEBサーバPOSTした時には
|
|
98
|
+
いいえでサーバ保存実行処理。
|
|
99
|
+
ここまで
|
|
100
|
+
ここまで。
|
|
101
|
+
|
|
102
|
+
●サーバ保存実行処理(RUNで)
|
|
103
|
+
FILE=POSTデータ["file"]
|
|
104
|
+
BODY=POSTデータ["body"]
|
|
105
|
+
UKEY=POSTデータ["appkey"]
|
|
106
|
+
もし、UKEY≠APPKEYならば
|
|
107
|
+
「エラー:APPKEYが違います」をWEBサーバ出力。
|
|
108
|
+
戻る。
|
|
109
|
+
違えば
|
|
110
|
+
ここまで。
|
|
111
|
+
もし、(FILE=undefined)または(FILE=空)ならば
|
|
112
|
+
「エラー: ファイル名がありません」をWEBサーバ出力。
|
|
113
|
+
戻る。
|
|
114
|
+
ここまで
|
|
115
|
+
FPATH=「{USER_DIR}/{FILE}」
|
|
116
|
+
「(保存)FILE=」&FPATHを表示。
|
|
117
|
+
FPATHへBODYを保存。
|
|
118
|
+
FPATH=「{USER_DIR}/{FILE}」
|
|
119
|
+
エラー監視
|
|
120
|
+
FPATHへBODYを保存。
|
|
121
|
+
エラーならば
|
|
122
|
+
「NG」をWEBサーバ出力。
|
|
123
|
+
戻る。
|
|
124
|
+
ここまで。
|
|
125
|
+
もし、RUNがはいならば
|
|
126
|
+
エラー監視
|
|
127
|
+
「RUN {FPATH}」と表示。
|
|
128
|
+
F_OS=OS取得。
|
|
129
|
+
もし、F_OS="win32"ならば
|
|
130
|
+
NODE=母艦パスを「../../nodejs/node.exe」で相対パス展開。
|
|
131
|
+
CNAKO3=母艦パスを「../../src/cnako3.js」で相対パス展開。
|
|
132
|
+
RES=「"{NODE}" "{CNAKO3}" "{FPATH}"」を起動待機。
|
|
133
|
+
違えば
|
|
134
|
+
CNAKO3=母艦パスを「../../bin/cnako3」で相対パス展開。
|
|
135
|
+
RES=「cnako3 "{FPATH}"」を起動待機。
|
|
136
|
+
ここまで。
|
|
137
|
+
「---」と表示。
|
|
138
|
+
RESをWEBサーバ出力。
|
|
139
|
+
エラーならば
|
|
140
|
+
「[ERROR] {エラーメッセージ}」をWEBサーバ出力。
|
|
141
|
+
ここまで
|
|
142
|
+
違えば
|
|
143
|
+
「OK」をWEBサーバ出力。
|
|
144
|
+
ここまで。
|
|
145
|
+
ここまで。
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const spawn = require('child_process').spawn
|
|
4
|
+
const path = require('path')
|
|
5
|
+
const nakoHome = path.resolve(path.join(__dirname, '../../'))
|
|
6
|
+
const cnako3 = path.resolve(path.join(nakoHome, 'src/cnako3.js'))
|
|
7
|
+
const nako3edit = path.resolve(path.join(__dirname, 'index.nako3'))
|
|
8
|
+
|
|
9
|
+
let proc = spawn('node', [cnako3, nako3edit])
|
|
10
|
+
proc.stdout.on('data', (data) => {
|
|
11
|
+
console.log(data.toString())
|
|
12
|
+
})
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
|
|
6
|
+
<title>なでしこ3(Server版)エディタ</title>
|
|
7
|
+
<link href="/html/nako3edit.css" rel="stylesheet" type="text/css" />
|
|
8
|
+
<script defer type="text/javascript" src="/html/edit_plugin.js"></script>
|
|
9
|
+
|
|
10
|
+
<!-- common -->
|
|
11
|
+
<link rel="stylesheet" type="text/css" href="/demo/css/pure-min.css">
|
|
12
|
+
<link rel="stylesheet" type="text/css" href="/demo/css/common.css">
|
|
13
|
+
<link rel="stylesheet" href="/src/wnako3_editor.css">
|
|
14
|
+
<script src="/demo/js/ace@1.4.12/ace.js" integrity="sha512-GZ1RIgZaSc8rnco/8CXfRdCpDxRCphenIiZ2ztLy3XQfCbQUSCuk8IudvNHxkRA3oUg6q0qejgN/qqyG1duv5Q==" crossorigin="anonymous"></script>
|
|
15
|
+
<script src="/demo/js/ace@1.4.12/ext-language_tools.min.js" integrity="sha512-8qx1DL/2Wsrrij2TWX5UzvEaYOFVndR7BogdpOyF4ocMfnfkw28qt8ULkXD9Tef0bLvh3TpnSAljDC7uyniEuQ==" crossorigin="anonymous"></script>
|
|
16
|
+
<script src="/demo/js/ace@1.4.12/ext-options.min.js" integrity="sha512-oHR+WVzBiVZ6njlMVlDDLUIOLRDfUUfRQ55PfkZvgjwuvGqL4ohCTxaahJIxTmtya4jgyk0zmOxDMuLzbfqQDA==" crossorigin="anonymous"></script>
|
|
17
|
+
<script src="/demo/js/ace@1.4.12/ext-code_lens.min.js" integrity="sha512-gsDyyKTnOmSWRDzUbpYcPjzVsEyFGSWeWefzVKvbMULPR2ElIlKKsOtU3ycfybN9kncZXKLFSsUiG3cgJUbc/g==" crossorigin="anonymous"></script>
|
|
18
|
+
|
|
19
|
+
<script type="なでしこ">
|
|
20
|
+
#-----------
|
|
21
|
+
APPKEY=""
|
|
22
|
+
HREF=WINDOW["location"]["href"]
|
|
23
|
+
P=HREFをURLパラメータ解析
|
|
24
|
+
APPKEY=P["appkey"]
|
|
25
|
+
Pを表示。
|
|
26
|
+
FNAME="無題.nako3"
|
|
27
|
+
もし、P["file"]ならば、FNAME=P["file"]
|
|
28
|
+
エディタ初期化。
|
|
29
|
+
|
|
30
|
+
●エディタ初期化
|
|
31
|
+
「エディタ初期化」を表示。
|
|
32
|
+
「#run_btn」の「onclick」に「P実行処理」をDOMイベント設定。
|
|
33
|
+
「#save_btn」の「onclick」に「P保存処理」をDOMイベント設定。
|
|
34
|
+
もし、FNAME=「new」ならば
|
|
35
|
+
FNAME="無題.nako3"
|
|
36
|
+
FILE2 = "new"
|
|
37
|
+
違えば
|
|
38
|
+
FILE2 = FNAMEをURLエンコード。
|
|
39
|
+
ここまで。
|
|
40
|
+
「#name」にFNAMEをDOMテキスト設定
|
|
41
|
+
「/load?file={FILE2}&appkey={APPKEY}」へGET送信した時には
|
|
42
|
+
「#body」に対象をDOMテキスト設定。
|
|
43
|
+
ここまで。
|
|
44
|
+
# 戻るリンクをAPPKEYを入れて初期化
|
|
45
|
+
「.backlink」のDOM要素全取得して反復
|
|
46
|
+
対象["href"] = "/html/files.html?appkey={APPKEY}"
|
|
47
|
+
ここまで。
|
|
48
|
+
ここまで。
|
|
49
|
+
|
|
50
|
+
●P実行処理
|
|
51
|
+
「実行」を表示。
|
|
52
|
+
P保存処理;
|
|
53
|
+
BODY=「#body」のDOMテキスト取得
|
|
54
|
+
FNAME=「#name」のDOMテキスト取得
|
|
55
|
+
WINDOW["localStorage"]["nako3/editor/code"] = BODY
|
|
56
|
+
「nako3/editor/filename」にFNAMEを保存。
|
|
57
|
+
WINDOW["location"]["href"] = "/demo/index.html"
|
|
58
|
+
ここまで
|
|
59
|
+
|
|
60
|
+
●P保存処理
|
|
61
|
+
「保存」を表示。
|
|
62
|
+
S=「#body」のDOMテキスト取得
|
|
63
|
+
「/save」へ{
|
|
64
|
+
"file": 「#name」のDOMテキスト取得,
|
|
65
|
+
"body": 「#body」のDOMテキスト取得,
|
|
66
|
+
"appkey": APPKEY
|
|
67
|
+
}をPOST送信した時には
|
|
68
|
+
H=対象をHTML変換
|
|
69
|
+
「#result」にHをDOMテキスト設定。
|
|
70
|
+
ここまで。
|
|
71
|
+
ここまで
|
|
72
|
+
|
|
73
|
+
#-----------
|
|
74
|
+
</script>
|
|
75
|
+
</head>
|
|
76
|
+
<body>
|
|
77
|
+
<h1>なでしこ3(Server版)エディタ - <span class="titlemenu"><a class="backlink" href="#">[ファイル一覧]</a></span></h1>
|
|
78
|
+
<div class="editbox">
|
|
79
|
+
<div class="namebox">file: <input type="text" id="name" size="40" /></div>
|
|
80
|
+
<div><textarea id="body" rows="12" cols="60"></textarea></div>
|
|
81
|
+
<div class="cmd_btn">
|
|
82
|
+
<button id="run_btn">DEMOで実行</button>
|
|
83
|
+
<button id="save_btn">保存</button>
|
|
84
|
+
</div>
|
|
85
|
+
<div id="result"></div>
|
|
86
|
+
</div>
|
|
87
|
+
<hr />
|
|
88
|
+
<div><a class="backlink" href="#">→ファイル一覧へ</a></div>
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
<!-- なでしこ-->
|
|
92
|
+
<script src="../release/wnako3.js"></script>
|
|
93
|
+
<script src="../release/plugin_markup.js"></script>
|
|
94
|
+
<script src="../release/plugin_csv.js"></script>
|
|
95
|
+
<script src="../release/plugin_kansuji.js"></script>
|
|
96
|
+
<script src="../release/plugin_datetime.js"></script>
|
|
97
|
+
<script src="../release/plugin_turtle.js"></script>
|
|
98
|
+
<script src="../release/plugin_caniuse.js"></script>
|
|
99
|
+
<script src="../release/plugin_webworker.js"></script>
|
|
100
|
+
<!-- Chart.js -->
|
|
101
|
+
<script defer src="/demo/js/chart.js@2.9.3/Chart.min.js"></script>
|
|
102
|
+
|
|
103
|
+
</body>
|
|
104
|
+
</html>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<title>なでしこ3(Node版)エディタ - ファイル一覧</title>
|
|
6
|
+
<link href="/html/nako3edit.css" rel="stylesheet" type="text/css" />
|
|
7
|
+
<script defer type="text/javascript" src="/release/wnako3.js"></script>
|
|
8
|
+
<script defer type="text/javascript" src="/html/edit_plugin.js"></script>
|
|
9
|
+
<script type="なでしこ">
|
|
10
|
+
#-----------
|
|
11
|
+
APPKEY=""
|
|
12
|
+
HREF=WINDOW["location"]["href"]
|
|
13
|
+
HREFを表示。
|
|
14
|
+
P=HREFをURLパラメータ解析
|
|
15
|
+
Pを表示。
|
|
16
|
+
APPKEY=P["appkey"]
|
|
17
|
+
Pを表示。
|
|
18
|
+
ファイル一覧取得処理
|
|
19
|
+
|
|
20
|
+
●ファイル一覧取得処理
|
|
21
|
+
「/files?appkey={APPKEY}」へAJAX送信した時には
|
|
22
|
+
HTML=「<li><a href="/html/edit.html?file=new&appkey={APPKEY}"><span class="newfile">→新規作成</span></a></li>」
|
|
23
|
+
一覧=対象をJSONデコード
|
|
24
|
+
一覧を反復
|
|
25
|
+
F=それ
|
|
26
|
+
もし、MID(F,1,6)=「ERROR:」ならば
|
|
27
|
+
WINDOW["location"]["href"] = "/"
|
|
28
|
+
戻る。
|
|
29
|
+
ここまで。
|
|
30
|
+
F2 = FをHTML変換
|
|
31
|
+
F3 = FをURLエンコード
|
|
32
|
+
HTML=HTML&「<li><a href="/html/edit.html?file={F3}&appkey={APPKEY}">{F2}</a></li>」
|
|
33
|
+
ここまで
|
|
34
|
+
「#files_ul」にHTMLをDOM_HTML設定。
|
|
35
|
+
ここまで。
|
|
36
|
+
# ---
|
|
37
|
+
AJAX失敗した時には(err)
|
|
38
|
+
errをHTML変換してERRに代入。
|
|
39
|
+
S=「<p style='color: red;'>サーバとの通信に失敗しました。<br />」&_
|
|
40
|
+
「サーバ設定かブラウザの設定を確認してください。</p><p>{ERR}</p>」
|
|
41
|
+
「#files_ul」にSをDOM_HTML設定。
|
|
42
|
+
ここまで
|
|
43
|
+
ここまで。
|
|
44
|
+
#-----------
|
|
45
|
+
</script>
|
|
46
|
+
</head>
|
|
47
|
+
<body>
|
|
48
|
+
<h1>なでしこ3(Node版) - ファイル一覧</h1>
|
|
49
|
+
<div id="filesbox">
|
|
50
|
+
<ul id="files_ul"><li>現在読み込み中です。少々お待ちください。</li></ul>
|
|
51
|
+
</div>
|
|
52
|
+
</body>
|
|
53
|
+
</html>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
h1 {
|
|
2
|
+
background-color: blue;
|
|
3
|
+
color: white;
|
|
4
|
+
padding: 4px;
|
|
5
|
+
margin: 0;
|
|
6
|
+
font-size: 1em;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.editbox {
|
|
10
|
+
padding: 4px;
|
|
11
|
+
margin: 0px;
|
|
12
|
+
background-color: #f0f0f0;
|
|
13
|
+
}
|
|
14
|
+
.namebox {
|
|
15
|
+
color: gray;
|
|
16
|
+
padding: 4px;
|
|
17
|
+
margin: 4px;
|
|
18
|
+
}
|
|
19
|
+
#name {
|
|
20
|
+
padding: 4px;
|
|
21
|
+
font-size: 1em;
|
|
22
|
+
}
|
|
23
|
+
#body {
|
|
24
|
+
padding: 4px;
|
|
25
|
+
font-size: 1em;
|
|
26
|
+
}
|
|
27
|
+
.cmd_btn > button {
|
|
28
|
+
margin: 4px;
|
|
29
|
+
padding: 8px;
|
|
30
|
+
font-size: 1.2em;
|
|
31
|
+
}
|
|
32
|
+
#result {
|
|
33
|
+
background-color: white;
|
|
34
|
+
border: 1px solid silver;
|
|
35
|
+
margin: 4px;
|
|
36
|
+
padding: 8px;
|
|
37
|
+
font-size: 1em;
|
|
38
|
+
}
|
|
39
|
+
#filesbox {
|
|
40
|
+
border: 1px solid silver;
|
|
41
|
+
padding: 8px;
|
|
42
|
+
margin: 4px;
|
|
43
|
+
}
|
|
44
|
+
#filesbox > ul {
|
|
45
|
+
margin: 0;
|
|
46
|
+
padding: 4px;
|
|
47
|
+
}
|
|
48
|
+
#filesbox > ul > li {
|
|
49
|
+
border-bottom: 1px solid silver;
|
|
50
|
+
padding: 8px;
|
|
51
|
+
list-style-type: none;
|
|
52
|
+
}
|
|
53
|
+
.newfile {
|
|
54
|
+
padding: 4px;
|
|
55
|
+
background-color: #ffe0ff;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.titlemenu {
|
|
59
|
+
font-size: 0.9em;
|
|
60
|
+
color: yellow;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.titlemenu a {
|
|
64
|
+
color: yellow;
|
|
65
|
+
text-decoration: none;
|
|
66
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
!「../../src/plugin_express.js」を取り込む。
|
|
2
|
+
# ---------------------------------
|
|
3
|
+
# なでしこ3のユーザーフォルダ
|
|
4
|
+
# ---------------------------------
|
|
5
|
+
HOME=ホームディレクトリ取得
|
|
6
|
+
USER_DIR=「{HOME}/nadesiko3_user」
|
|
7
|
+
もし、!(USER_DIRのフォルダ存在)ならば
|
|
8
|
+
USER_DIRにフォルダ作成
|
|
9
|
+
ここまで
|
|
10
|
+
|
|
11
|
+
# ---------------------------------
|
|
12
|
+
# WEBサーバ起動
|
|
13
|
+
# ---------------------------------
|
|
14
|
+
APPKEY = (65535の乱数)&「_」&(65535の乱数)&「_」&(65535の乱数)
|
|
15
|
+
PORT=3030
|
|
16
|
+
PORTでWEBサーバ起動した時には
|
|
17
|
+
URL=「http://localhost:{PORT}?appkey={APPKEY}」
|
|
18
|
+
「>>> --------------------------------------------------」を表示
|
|
19
|
+
「>>> サーバ起動に成功しました。」を表示
|
|
20
|
+
「>>> nako3edit にアクセスするには、以下のURLにアクセスします」を表示
|
|
21
|
+
「>>> [URL] {URL}」を表示。
|
|
22
|
+
「>>>」を表示
|
|
23
|
+
ルーティング設定。
|
|
24
|
+
URLをブラウザ起動。
|
|
25
|
+
ここまで
|
|
26
|
+
|
|
27
|
+
WEBサーバ起動失敗した時には
|
|
28
|
+
PORT = PORT + 1
|
|
29
|
+
もし、PORT> 3050ならば
|
|
30
|
+
「WEBサーバが起動できませんでした。」と表示。
|
|
31
|
+
戻る。
|
|
32
|
+
ここまで
|
|
33
|
+
「- PORT変更={PORT}」と表示。
|
|
34
|
+
PORTでWEBサーバ起動
|
|
35
|
+
ここまで。
|
|
36
|
+
|
|
37
|
+
●ルーティング設定とは
|
|
38
|
+
# ---------------------------------
|
|
39
|
+
# 静的ディレクトリの指定
|
|
40
|
+
# ---------------------------------
|
|
41
|
+
「/html」を「{母艦パス}/html」へWEBサーバ静的パス指定
|
|
42
|
+
母艦パスを「../../release」で相対パス展開してRELEASEに代入。
|
|
43
|
+
「/release」をRELEASEへWEBサーバ静的パス指定。
|
|
44
|
+
母艦パスを「../../src」で相対パス展開してSRCに代入。
|
|
45
|
+
「/src」をSRCへWEBサーバ静的パス指定。
|
|
46
|
+
母艦パスを「../../demo」で相対パス展開してDEMOに代入。
|
|
47
|
+
「/demo」をDEMOへWEBサーバ静的パス指定。
|
|
48
|
+
# ---------------------------------
|
|
49
|
+
# ルーティング
|
|
50
|
+
# ---------------------------------
|
|
51
|
+
「/」へWEBサーバGETした時には
|
|
52
|
+
「- GET」を表示。
|
|
53
|
+
もし、GETデータ["appkey"]=APPKEYならば
|
|
54
|
+
URL_FILE=「/html/files.html?appkey={APPKEY}」
|
|
55
|
+
URL_FILEへWEBサーバリダイレクト。
|
|
56
|
+
「ファイル表示ページへ移動 => {URL_FILE}」と表示。
|
|
57
|
+
違えば
|
|
58
|
+
「
|
|
59
|
+
<h3>サーバから提供されたappkeyを正しくセットしてください。</h3>
|
|
60
|
+
<form method="GET"><input name="appkey" value="">
|
|
61
|
+
<input type="submit" value="送信"></form>
|
|
62
|
+
」をWEBサーバ出力。
|
|
63
|
+
ここまで。
|
|
64
|
+
ここまで
|
|
65
|
+
# ---------------------------------
|
|
66
|
+
「/test」へWEBサーバGETした時には
|
|
67
|
+
「test」をWEBサーバ出力。
|
|
68
|
+
ここまで
|
|
69
|
+
|
|
70
|
+
# ---------------------------------
|
|
71
|
+
「/files」へWEBサーバGETした時には
|
|
72
|
+
もし、GETデータ["appkey"]≠APPKEYならば
|
|
73
|
+
「["ERROR:APPKEYをセットしてください。"]」をWEBサーバ出力。
|
|
74
|
+
違えば
|
|
75
|
+
S=「{USER_DIR}/*.nako3」のファイル列挙
|
|
76
|
+
SをJSONエンコードしてWEBサーバ出力。
|
|
77
|
+
ここまで。
|
|
78
|
+
ここまで
|
|
79
|
+
|
|
80
|
+
# ---------------------------------
|
|
81
|
+
「/load」へWEBサーバGETした時には
|
|
82
|
+
GETデータを表示。
|
|
83
|
+
FILE=GETデータ["file"]
|
|
84
|
+
UKEY=GETデータ["appkey"]
|
|
85
|
+
もし、UKEY≠APPKEYならば
|
|
86
|
+
『### APPKEYが違います ###』とWEBサーバ出力。
|
|
87
|
+
ここまで
|
|
88
|
+
FILE=FILEの「..」を「」に置換して、「/」を「」に置換。
|
|
89
|
+
FPATH=「{USER_DIR}/{FILE}」
|
|
90
|
+
FPATHが存在
|
|
91
|
+
もし、そうならば
|
|
92
|
+
FPATHを開く。
|
|
93
|
+
それをWEBサーバ出力。
|
|
94
|
+
違えば
|
|
95
|
+
『# --- ここにプログラムを記述 ---』&改行&『「こんにちは」と表示。』をWEBサーバ出力。
|
|
96
|
+
ここまで。
|
|
97
|
+
ここまで。
|
|
98
|
+
|
|
99
|
+
# ---------------------------------
|
|
100
|
+
「/save」へWEBサーバPOSTした時には
|
|
101
|
+
サーバ保存実行処理。
|
|
102
|
+
ここまで
|
|
103
|
+
ここまで。
|
|
104
|
+
|
|
105
|
+
●サーバ保存実行処理とは
|
|
106
|
+
FILE=POSTデータ["file"]
|
|
107
|
+
BODY=POSTデータ["body"]
|
|
108
|
+
UKEY=POSTデータ["appkey"]
|
|
109
|
+
もし、UKEY≠APPKEYならば
|
|
110
|
+
「エラー:APPKEYが違います」をWEBサーバ出力。
|
|
111
|
+
戻る。
|
|
112
|
+
違えば
|
|
113
|
+
ここまで。
|
|
114
|
+
もし、(FILE=undefined)または(FILE=空)ならば
|
|
115
|
+
「エラー: ファイル名がありません」をWEBサーバ出力。
|
|
116
|
+
戻る。
|
|
117
|
+
ここまで
|
|
118
|
+
FPATH=「{USER_DIR}/{FILE}」
|
|
119
|
+
「(保存)FILE=」&FPATHを表示。
|
|
120
|
+
FPATHへBODYを保存。
|
|
121
|
+
FPATH=「{USER_DIR}/{FILE}」
|
|
122
|
+
エラー監視
|
|
123
|
+
FPATHへBODYを保存。
|
|
124
|
+
エラーならば
|
|
125
|
+
「NG」をWEBサーバ出力。
|
|
126
|
+
戻る。
|
|
127
|
+
ここまで。
|
|
128
|
+
「OK」をWEBサーバ出力。
|
|
129
|
+
ここまで。
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const spawn = require('child_process').spawn
|
|
4
|
+
const path = require('path')
|
|
5
|
+
const nakoHome = path.resolve(path.join(__dirname, '../../'))
|
|
6
|
+
const cnako3 = path.resolve(path.join(nakoHome, 'src/cnako3.js'))
|
|
7
|
+
const nako3edit = path.resolve(path.join(__dirname, 'index.nako3'))
|
|
8
|
+
|
|
9
|
+
let proc = spawn('node', [cnako3, nako3edit])
|
|
10
|
+
proc.stdout.on('data', (data) => {
|
|
11
|
+
console.log(data.toString())
|
|
12
|
+
})
|