nadesiko3 3.2.51 → 3.3.2

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 (169) 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/turtle3.html +18 -17
  7. package/demo/turtle3d.html +1 -1
  8. package/demo/turtle3d2.html +1 -1
  9. package/doc/browsers.md +9 -10
  10. package/package.json +58 -57
  11. package/release/_hash.txt +57 -52
  12. package/release/_script-tags.txt +14 -13
  13. package/release/command.json +1 -1
  14. package/release/command.json.js +1 -1
  15. package/release/command_cnako3.json +1 -1
  16. package/release/command_list.json +1 -1
  17. package/release/editor.js +1 -1
  18. package/release/editor.js.LICENSE.txt +9 -12
  19. package/release/nako_gen_async.js +1 -1
  20. package/release/nako_gen_async.js.LICENSE.txt +10 -666
  21. package/release/plugin_caniuse.js +1 -1
  22. package/release/plugin_caniuse.js.LICENSE.txt +9 -425
  23. package/release/plugin_csv.js +1 -1
  24. package/release/plugin_csv.js.LICENSE.txt +3 -419
  25. package/release/plugin_datetime.js +1 -1
  26. package/release/plugin_datetime.js.LICENSE.txt +6 -530
  27. package/release/plugin_kansuji.js +1 -1
  28. package/release/plugin_kansuji.js.LICENSE.txt +3 -559
  29. package/release/plugin_markup.js +1 -1
  30. package/release/plugin_markup.js.LICENSE.txt +4 -420
  31. package/release/plugin_turtle.js +1 -1
  32. package/release/plugin_turtle.js.LICENSE.txt +12 -500
  33. package/release/plugin_webworker.js +1 -1
  34. package/release/plugin_webworker.js.LICENSE.txt +3 -563
  35. package/release/plugin_weykturtle3d.js +1 -0
  36. package/release/stats.json +1 -1
  37. package/release/version.js +1 -1
  38. package/release/version.js.LICENSE.txt +9 -12
  39. package/release/wnako3.js +1 -1
  40. package/release/wnako3.js.LICENSE.txt +1 -1
  41. package/release/wnako3webworker.js +1 -1
  42. package/release/wnako3webworker.js.LICENSE.txt +1 -1117
  43. package/src/browsers.mjs +1 -0
  44. package/src/browsers.txt +15 -15
  45. package/src/browsers_agents.mjs +1 -0
  46. package/src/cnako3.mjs +13 -0
  47. package/src/{cnako3.js → cnako3mod.mjs} +46 -53
  48. package/src/{commander_ja.js → commander_ja.mjs} +16 -11
  49. package/src/{enako3.js → enako3.mjs} +0 -0
  50. package/src/{era.json → era.mjs} +1 -1
  51. package/src/image_turtle-elephant.mjs +5 -0
  52. package/src/image_turtle-panda.mjs +5 -0
  53. package/src/image_turtle64.mjs +5 -0
  54. package/src/index.mjs +9 -0
  55. package/src/{nako3.js → nako3.mjs} +56 -52
  56. package/src/{nako3_assert.js → nako3_assert.mjs} +7 -6
  57. package/src/{nako3server.js → nako3server.mjs} +12 -5
  58. package/src/{nako_colors.js → nako_colors.mjs} +1 -1
  59. package/src/{nako_errors.js → nako_errors.mjs} +8 -18
  60. package/src/{nako_from_dncl.js → nako_from_dncl.mjs} +8 -6
  61. package/src/{nako_gen.js → nako_gen.mjs} +107 -89
  62. package/src/{nako_gen_async.js → nako_gen_async.mjs} +5 -8
  63. package/src/{nako_global.js → nako_global.mjs} +4 -5
  64. package/src/{nako_indent.js → nako_indent.mjs} +4 -4
  65. package/src/{nako_josi_list.js → nako_josi_list.mjs} +16 -14
  66. package/src/nako_lex_rules.mjs +244 -0
  67. package/src/{nako_lexer.js → nako_lexer.mjs} +7 -10
  68. package/src/{nako_logger.js → nako_logger.mjs} +3 -4
  69. package/src/{nako_parser3.js → nako_parser3.mjs} +5 -5
  70. package/src/{nako_parser_base.js → nako_parser_base.mjs} +1 -9
  71. package/src/{nako_parser_const.js → nako_parser_const.mjs} +2 -6
  72. package/src/{nako_prepare.js → nako_prepare.mjs} +1 -2
  73. package/src/{nako_reserved_words.js → nako_reserved_words.mjs} +1 -1
  74. package/src/{nako_source_mapping.js → nako_source_mapping.mjs} +4 -11
  75. package/src/{nako_test.js → nako_test.mjs} +0 -0
  76. package/src/nako_version.mjs +7 -0
  77. package/src/{plugin_browser.js → plugin_browser.mjs} +30 -30
  78. package/src/{plugin_browser_ajax.js → plugin_browser_ajax.mjs} +7 -7
  79. package/src/{plugin_browser_audio.js → plugin_browser_audio.mjs} +1 -1
  80. package/src/{plugin_browser_canvas.js → plugin_browser_canvas.mjs} +1 -1
  81. package/src/{plugin_browser_chart.js → plugin_browser_chart.mjs} +1 -1
  82. package/src/{plugin_browser_color.js → plugin_browser_color.mjs} +1 -1
  83. package/src/{plugin_browser_crypto.js → plugin_browser_crypto.mjs} +1 -1
  84. package/src/{plugin_browser_dialog.js → plugin_browser_dialog.mjs} +1 -1
  85. package/src/{plugin_browser_dom_basic.js → plugin_browser_dom_basic.mjs} +1 -1
  86. package/src/{plugin_browser_dom_event.js → plugin_browser_dom_event.mjs} +1 -1
  87. package/src/{plugin_browser_dom_parts.js → plugin_browser_dom_parts.mjs} +1 -1
  88. package/src/{plugin_browser_geolocation.js → plugin_browser_geolocation.mjs} +1 -1
  89. package/src/{plugin_browser_hotkey.js → plugin_browser_hotkey.mjs} +2 -2
  90. package/src/{plugin_browser_html.js → plugin_browser_html.mjs} +1 -1
  91. package/src/{plugin_browser_in_worker.js → plugin_browser_in_worker.mjs} +4 -4
  92. package/src/{plugin_browser_location.js → plugin_browser_location.mjs} +1 -1
  93. package/src/{plugin_browser_speech.js → plugin_browser_speech.mjs} +1 -1
  94. package/src/{plugin_browser_storage.js → plugin_browser_storage.mjs} +1 -1
  95. package/src/{plugin_browser_system.js → plugin_browser_system.mjs} +1 -1
  96. package/src/{plugin_browser_websocket.js → plugin_browser_websocket.mjs} +1 -1
  97. package/src/{plugin_caniuse.js → plugin_caniuse.mjs} +8 -3
  98. package/src/{plugin_csv.js → plugin_csv.mjs} +4 -5
  99. package/src/{plugin_datetime.js → plugin_datetime.mjs} +19 -26
  100. package/src/{plugin_express.js → plugin_express.mjs} +4 -3
  101. package/src/{plugin_kansuji.js → plugin_kansuji.mjs} +1 -1
  102. package/src/{plugin_keigo.js → plugin_keigo.mjs} +0 -0
  103. package/src/{plugin_markup.js → plugin_markup.mjs} +6 -6
  104. package/src/{plugin_math.js → plugin_math.mjs} +1 -4
  105. package/src/{plugin_node.js → plugin_node.mjs} +25 -57
  106. package/src/{plugin_promise.js → plugin_promise.mjs} +1 -3
  107. package/src/{plugin_system.js → plugin_system.mjs} +32 -15
  108. package/src/{plugin_test.js → plugin_test.mjs} +1 -3
  109. package/src/{plugin_turtle.js → plugin_turtle.mjs} +5 -4
  110. package/src/{plugin_webworker.js → plugin_webworker.mjs} +3 -3
  111. package/src/{plugin_weykturtle3d.js → plugin_weykturtle3d.mjs} +1 -3
  112. package/src/{plugin_worker.js → plugin_worker.mjs} +4 -1
  113. package/src/{wnako3.js → wnako3.mjs} +5 -5
  114. package/src/{wnako3_editor.js → wnako3_editor.mjs} +24 -18
  115. package/src/{wnako3webworker.js → wnako3webworker.mjs} +0 -0
  116. package/test/async/{async_basic_test.js → async_basic_test.mjs} +3 -4
  117. package/test/browser/karma.config.js +9 -0
  118. package/test/browser/test/plugin_browser_test.js +2 -2
  119. package/test/browser/test/plugin_turtle_test.js +2 -2
  120. package/test/browser/test/plugin_webworker_test.js +3 -3
  121. package/test/browser/test/require_test.js +2 -2
  122. package/test/common/{array_test.js → array_test.mjs} +3 -3
  123. package/test/common/{basic_test.js → basic_test.mjs} +3 -13
  124. package/test/common/{calc_test.js → calc_test.mjs} +2 -2
  125. package/test/common/{debug_test.js → debug_test.mjs} +2 -2
  126. package/test/common/{dncl_test.js → dncl_test.mjs} +3 -3
  127. package/test/common/{error_test.js → error_test.mjs} +2 -2
  128. package/test/common/{flow_test.js → flow_test.mjs} +2 -2
  129. package/test/common/{func_call.js → func_call.mjs} +3 -3
  130. package/test/common/{func_test.js → func_test.mjs} +2 -2
  131. package/test/common/{indent_test.js → indent_test.mjs} +3 -2
  132. package/test/common/{lex_test.js → lex_test.mjs} +2 -2
  133. package/test/common/{literal_test.js → literal_test.mjs} +3 -2
  134. package/test/common/{nako_logger_test.js → nako_logger_test.mjs} +3 -3
  135. package/test/common/{plugin_browser_test.js → plugin_browser_test.mjs} +4 -4
  136. package/test/common/{plugin_browser_ut_audio_test.js → plugin_browser_ut_audio_test.mjs} +4 -4
  137. package/test/common/{plugin_browser_ut_color_test.js → plugin_browser_ut_color_test.mjs} +2 -2
  138. package/test/common/{plugin_browser_ut_dialog_test.js → plugin_browser_ut_dialog_test.mjs} +3 -3
  139. package/test/common/{plugin_browser_ut_html_test.js → plugin_browser_ut_html_test.mjs} +2 -2
  140. package/test/common/{plugin_browser_ut_system_test.js → plugin_browser_ut_system_test.mjs} +2 -2
  141. package/test/common/{plugin_csv_test.js → plugin_csv_test.mjs} +3 -3
  142. package/test/common/{plugin_datetime_test.js → plugin_datetime_test.mjs} +4 -4
  143. package/test/common/{plugin_kansuji_test.js → plugin_kansuji_test.mjs} +3 -3
  144. package/test/common/{plugin_markup_test.js → plugin_markup_test.mjs} +3 -3
  145. package/test/common/{plugin_promise_test.js → plugin_promise_test.mjs} +2 -2
  146. package/test/common/{plugin_system_test.js → plugin_system_test.mjs} +2 -2
  147. package/test/common/{prepare_test.js → prepare_test.mjs} +2 -2
  148. package/test/common/{re_test.js → re_test.mjs} +2 -2
  149. package/test/common/{variable_scope_test.js → variable_scope_test.mjs} +2 -2
  150. package/test/karma.config.js +3 -3
  151. package/test/node/{async_test.js → async_test.mjs} +4 -2
  152. package/test/node/{commander_ja_test.js → commander_ja_test.mjs} +17 -12
  153. package/test/node/{error_message_test.js → error_message_test.mjs} +13 -10
  154. package/test/node/node_test.mjs +57 -0
  155. package/test/node/{plugin_browser_ut_ajax_test.js → plugin_browser_ut_ajax_test.mjs} +7 -5
  156. package/test/node/{plugin_browser_ut_location_test.js → plugin_browser_ut_location_test.mjs} +3 -3
  157. package/test/node/{plugin_markup_test.js → plugin_markup_test.mjs} +6 -7
  158. package/test/node/{plugin_math_test.js → plugin_math_test.mjs} +5 -5
  159. package/test/node/{plugin_node_test.js → plugin_node_test.mjs} +11 -7
  160. package/test/node/{plugin_test.js → plugin_test.mjs} +11 -5
  161. package/test/node/{require_nako3_test.js → require_nako3_test.mjs} +19 -12
  162. package/test/node/{side_effects_test.js → side_effects_test.mjs} +24 -13
  163. package/test/node/{wnako3_editor_test.js → wnako3_editor_test.mjs} +16 -9
  164. package/tools/nako3edit/index.nako3 +1 -1
  165. package/tools/nako3edit/{run.js → run.mjs} +8 -2
  166. package/src/index.js +0 -5
  167. package/src/nako_lex_rules.js +0 -260
  168. package/src/nako_version.js +0 -8
  169. package/test/node/node_test.js +0 -43
