diff --git a/src/nako3.js b/src/nako3.js index 454eee52..f3f51eb4 100644 --- a/src/nako3.js +++ b/src/nako3.js @@ -24,6 +24,7 @@ class NakoCompiler { this.__varslist = [{}, {}, {}] // このオブジェクトは変更しないこと (this.gen.__varslist と共有する) this.__self = this this.__vars = this.__varslist[2] + this.__module = {} this.pluginfiles = {} // プラグインとして取り込んだファイルの一覧 // set this lexer.compiler = this @@ -137,6 +138,7 @@ class NakoCompiler { let __varslist = this.__varslist let __vars = this.__vars = this.__varslist[2] // eslint-disable-line let __self = this.__self // eslint-disable-line + let __module = this.__module // eslint-disable-line try { __varslist[0].line = -1 // コンパイルエラーを調べるため eval(js) // eslint-disable-line diff --git a/src/nako_gen.js b/src/nako_gen.js index fcfbcbaa..e3728410 100644 --- a/src/nako_gen.js +++ b/src/nako_gen.js @@ -90,7 +90,8 @@ class NakoGen { return '' + 'var __varslist = this.__varslist = [{}, {}, {}];\n' + 'var __vars = this.__varslist[2];\n' + - 'var __self = this;\n' + 'var __self = this;\n' + + 'var __module = {};\n' } static convLineno (node) { @@ -903,8 +904,9 @@ class NakoGen { } convRequire (node) { + const moduleName = node.value return NakoGen.convLineno(node.line) + - `require('${node.value}');\n` + `__module['${moduleName}'] = require('${moduleName}');\n` } } diff --git a/src/plugin_system.js b/src/plugin_system.js index c71fc6f8..24a16afd 100644 --- a/src/plugin_system.js +++ b/src/plugin_system.js @@ -1260,6 +1260,17 @@ const PluginSystem = { return a } }, + 'モジュール一覧取得': { // @取り込んだモジュール一覧を得る // @もじゅーるいちらんしゅとく + type: 'func', + josi: [], + fn: function (sys) { + const a = [] + for (const f in sys.__module) { + a.push(f) + } + return a + } + }, 'タイムゾーン設定': { // @タイムゾーンTをセットする(v1非互換)(タイムゾーンの一覧は https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List 参照) // @たいむぞーんせってい type: 'func', josi: [['で']],