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.
Files changed (283) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +107 -0
  3. package/bin/cnako3 +10 -0
  4. package/bin/cnako3.bat +11 -0
  5. package/bin/nako3server.bat +6 -0
  6. package/demo/ace_editor.html +90 -0
  7. package/demo/ace_editor_tabs.html +162 -0
  8. package/demo/basic.html +71 -0
  9. package/demo/browsers.html +128 -0
  10. package/demo/css/basic.css +3 -0
  11. package/demo/css/common.css +157 -0
  12. package/demo/css/editor.css +8 -0
  13. package/demo/css/flow.css +3 -0
  14. package/demo/css/index.css +3 -0
  15. package/demo/extlib/ace@1.4.12/ace.js +17 -0
  16. package/demo/extlib/ace@1.4.12/ext-code_lens.min.js +1 -0
  17. package/demo/extlib/ace@1.4.12/ext-language_tools.min.js +1 -0
  18. package/demo/extlib/ace@1.4.12/ext-options.min.js +1 -0
  19. package/demo/extlib/ace@1.4.12/ext-settings_menu.js +8 -0
  20. package/demo/extlib/ace@1.4.12/keybinding-vscode.js +8 -0
  21. package/demo/extlib/ace@1.4.12/theme-monokai.js +8 -0
  22. package/demo/extlib/ace@1.4.12/theme-xcode.js +8 -0
  23. package/demo/extlib/chart.js@3.2.1/chart.min.js +13 -0
  24. package/demo/extlib/pure-min.css +11 -0
  25. package/demo/flow.html +97 -0
  26. package/demo/graph.html +53 -0
  27. package/demo/image/nako.png +0 -0
  28. package/demo/image/nakopad-icon256.png +0 -0
  29. package/demo/image/turtle.fla +0 -0
  30. package/demo/image/turtle.png +0 -0
  31. package/demo/index.html +134 -0
  32. package/demo/js/common.js +17 -0
  33. package/demo/js/turtle3d_test.js +44 -0
  34. package/demo/js/turtle_test.js +44 -0
  35. package/demo/runscript.html +47 -0
  36. package/demo/runscript2.html +33 -0
  37. package/demo/turtle.html +58 -0
  38. package/demo/turtle2.html +141 -0
  39. package/demo/turtle3.html +278 -0
  40. package/demo/turtle3d.html +58 -0
  41. package/demo/turtle3d2.html +107 -0
  42. package/demo/version.html +24 -0
  43. package/doc/SETUP.md +172 -0
  44. package/doc/about.md +34 -0
  45. package/doc/browsers.md +60 -0
  46. package/doc/docgen.md +21 -0
  47. package/doc/editor.md +44 -0
  48. package/doc/files.md +37 -0
  49. package/doc/plugins.md +195 -0
  50. package/doc/release.md +78 -0
  51. package/doc/win32.md +57 -0
  52. package/package.json +196 -0
  53. package/release/_hash.txt +65 -0
  54. package/release/_script-tags.txt +13 -0
  55. package/release/command.json +1 -0
  56. package/release/command.json.js +1 -0
  57. package/release/command_cnako3.json +1 -0
  58. package/release/command_list.json +1 -0
  59. package/release/editor.js +2 -0
  60. package/release/editor.js.LICENSE.txt +32 -0
  61. package/release/josi.json +48 -0
  62. package/release/nako_gen_async.js +1 -0
  63. package/release/nako_gen_async.js.LICENSE.txt +595 -0
  64. package/release/plugin_caniuse.js +1 -0
  65. package/release/plugin_caniuse.js.LICENSE.txt +411 -0
  66. package/release/plugin_csv.js +1 -0
  67. package/release/plugin_csv.js.LICENSE.txt +367 -0
  68. package/release/plugin_datetime.js +1 -0
  69. package/release/plugin_datetime.js.LICENSE.txt +471 -0
  70. package/release/plugin_kansuji.js +1 -0
  71. package/release/plugin_kansuji.js.LICENSE.txt +491 -0
  72. package/release/plugin_markup.js +1 -0
  73. package/release/plugin_markup.js.LICENSE.txt +363 -0
  74. package/release/plugin_turtle.js +1 -0
  75. package/release/plugin_turtle.js.LICENSE.txt +435 -0
  76. package/release/plugin_webworker.js +1 -0
  77. package/release/plugin_webworker.js.LICENSE.txt +491 -0
  78. package/release/version.js +2 -0
  79. package/release/version.js.LICENSE.txt +32 -0
  80. package/release/wnako3.js +2 -0
  81. package/release/wnako3.js.LICENSE.txt +1 -0
  82. package/release/wnako3webworker.js +1 -0
  83. package/release/wnako3webworker.js.LICENSE.txt +847 -0
  84. package/release/yoyakugo.json +30 -0
  85. package/src/browsers.md +60 -0
  86. package/src/cnako3.js +466 -0
  87. package/src/commander_ja.js +154 -0
  88. package/src/enako3.js +69 -0
  89. package/src/era.json +22 -0
  90. package/src/index.js +5 -0
  91. package/src/nako3.js +836 -0
  92. package/src/nako3_assert.js +37 -0
  93. package/src/nako3editorfix.sfd +106 -0
  94. package/src/nako3editorfix.woff +0 -0
  95. package/src/nako3server.js +51 -0
  96. package/src/nako_colors.js +86 -0
  97. package/src/nako_errors.js +176 -0
  98. package/src/nako_gen.js +1459 -0
  99. package/src/nako_gen_async.js +1622 -0
  100. package/src/nako_global.js +113 -0
  101. package/src/nako_indent.js +480 -0
  102. package/src/nako_josi_list.js +46 -0
  103. package/src/nako_lex_rules.js +259 -0
  104. package/src/nako_lexer.js +576 -0
  105. package/src/nako_logger.js +138 -0
  106. package/src/nako_parser3.js +1768 -0
  107. package/src/nako_parser_base.js +265 -0
  108. package/src/nako_parser_const.js +37 -0
  109. package/src/nako_prepare.js +293 -0
  110. package/src/nako_reserved_words.js +35 -0
  111. package/src/nako_source_mapping.js +251 -0
  112. package/src/nako_test.js +37 -0
  113. package/src/nako_version.js +8 -0
  114. package/src/plugin_browser.js +191 -0
  115. package/src/plugin_browser_ajax.js +352 -0
  116. package/src/plugin_browser_audio.js +109 -0
  117. package/src/plugin_browser_canvas.js +462 -0
  118. package/src/plugin_browser_chart.js +296 -0
  119. package/src/plugin_browser_color.js +49 -0
  120. package/src/plugin_browser_crypto.js +26 -0
  121. package/src/plugin_browser_dialog.js +53 -0
  122. package/src/plugin_browser_dom_basic.js +322 -0
  123. package/src/plugin_browser_dom_event.js +193 -0
  124. package/src/plugin_browser_dom_parts.js +163 -0
  125. package/src/plugin_browser_geolocation.js +51 -0
  126. package/src/plugin_browser_hotkey.js +25 -0
  127. package/src/plugin_browser_html.js +59 -0
  128. package/src/plugin_browser_in_worker.js +44 -0
  129. package/src/plugin_browser_location.js +21 -0
  130. package/src/plugin_browser_speech.js +111 -0
  131. package/src/plugin_browser_storage.js +121 -0
  132. package/src/plugin_browser_system.js +12 -0
  133. package/src/plugin_browser_websocket.js +73 -0
  134. package/src/plugin_caniuse.js +24 -0
  135. package/src/plugin_csv.js +57 -0
  136. package/src/plugin_datetime.js +414 -0
  137. package/src/plugin_express.js +212 -0
  138. package/src/plugin_kansuji.js +224 -0
  139. package/src/plugin_keigo.js +55 -0
  140. package/src/plugin_markup.js +32 -0
  141. package/src/plugin_math.js +319 -0
  142. package/src/plugin_node.js +1018 -0
  143. package/src/plugin_promise.js +94 -0
  144. package/src/plugin_system.js +2109 -0
  145. package/src/plugin_test.js +38 -0
  146. package/src/plugin_turtle.js +646 -0
  147. package/src/plugin_webworker.js +334 -0
  148. package/src/plugin_weykturtle3d.js +1216 -0
  149. package/src/plugin_worker.js +92 -0
  150. package/src/repl.nako3 +63 -0
  151. package/src/turtle-elephant.png +0 -0
  152. package/src/turtle-panda.png +0 -0
  153. package/src/turtle64.png +0 -0
  154. package/src/wnako3.js +162 -0
  155. package/src/wnako3_editor.css +215 -0
  156. package/src/wnako3_editor.js +1645 -0
  157. package/src/wnako3_editor_marker_red.png +0 -0
  158. package/src/wnako3_editor_marker_red.xcf +0 -0
  159. package/src/wnako3_editor_marker_yellow.png +0 -0
  160. package/src/wnako3_editor_marker_yellow.xcf +0 -0
  161. package/src/wnako3webworker.js +70 -0
  162. package/test/ace_editor/karma.config.js +94 -0
  163. package/test/ace_editor/test/.babelrc.json +3 -0
  164. package/test/ace_editor/test/ace_editor_test.js +178 -0
  165. package/test/ace_editor/test/html/custom_context.html +140 -0
  166. package/test/async/async_basic_test.js +124 -0
  167. package/test/browser/karma.config.js +212 -0
  168. package/test/browser/test/.babelrc.json +3 -0
  169. package/test/browser/test/compare_util.js +50 -0
  170. package/test/browser/test/html/canvas_basic.html +1 -0
  171. package/test/browser/test/html/div_basic.html +2 -0
  172. package/test/browser/test/html/event_dom_form.html +4 -0
  173. package/test/browser/test/html/event_dom_scrolldiv.html +5 -0
  174. package/test/browser/test/image/canvas_test1.png +0 -0
  175. package/test/browser/test/image/canvas_test2.png +0 -0
  176. package/test/browser/test/image/canvas_test3.png +0 -0
  177. package/test/browser/test/image/canvas_test4.png +0 -0
  178. package/test/browser/test/image/canvas_test7.png +0 -0
  179. package/test/browser/test/image/canvas_test8.png +0 -0
  180. package/test/browser/test/image/canvas_test_blank.png +0 -0
  181. package/test/browser/test/image/elephant_kana.png +0 -0
  182. package/test/browser/test/image/panda_kana.png +0 -0
  183. package/test/browser/test/image/turtle_kana.png +0 -0
  184. package/test/browser/test/import_plugin_checker.js +24 -0
  185. package/test/browser/test/plugin_browser_test.js +52 -0
  186. package/test/browser/test/plugin_browser_test_ajax.js +123 -0
  187. package/test/browser/test/plugin_browser_test_color.js +18 -0
  188. package/test/browser/test/plugin_browser_test_dialog.js +72 -0
  189. package/test/browser/test/plugin_browser_test_dom_event.js +598 -0
  190. package/test/browser/test/plugin_browser_test_dom_parts.js +125 -0
  191. package/test/browser/test/plugin_browser_test_system.js +9 -0
  192. package/test/browser/test/plugin_turtle_test.js +817 -0
  193. package/test/browser/test/plugin_webworker_test.js +87 -0
  194. package/test/browser/test/require_test.js +71 -0
  195. package/test/bundled/karma.config.base.js +117 -0
  196. package/test/bundled/karma.config.js +86 -0
  197. package/test/bundled/test/.babelrc.json +3 -0
  198. package/test/bundled/test/bundled_test.js +69 -0
  199. package/test/bundled/test/html/custom_context.html +65 -0
  200. package/test/bundled/test/html/custom_debug.html +66 -0
  201. package/test/bundled/test4b.cmd +52 -0
  202. package/test/bundled/test_base/.babelrc.json +3 -0
  203. package/test/bundled/test_base/_checktool_test.js +25 -0
  204. package/test/bundled/test_base/basic_ajax_test.js +56 -0
  205. package/test/bundled/test_base/basic_async_test.js +18 -0
  206. package/test/bundled/test_base/basic_test.js +153 -0
  207. package/test/bundled/test_base/calc_test.js +132 -0
  208. package/test/bundled/test_base/css/browsers_box.css +114 -0
  209. package/test/bundled/test_base/html/custom_context.html +69 -0
  210. package/test/bundled/test_base/html/custom_debug.html +71 -0
  211. package/test/bundled/test_base/js/browsers_box.js +72 -0
  212. package/test/bundled/test_base/plugin_csv_test.js +37 -0
  213. package/test/bundled/test_base/plugin_datetime_test.js +115 -0
  214. package/test/bundled/test_base/plugin_kansuji_test.js +49 -0
  215. package/test/bundled/test_base/plugin_system_test.js +410 -0
  216. package/test/bundled/test_base/plugin_webworker_test.js +53 -0
  217. package/test/bundled/test_base/resources/ok.txt +1 -0
  218. package/test/bundled/test_base/test_utils.js +191 -0
  219. package/test/common/array_test.js +40 -0
  220. package/test/common/basic_test.js +317 -0
  221. package/test/common/calc_test.js +139 -0
  222. package/test/common/debug_test.js +16 -0
  223. package/test/common/error_test.js +16 -0
  224. package/test/common/flow_test.js +360 -0
  225. package/test/common/func_call.js +136 -0
  226. package/test/common/func_test.js +149 -0
  227. package/test/common/indent_test.js +362 -0
  228. package/test/common/lex_test.js +146 -0
  229. package/test/common/literal_test.js +72 -0
  230. package/test/common/nako_logger_test.js +26 -0
  231. package/test/common/plugin_browser_test.js +24 -0
  232. package/test/common/plugin_browser_ut_audio_test.js +88 -0
  233. package/test/common/plugin_browser_ut_color_test.js +21 -0
  234. package/test/common/plugin_browser_ut_dialog_test.js +100 -0
  235. package/test/common/plugin_browser_ut_html_test.js +13 -0
  236. package/test/common/plugin_browser_ut_system_test.js +10 -0
  237. package/test/common/plugin_csv_test.js +39 -0
  238. package/test/common/plugin_datetime_test.js +120 -0
  239. package/test/common/plugin_kansuji_test.js +59 -0
  240. package/test/common/plugin_promise_test.js +18 -0
  241. package/test/common/plugin_system_test.js +451 -0
  242. package/test/common/prepare_test.js +93 -0
  243. package/test/common/re_test.js +20 -0
  244. package/test/common/variable_scope_test.js +105 -0
  245. package/test/jsconfig.json +19 -0
  246. package/test/karma.config.js +91 -0
  247. package/test/node/add_test.nako3 +1 -0
  248. package/test/node/async_test.js +80 -0
  249. package/test/node/commander_ja_test.js +82 -0
  250. package/test/node/error_message_test.js +244 -0
  251. package/test/node/kai_test.nako3 +6 -0
  252. package/test/node/node_test.js +43 -0
  253. package/test/node/plugin_broken.js.txt +3 -0
  254. package/test/node/plugin_browser_ut_ajax_test.js +355 -0
  255. package/test/node/plugin_browser_ut_location_test.js +32 -0
  256. package/test/node/plugin_markup_test.js +44 -0
  257. package/test/node/plugin_math_test.js +42 -0
  258. package/test/node/plugin_node_test.js +93 -0
  259. package/test/node/plugin_test.js +16 -0
  260. package/test/node/relative_import_test_1.nako3 +1 -0
  261. package/test/node/relative_import_test_2.nako3 +2 -0
  262. package/test/node/require_nako3_test.js +59 -0
  263. package/test/node/requiretest.nako3 +4 -0
  264. package/test/node/requiretest_indirect.nako3 +1 -0
  265. package/test/node/requiretest_name.nako3 +5 -0
  266. package/test/node/runtime_error.nako3 +2 -0
  267. package/test/node/side_effects_test.js +106 -0
  268. package/test/node/sjis.txt +5 -0
  269. package/test/node/syntax_error.nako3 +2 -0
  270. package/test/node/wnako3_editor_test.js +360 -0
  271. package/tools/README.md +7 -0
  272. package/tools/nako3edit/html/edit.html +83 -0
  273. package/tools/nako3edit/html/edit_plugin.js +6 -0
  274. package/tools/nako3edit/html/files.html +49 -0
  275. package/tools/nako3edit/html/nako3edit.css +66 -0
  276. package/tools/nako3edit/index.nako3 +145 -0
  277. package/tools/nako3edit/run.js +12 -0
  278. package/tools/nako3server/html/edit.html +104 -0
  279. package/tools/nako3server/html/edit_plugin.js +6 -0
  280. package/tools/nako3server/html/files.html +53 -0
  281. package/tools/nako3server/html/nako3edit.css +66 -0
  282. package/tools/nako3server/index.nako3 +129 -0
  283. 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,6 @@
1
+ window.addEventListener('load', function () {
2
+ navigator.nako3.setFunc('表示', [['と', 'を']], (s) => {
3
+ console.log('[LOG]', s)
4
+ }, true)
5
+ navigator.nako3.runNakoScript()
6
+ })
@@ -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
+ })