@@ -0,0 +1 @@
1
+ export default {"and_chr":["100"],"and_ff":["99"],"and_qq":["10.4"],"and_uc":["12.12"],"android":["100"],"baidu":["7.12"],"chrome":["100","99","98","97"],"edge":["100","99","98"],"firefox":["99","98","97","91"],"ios_saf":["15.4","15.2-15.3","15.0-15.1","14.5-14.8","14.0-14.4","12.2-12.5"],"kaios":["2.5"],"node":["17.9.0","16.14.0","14.19.0","12.22.0"],"op_mini":["all"],"op_mob":["64"],"opera":["83","82"],"safari":["15.4","15.2-15.3","14.1"],"samsung":["16.0","15.0"]}
package/src/browsers.txt CHANGED
@@ -1,37 +1,37 @@
1
- and_chr 97
2
- and_ff 96
1
+ and_chr 100
2
+ and_ff 99
3
3
  and_qq 10.4
4
4
  and_uc 12.12
5
- android 97
5
+ android 100
6
6
  baidu 7.12
7
+ chrome 100
8
+ chrome 99
7
9
  chrome 98
8
10
  chrome 97
9
- chrome 96
10
- chrome 93
11
+ edge 100
12
+ edge 99
11
13
  edge 98
12
- edge 97
13
- edge 96
14
- firefox 96
15
- firefox 95
14
+ firefox 99
15
+ firefox 98
16
+ firefox 97
16
17
  firefox 91
17
- firefox 78
18
- ie 11
18
+ ios_saf 15.4
19
19
  ios_saf 15.2-15.3
20
20
  ios_saf 15.0-15.1
21
21
  ios_saf 14.5-14.8
22
22
  ios_saf 14.0-14.4
23
23
  ios_saf 12.2-12.5
24
24
  kaios 2.5
25
- node 17.0.0
26
- node 16.12.0
27
- node 14.18.0
25
+ node 17.9.0
26
+ node 16.14.0
27
+ node 14.19.0
28
28
  node 12.22.0
29
29
  op_mini all
30
30
  op_mob 64
31
31
  opera 83
32
32
  opera 82
33
+ safari 15.4
33
34
  safari 15.2-15.3
34
- safari 15.1
35
35
  safari 14.1
36
36
  samsung 16.0
37
37
  samsung 15.0
@@ -0,0 +1 @@
1
+ export default {"ie":"IE","edge":"Edge","firefox":"Firefox","chrome":"Chrome","safari":"Safari","opera":"Opera","ios_saf":"Safari on iOS","op_mini":"Opera Mini","android":"Android Browser","bb":"Blackberry Browser","op_mob":"Opera Mobile","and_chr":"Chrome for Android","and_ff":"Firefox for Android","ie_mob":"IE Mobile","and_uc":"UC Browser for Android","samsung":"Samsung Internet","and_qq":"QQ Browser","baidu":"Baidu Browser","kaios":"KaiOS Browser"}
package/src/cnako3.mjs ADDED
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * コマンドライン版のなでしこ3
5
+ */
6
+ import { CNako3 } from './cnako3mod.mjs'
7
+
8
+ // メイン
9
+ (async () => {
10
+ const cnako3 = new CNako3()
11
+ await cnako3.execCommand()
12
+ })()
13
+
@@ -1,23 +1,28 @@
1
- #!/usr/bin/env node
2
1
  // @ts-nocheck
3
2
  /**
4
- * コマンドライン版のなでしこ3
3
+ * コマンドライン版のなでしこ3をモジュールとして定義
4
+ * 実際には cnako3.js から読み込まれる
5
5
  */
6
- const fs = require('fs')
7
- const exec = require('child_process').exec
6
+ import fs from 'fs'
7
+ import { exec } from 'child_process'
8
+ import path from 'path'
9
+ import { NakoCompiler } from './nako3.mjs'
10
+ import PluginNode from './plugin_node.mjs'
11
+ import { NakoImportError } from './nako_errors.mjs'
12
+ import app from './commander_ja.mjs'
13
+ import nakoVersion from './nako_version.mjs'
14
+ import fetch from 'node-fetch'
8
15
 
9
- const path = require('path')
10
- const NakoCompiler = require('./nako3')
11
- const PluginNode = require('./plugin_node')
12
- const { NakoImportError } = require('./nako_errors')
13
- const NakoGenASync = require('./nako_gen_async')
16
+ // __dirname のために
17
+ import url from 'url'
18
+ const __filename = url.fileURLToPath(import.meta.url);
19
+ const __dirname = path.dirname(__filename);
14
20
 
15
- class CNako3 extends NakoCompiler {
21
+ export class CNako3 extends NakoCompiler {
16
22
  /** @param {{ nostd?: boolean }} [opts] */
17
23
  constructor (opts = {}) {
18
24
  super({ useBasicPlugin: true })
19
25
  this.silent = false
20
- this.addCodeGenerator('非同期モード', NakoGenASync) // 「!非同期モード」をサポート
21
26
  if (!opts.nostd) {
22
27
  this.addPluginFile('PluginNode', path.join(__dirname, 'plugin_node.js'), PluginNode)
23
28
  }
@@ -30,12 +35,11 @@ class CNako3 extends NakoCompiler {
30
35
  if (process.argv.length <= 2) { process.argv.push('-h') }
31
36
 
32
37
  // commanderを使って引数を解析する
33
- const app = require('./commander_ja.js')
34
- const nakoVersion = require('./nako_version.js')
35
38
  app
36
39
  .title('日本語プログラミング言語「なでしこ」v' + nakoVersion.version)
37
40
  .version(nakoVersion.version, '-v, --version')
38
41
  .usage('[オプション] 入力ファイル.nako3')
42
+ .option('-h, --help', 'コマンドの使い方を表示')
39
43
  .option('-w, --warn', '警告を表示する')
40
44
  .option('-d, --debug', 'デバッグモードの指定')
41
45
  .option('-D, --trace', '詳細デバッグモードの指定')
@@ -101,6 +105,7 @@ class CNako3 extends NakoCompiler {
101
105
  if (args.test) {
102
106
  args.output = args.mainfile.replace(/\.(nako|nako3)$/, '.spec.js')
103
107
  } else {
108
+ // todo: 将来的に mjs のコードを履くように修正する↓ '.mjs'
104
109
  args.output = args.mainfile.replace(/\.(nako|nako3)$/, '.js')
105
110
  }
106
111
  }
@@ -118,7 +123,7 @@ class CNako3 extends NakoCompiler {
118
123
  }
119
124
 
120
125
  // 実行する
121
- execCommand () {
126
+ async execCommand () {
122
127
  const opt = this.checkArguments()
123
128
  if (opt.man) {
124
129
  this.cnakoMan(opt.man)
@@ -141,7 +146,7 @@ class CNako3 extends NakoCompiler {
141
146
  // メインプログラムを読み込む
142
147
  const src = fs.readFileSync(opt.mainfile, 'utf-8')
143
148
  if (opt.compile) {
144
- this.nakoCompile(opt, src, false)
149
+ await this.nakoCompile(opt, src, false)
145
150
  return
146
151
  }
147
152
  if (opt.ast) {
@@ -172,8 +177,9 @@ class CNako3 extends NakoCompiler {
172
177
  * @param {string} src
173
178
  * @param {boolean} isTest
174
179
  */
175
- nakoCompile (opt, src, isTest) {
180
+ async nakoCompile (opt, src, isTest) {
176
181
  // system
182
+ await this.loadDependencies(src, this.filename, '')
177
183
  const jscode = this.compileStandalone(src, this.filename, isTest)
178
184
  console.log(opt.output)
179
185
  fs.writeFileSync(opt.output, jscode, 'utf-8')
@@ -271,7 +277,8 @@ class CNako3 extends NakoCompiler {
271
277
  // マニュアルを表示する
272
278
  cnakoMan (command) {
273
279
  try {
274
- const commands = require('../release/command_cnako3.json')
280
+ const path_commands = path.join(__dirname, '../release/command_cnako3.json')
281
+ const commands = JSON.parse(fs.readFileSync(path_commands, 'utf-8'))
275
282
  const data = commands[command]
276
283
  for (const key in data) {
277
284
  console.log(`${key}: ${data[key]}`)
@@ -296,13 +303,12 @@ class CNako3 extends NakoCompiler {
296
303
  * @param {string} filename
297
304
  * @param {string} preCode
298
305
  */
299
- loadDependencies (code, filename, preCode) {
306
+ async loadDependencies (code, filename, preCode) {
300
307
  /** @type {string[]} */
301
308
  const log = []
302
- // 同期的に読み込む
303
- const tasks = super._loadDependencies(code, filename, preCode, {
309
+ const tools = {
304
310
  resolvePath: (name, token) => {
305
- if (/\.js(\.txt)?$/.test(name) || /^[^.]*$/.test(name)) {
311
+ if (/\.(js|mjs)(\.txt)?$/.test(name) || /^[^.]*$/.test(name)) {
306
312
  return { filePath: path.resolve(CNako3.findPluginFile(name, this.filename, __dirname, log)), type: 'js' }
307
313
  }
308
314
  if (/\.nako3?(\.txt)?$/.test(name)) {
@@ -324,26 +330,24 @@ class CNako3 extends NakoCompiler {
324
330
  }
325
331
  return { sync: true, value: fs.readFileSync(name).toString() }
326
332
  },
327
- readJs: (name, token) => {
328
- return {
329
- sync: true,
330
- value: () => {
331
- try {
332
- return require(name)
333
- } catch (/** @type {unknown} */err) {
334
- let msg = `プラグイン ${name} の取り込みに失敗: ${err instanceof Error ? err.message : err + ''}`
335
- if (err instanceof Error && err.message.startsWith('Cannot find module')) {
336
- msg += `\n次の場所を検索しました: ${log.join(', ')}`
337
- }
338
- throw new NakoImportError(msg, token.line, token.file)
339
- }
340
- }
341
- }
333
+ readJs: (filePath, token) => {
334
+ const content = {sync: false, value: null}
335
+ content.value = (
336
+ new Promise((resolve, reject) => {
337
+ import(filePath).then((mod) => {
338
+ // プラグインは export default で宣言されている? (moduleプラグインの場合)
339
+ const obj = Object.assign({}, mod)
340
+ resolve(() => { return obj.default })
341
+ }).catch((err) => {
342
+ const err2 = new NakoImportError(`ファイル ${filePath} が読み込めません。${err}`, token.line, token.file)
343
+ reject(err2)
344
+ })
345
+ })
346
+ )
347
+ return content
342
348
  }
343
- })
344
- if (tasks !== undefined) {
345
- throw new Error('assertion error')
346
349
  }
350
+ return super._loadDependencies(code, filename, preCode, tools)
347
351
  }
348
352
 
349
353
  /**
@@ -351,11 +355,8 @@ class CNako3 extends NakoCompiler {
351
355
  * @param {string} fname
352
356
  * @param {string} [preCode]
353
357
  */
354
- run (code, fname, preCode = '') {
355
- const tasks = this.loadDependencies(code, fname, preCode)
356
- if (tasks !== undefined) {
357
- throw new Error('assertion error')
358
- }
358
+ async run (code, fname, preCode = '') {
359
+ await this.loadDependencies(code, fname, preCode)
359
360
  return this._runEx(code, fname, {}, preCode)
360
361
  }
361
362
 
@@ -398,7 +399,7 @@ class CNako3 extends NakoCompiler {
398
399
  fpath = path.join(pathTest, plugin_xxx_js)
399
400
  if (exists(fpath, 'plugin_xxx.js')) { return fpath }
400
401
  fpath = path.join(pathTest, 'src', plugin_xxx_js)
401
- if (exists(fpath, 'src/plugin_xxx.js')) { return fpath }
402
+ if (exists(fpath, 'src/plugin_xxx.mjs')) { return fpath }
402
403
  // nadesiko3-xxx
403
404
  // eslint-disable-next-line camelcase
404
405
  const nadesiko3_xxx = 'nadesiko3-' + name
@@ -449,11 +450,3 @@ class CNako3 extends NakoCompiler {
449
450
  return pname
450
451
  }
451
452
  }
452
-
453
- // メイン
454
- if (require.main === module) { // 直接実行する
455
- const cnako3 = new CNako3()
456
- cnako3.execCommand()
457
- } else { // モジュールとして使う場合
458
- module.exports = CNako3
459
- }
@@ -1,5 +1,5 @@
1
1
  // commander_ja.js
2
- const app = {
2
+ export default {
3
3
  args: /** @type {string[]} */([]),
4
4
  _alias: /** @type {Record<string, string>} */({}),
5
5
  _hasarg: /** @type {Record<string, boolean>} */({}),
@@ -7,6 +7,16 @@ const app = {
7
7
  _usage: '',
8
8
  _version: '1.0.0',
9
9
  _title: '',
10
+ reset: function () {
11
+ this.args = []
12
+ this._alias = {}
13
+ this._hasarg = {}
14
+ this._help = []
15
+ this._usage = ''
16
+ this._version = '1.0.0'
17
+ this._title = ''
18
+ this.option('-h, --help', '使い方を表示する')
19
+ },
10
20
  /**
11
21
  * set version info
12
22
  * @param {*} ver version info
@@ -36,7 +46,7 @@ const app = {
36
46
  * @param {string} desc
37
47
  */
38
48
  option (cmd, desc) {
39
- app._help.push([cmd, desc])
49
+ this._help.push([cmd, desc])
40
50
  let name1 = ''
41
51
  const name2 = /** @type {string[]} */([])
42
52
  const cmdList = cmd.split(',')
@@ -87,12 +97,12 @@ const app = {
87
97
  continue
88
98
  }
89
99
  // Options
90
- if (arg.substr(0, 2) === '--') {
91
- lastOpt = arg.substr(2)
100
+ if (arg.substring(0, 2) === '--') {
101
+ lastOpt = arg.substring(2)
92
102
  if (lastOpt === 'version') { lastOpt = 'version_' }
93
103
  } else {
94
104
  // Short Option
95
- const shortName = arg.substr(1)
105
+ const shortName = arg.substring(1)
96
106
  if (this._alias[shortName]) {
97
107
  lastOpt = this._alias[shortName]
98
108
  } else {
@@ -142,13 +152,8 @@ const app = {
142
152
  const spc = ' '
143
153
  this._help.forEach((c) => {
144
154
  const opt = c[0] + spc
145
- ss += ' ' + opt.substr(0, 20) + ' ' + c[1] + '\n'
155
+ ss += ' ' + opt.substring(0, 20) + ' ' + c[1] + '\n'
146
156
  })
147
157
  return ss
148
158
  }
149
159
  }
150
-
151
- app.option('-h, --help', 'コマンドの使い方を表示')
152
-
153
- // register app
154
- module.exports = app
File without changes
@@ -1,4 +1,4 @@
1
- [
1
+ export default [
2
2
  {
3
3
  "元号": "令和",
4
4
  "改元日": "2019/05/01"
@@ -0,0 +1,5 @@
1
+
2
+ // file:turtle-elephant.png
3
+ export default 'data:image/png;base64,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'
4
+ //
5
+
@@ -0,0 +1,5 @@
1
+
2
+ // file:turtle-panda.png
3
+ export default 'data:image/png;base64,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'
4
+ //
5
+
@@ -0,0 +1,5 @@
1
+
2
+ // file:turtle64.png
3
+ export default 'data:image/png;base64,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'
4
+ //
5
+
package/src/index.mjs ADDED
@@ -0,0 +1,9 @@
1
+
2
+ import {NakoCompiler} from './nako3.mjs'
3
+ import {PluginNode} from './plugin_node.mjs'
4
+
5
+ default export {
6
+ // Node.jsのモジュールモードでなでしこを利用する場合
7
+ compiler: NakoCompiler,
8
+ PluginNode
9
+ }
@@ -2,41 +2,25 @@
2
2
  /**
3
3
  * nadesiko v3
4
4
  */
5
- const Parser = require('./nako_parser3')
6
- const NakoLexer = require('./nako_lexer')
7
- const Prepare = require('./nako_prepare')
8
- const NakoGenSync = require('./nako_gen')
9
- const NakoIndent = require('./nako_indent')
10
- const NakoDncl = require('./nako_from_dncl')
11
- const PluginSystem = require('./plugin_system')
12
- const PluginMath = require('./plugin_math')
13
- const PluginPromise = require('./plugin_promise')
14
- const PluginTest = require('./plugin_test')
15
- const { SourceMappingOfTokenization, SourceMappingOfIndentSyntax, OffsetToLineColumn, subtractSourceMapByPreCodeLength } = require('./nako_source_mapping')
16
- const { NakoRuntimeError, NakoLexerError, NakoImportError, NakoSyntaxError, InternalLexerError } = require('./nako_errors')
17
- const NakoLogger = require('./nako_logger')
18
- const NakoGlobal = require('./nako_global')
5
+ import { NakoParser } from './nako_parser3.mjs'
6
+ import { NakoLexer } from './nako_lexer.mjs'
7
+ import { NakoPrepare } from './nako_prepare.mjs'
8
+ import { NakoGen, generateJS } from './nako_gen.mjs'
9
+ import { NakoGenASync } from './nako_gen_async.mjs'
10
+ import NakoIndent from './nako_indent.mjs'
11
+ import { convertDNCL } from './nako_from_dncl.mjs'
12
+ import PluginSystem from './plugin_system.mjs'
13
+ import PluginMath from './plugin_math.mjs'
14
+ import PluginPromise from './plugin_promise.mjs'
15
+ import PluginTest from './plugin_test.mjs'
16
+ import { SourceMappingOfTokenization, SourceMappingOfIndentSyntax, OffsetToLineColumn, subtractSourceMapByPreCodeLength } from './nako_source_mapping.mjs'
17
+ import { NakoRuntimeError, NakoLexerError, NakoImportError, NakoSyntaxError, InternalLexerError } from './nako_errors.mjs'
18
+ import { NakoLogger } from './nako_logger.mjs'
19
+ import { NakoGlobal } from './nako_global.mjs'
19
20
 
20
21
  /** @type {<T>(x: T) => T} */
21
22
  const cloneAsJSON = (x) => JSON.parse(JSON.stringify(x))
22
23
 
23
- // Select Code Generator #637
24
- /**
25
- * @type {Object}
26
- */
27
- const codeGenerators = {
28
- // [key: String]
29
- sync: NakoGenSync
30
- }
31
-
32
- /**
33
- * @param {String | undefined} mode
34
- */
35
- function NakoGen (mode) {
36
- if (codeGenerators[mode]) { return codeGenerators[mode] }
37
- throw new Error(`コードジェネレータの「${mode}」はサポートされていません。`)
38
- }
39
-
40
24
  /**
41
25
  * @typedef {{
42
26
  * type: string
@@ -93,7 +77,7 @@ function NakoGen (mode) {
93
77
  * } NakoFunction
94
78
  */
95
79
 
96
- class NakoCompiler {
80
+ export class NakoCompiler {
97
81
  /**
98
82
  * @param {undefined | {'useBasicPlugin':true|false}} options
99
83
  */
@@ -129,8 +113,8 @@ class NakoCompiler {
129
113
  this.logger = new NakoLogger()
130
114
 
131
115
  // 必要なオブジェクトを覚えておく
132
- this.prepare = new Prepare(this.logger)
133
- this.parser = new Parser(this.logger)
116
+ this.prepare = new NakoPrepare(this.logger)
117
+ this.parser = new NakoParser(this.logger)
134
118
  this.lexer = new NakoLexer(this.logger)
135
119
 
136
120
  /**
@@ -227,14 +211,18 @@ class NakoCompiler {
227
211
 
228
212
  // 初回の読み込み
229
213
  dependencies[item.filePath] = { tokens: [], alias: new Set([item.value]), addPluginFile: () => {}, funclist: {} }
230
- if (item.type === 'js') {
214
+ if (item.type === 'js' || item.type === 'mjs') {
231
215
  // jsならプラグインとして読み込む。
232
216
  const obj = tools.readJs(item.filePath, item.firstToken)
233
217
  if (obj.sync) {
234
- dependencies[item.filePath].addPluginFile = () => { this.addPluginFile(item.value, item.filePath, dependencies[item.filePath].funclist = obj.value(), false) }
218
+ dependencies[item.filePath].addPluginFile = () => {
219
+ this.addPluginFile(item.value, item.filePath, dependencies[item.filePath].funclist = obj.value(), false)
220
+ }
235
221
  } else {
236
222
  tasks.push(obj.value.then((res) => {
237
- dependencies[item.filePath].addPluginFile = () => { this.addPluginFile(item.value, item.filePath, dependencies[item.filePath].funclist = res(), false) }
223
+ dependencies[item.filePath].addPluginFile = () => {
224
+ this.addPluginFile(item.value, item.filePath, dependencies[item.filePath].funclist = res(), false)
225
+ }
238
226
  }))
239
227
  }
240
228
  } else if (item.type === 'nako3') {
@@ -304,7 +292,7 @@ class NakoCompiler {
304
292
  // インデント構文 (#596)
305
293
  const { code: code2, insertedLines, deletedLines } = NakoIndent.convert(code, filename)
306
294
  // DNCL構文 (#1140)
307
- const code3 = NakoDncl.convert(code2, filename)
295
+ const code3 = convertDNCL(code2, filename)
308
296
 
309
297
  // 全角半角の統一処理
310
298
  const preprocessed = this.prepare.convert(code3)
@@ -455,7 +443,9 @@ class NakoCompiler {
455
443
  }
456
444
  const filePath = Object.keys(this.dependencies).find((key) => this.dependencies[key].alias.has(r.value))
457
445
  if (filePath === undefined) {
458
- throw new NakoLexerError(`ファイル ${r.value} が読み込まれていません。`, r.firstToken.startOffset, r.firstToken.endOffset, r.firstToken.line, r.firstToken.file)
446
+ //console.log('@@@@=',r.value, this.dependencies)
447
+ // TODO: エラーが出るが、無視しても
448
+ // throw new NakoLexerError(`ファイル ${r.value} が読み込まれていません。`, r.firstToken.startOffset, r.firstToken.endOffset, r.firstToken.line, r.firstToken.file)
459
449
  }
460
450
  this.dependencies[filePath].addPluginFile()
461
451
  const children = cloneAsJSON(this.dependencies[filePath].tokens)
@@ -606,7 +596,7 @@ class NakoCompiler {
606
596
  }
607
597
 
608
598
  /**
609
- * プログラムをコンパイルしてJavaScriptのコードを返す
599
+ * プログラムをコンパイルしてランタイム用のJavaScriptのコードを返す
610
600
  * @param {string} code コード (なでしこ)
611
601
  * @param {string} filename
612
602
  * @param {boolean | string} isTest テストかどうか。stringの場合は1つのテストのみ。
@@ -614,7 +604,29 @@ class NakoCompiler {
614
604
  */
615
605
  compile (code, filename, isTest, preCode = '') {
616
606
  const ast = this.parse(code, filename, preCode)
617
- return NakoGen(ast.genMode).generate(this, ast, isTest).runtimeEnv
607
+ const codeObj = this.generateCode(ast, isTest, preCode)
608
+ return codeObj.runtimeEnv
609
+ }
610
+
611
+ /**
612
+ * プログラムをコンパイルしてJavaScriptのコードオブジェクトを返す
613
+ * @param {AST} ast
614
+ * @param {boolean | string} isTest テストかどうか。stringの場合は1つのテストのみ。
615
+ * @param {string} [preCode]
616
+ * @return {Object}
617
+ */
618
+ generateCode (ast, isTest, preCode = '') {
619
+ // Select Code Generator #637
620
+ switch (ast.genMode) {
621
+ // ノーマルモード
622
+ case 'sync':
623
+ return generateJS(this, ast, isTest)
624
+ // 『!非同期モード』は緩やかに非推奨にする
625
+ case '非同期モード':
626
+ return NakoGenASync.generate(this, ast, isTest)
627
+ default:
628
+ throw new Error(`コードジェネレータの「${ast.genMode}」はサポートされていません。`)
629
+ }
618
630
  }
619
631
 
620
632
  /**
@@ -654,7 +666,7 @@ class NakoCompiler {
654
666
  if (optsAll.resetEnv) { this.reset() }
655
667
  if (optsAll.resetAll) { this.clearPlugins() }
656
668
  const ast = this.parse(code, fname, preCode)
657
- out = NakoGen(ast.genMode).generate(this, ast, optsAll.testOnly)
669
+ out = this.generateCode(ast, optsAll.testOnly)
658
670
  } catch (e) {
659
671
  this.logger.error(e)
660
672
  throw e
@@ -727,7 +739,7 @@ class NakoCompiler {
727
739
  */
728
740
  compileStandalone (code, filename, isTest, preCode = '') {
729
741
  const ast = this.parse(code, filename, preCode)
730
- return NakoGen(ast.genMode).generate(this, ast, isTest).standalone
742
+ return this.generateCode(ast, isTest).standalone
731
743
  }
732
744
 
733
745
  /**
@@ -755,6 +767,7 @@ class NakoCompiler {
755
767
  readonly: (v.type === 'const')
756
768
  }
757
769
  } else {
770
+ console.error('[プラグイン追加エラー]', v)
758
771
  throw new Error('プラグインの追加でエラー。')
759
772
  }
760
773
  // コマンドを登録するか?
@@ -829,14 +842,5 @@ class NakoCompiler {
829
842
  return this.funclist[key]
830
843
  }
831
844
 
832
- /**
833
- * コードジェネレータを追加する
834
- * @param {string} mode
835
- * @param {any} obj
836
- */
837
- addCodeGenerator (mode, obj) {
838
- codeGenerators[mode] = obj
839
- }
840
845
  }
841
846
 
842
- module.exports = NakoCompiler
@@ -2,9 +2,10 @@
2
2
  /**
3
3
  * Assert対応のなでしこ
4
4
  */
5
- const assert = require('assert')
6
- const path = require('path')
7
- const NakoCompiler = require(path.join(__dirname, 'nako3'))
5
+
6
+ import assert from 'assert'
7
+ import { NakoCompiler } from './nako3.mjs'
8
+
8
9
 
9
10
  const PluginAssert = {
10
11
  '初期化': {
@@ -25,13 +26,13 @@ const PluginAssert = {
25
26
  }
26
27
  }
27
28
 
28
- class Nako3Assert extends NakoCompiler {
29
+ export class Nako3Assert extends NakoCompiler {
29
30
  constructor () {
30
31
  super()
31
32
  this.silent = true
32
- this.addPluginFile('PluginAssert', path.join(__dirname, 'nako3_assert.js'), PluginAssert)
33
+ this.addPluginFile('PluginAssert', 'nako3_assert.js', PluginAssert)
33
34
  this.__varslist[0]['ナデシコ種類'] = 'nako3_assert'
34
35
  }
35
36
  }
36
37
 
37
- module.exports = Nako3Assert
38
+