nadesiko3 3.7.13 → 3.7.14
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/batch/command.txt +473 -473
- package/batch/jsplugin2text.nako3 +2 -0
- package/core/package.json +1 -1
- package/core/src/nako3.mjs +0 -4
- package/core/src/nako3.mts +55 -55
- package/core/src/nako_ast.mjs +0 -1
- package/core/src/nako_ast.mts +1 -1
- package/core/src/nako_colors.mjs +0 -1
- package/core/src/nako_colors.mts +1 -1
- package/core/src/nako_core_version.mjs +2 -2
- package/core/src/nako_core_version.mts +2 -2
- package/core/src/nako_csv.mjs +0 -1
- package/core/src/nako_csv.mts +9 -9
- package/core/src/nako_errors.mts +8 -8
- package/core/src/nako_from_dncl.mts +5 -5
- package/core/src/nako_from_dncl2.mjs +0 -1
- package/core/src/nako_from_dncl2.mts +5 -5
- package/core/src/nako_gen.mjs +13 -15
- package/core/src/nako_gen.mts +224 -220
- package/core/src/nako_global.mts +11 -11
- package/core/src/nako_indent.mts +92 -92
- package/core/src/nako_indent_chars.mts +1 -1
- package/core/src/nako_indent_inline.mjs +11 -11
- package/core/src/nako_indent_inline.mts +20 -20
- package/core/src/nako_lex_rules.mjs +0 -1
- package/core/src/nako_lex_rules.mts +8 -8
- package/core/src/nako_lexer.mjs +0 -1
- package/core/src/nako_lexer.mts +23 -23
- package/core/src/nako_logger.mjs +1 -1
- package/core/src/nako_logger.mts +38 -38
- package/core/src/nako_parser3.mjs +4 -5
- package/core/src/nako_parser3.mts +79 -79
- package/core/src/nako_parser_base.mjs +1 -1
- package/core/src/nako_parser_base.mts +68 -68
- package/core/src/nako_parser_const.mjs +0 -1
- package/core/src/nako_parser_const.mts +1 -1
- package/core/src/nako_prepare.mts +12 -12
- package/core/src/nako_source_mapping.mts +9 -9
- package/core/src/nako_token.mjs +0 -1
- package/core/src/nako_token.mts +2 -2
- package/core/src/nako_tools.mjs +0 -1
- package/core/src/nako_tools.mts +4 -4
- package/core/src/nako_types.mjs +0 -1
- package/core/src/nako_types.mts +3 -3
- package/core/src/plugin_api.mjs +0 -1
- package/core/src/plugin_api.mts +1 -1
- package/core/src/plugin_csv.mjs +0 -1
- package/core/src/plugin_csv.mts +7 -7
- package/core/src/plugin_math.mjs +0 -1
- package/core/src/plugin_math.mts +39 -40
- package/core/src/plugin_promise.mjs +1 -1
- package/core/src/plugin_promise.mts +9 -9
- package/core/src/plugin_system.mjs +1 -10
- package/core/src/plugin_system.mts +319 -321
- package/core/src/plugin_test.mjs +0 -2
- package/core/src/plugin_test.mts +6 -6
- package/core/src/plugin_toml.mjs +1 -1
- package/core/src/plugin_toml.mts +4 -4
- package/core/test/flow_test.mjs +22 -0
- package/package.json +31 -34
- package/release/_hash.txt +24 -24
- package/release/_script-tags.txt +16 -16
- package/release/command_cnako3.json +1 -1
- package/release/edit_main.js +33 -21
- package/release/edit_main.js.map +4 -4
- package/release/editor.js +33 -21
- package/release/plugin_keigo.js.map +2 -2
- package/release/plugin_turtle.js.map +2 -2
- package/release/plugin_weykturtle3d.js.map +2 -2
- package/release/version.js +29 -17
- package/release/version_main.js +29 -17
- package/release/version_main.js.map +4 -4
- package/release/wnako3.js +51 -44
- package/release/wnako3.js.map +3 -3
- package/release/wnako3webworker.js +45 -38
- package/release/wnako3webworker.js.map +2 -2
- package/src/cnako3.mts +1 -1
- package/src/cnako3mod.mjs +4 -7
- package/src/cnako3mod.mts +24 -24
- package/src/commander_ja.mts +8 -8
- package/src/deno_wrapper.mjs +0 -1
- package/src/deno_wrapper.mts +5 -5
- package/src/nako_version.mjs +2 -2
- package/src/nako_version.mts +2 -2
- package/src/plugin_browser.mjs +21 -29
- package/src/plugin_browser.mts +30 -35
- package/src/plugin_browser_ajax.mts +27 -27
- package/src/plugin_browser_audio.mjs +0 -1
- package/src/plugin_browser_audio.mts +11 -11
- package/src/plugin_browser_camera.mts +8 -8
- package/src/plugin_browser_canvas.mjs +0 -2
- package/src/plugin_browser_canvas.mts +34 -34
- package/src/plugin_browser_chart.mjs +0 -1
- package/src/plugin_browser_chart.mts +13 -13
- package/src/plugin_browser_color.mts +2 -2
- package/src/plugin_browser_crypto.mts +5 -5
- package/src/plugin_browser_dialog.mts +4 -4
- package/src/plugin_browser_dom_basic.mts +42 -42
- package/src/plugin_browser_dom_event.mjs +0 -1
- package/src/plugin_browser_dom_event.mts +27 -28
- package/src/plugin_browser_dom_parts.mjs +0 -2
- package/src/plugin_browser_dom_parts.mts +31 -31
- package/src/plugin_browser_geolocation.mts +3 -3
- package/src/plugin_browser_hotkey.mts +3 -3
- package/src/plugin_browser_html.mts +4 -4
- package/src/plugin_browser_in_worker.mts +1 -1
- package/src/plugin_browser_location.mts +2 -2
- package/src/plugin_browser_speech.mts +7 -7
- package/src/plugin_browser_storage.mts +11 -11
- package/src/plugin_browser_system.mts +2 -2
- package/src/plugin_browser_websocket.mts +6 -6
- package/src/plugin_httpserver.mts +17 -17
- package/src/plugin_keigo.mts +5 -5
- package/src/plugin_node.mjs +7 -48
- package/src/plugin_node.mts +114 -145
- package/src/plugin_turtle.mts +143 -143
- package/src/plugin_weykturtle3d.mjs +0 -3
- package/src/plugin_weykturtle3d.mts +135 -135
- package/src/plugin_weykturtle3d_three.mjs +0 -1
- package/src/plugin_weykturtle3d_three.mts +1 -1
- package/src/plugin_weykturtle3d_threeutil.mts +3 -3
- package/src/wnako3.mjs +0 -1
- package/src/wnako3.mts +1 -1
- package/src/wnako3_editor.mjs +0 -2
- package/src/wnako3_editor.mts +132 -132
- package/src/wnako3mod.mjs +0 -5
- package/src/wnako3mod.mts +19 -19
package/core/src/nako_lexer.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
2
|
// なでしこの字句解析を行う
|
|
3
3
|
// 既に全角半角を揃えたコードに対して字句解析を行う
|
|
4
4
|
import { opPriority } from './nako_parser_const.mjs'
|
|
@@ -32,7 +32,7 @@ export class NakoLexer {
|
|
|
32
32
|
/**
|
|
33
33
|
* @param logger
|
|
34
34
|
*/
|
|
35
|
-
constructor
|
|
35
|
+
constructor(logger: NakoLogger) {
|
|
36
36
|
this.logger = logger // 字句解析した際,確認された関数の一覧
|
|
37
37
|
this.funclist = new Map()
|
|
38
38
|
this.modList = [] // 字句解析した際,取り込むモジュール一覧 --- nako3::lex で更新される
|
|
@@ -44,12 +44,12 @@ export class NakoLexer {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
/** 関数一覧をセット */
|
|
47
|
-
setFuncList
|
|
47
|
+
setFuncList(listMap: FuncList) {
|
|
48
48
|
this.funclist = listMap
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
/** モジュール公開既定値一覧をセット */
|
|
52
|
-
setModuleExport
|
|
52
|
+
setModuleExport(exportObj: ExportMap) {
|
|
53
53
|
this.moduleExport = exportObj
|
|
54
54
|
}
|
|
55
55
|
|
|
@@ -58,7 +58,7 @@ export class NakoLexer {
|
|
|
58
58
|
* @param {boolean} isFirst
|
|
59
59
|
* @param {string} filename
|
|
60
60
|
*/
|
|
61
|
-
replaceTokens
|
|
61
|
+
replaceTokens(tokens: Token[], isFirst: boolean, filename: string) {
|
|
62
62
|
this.result = tokens
|
|
63
63
|
this.modName = NakoLexer.filenameToModName(filename)
|
|
64
64
|
// 関数の定義があれば funclist を更新
|
|
@@ -126,7 +126,7 @@ export class NakoLexer {
|
|
|
126
126
|
* ファイル内で定義されている関数名を列挙する。結果はfunclistに書き込む。その他のトークンの置換処理も行う。
|
|
127
127
|
* シンタックスハイライトの処理から呼び出すためにstaticメソッドにしている。
|
|
128
128
|
*/
|
|
129
|
-
static preDefineFunc
|
|
129
|
+
static preDefineFunc(tokens: Token[], logger: NakoLogger, funclist: FuncList, moduleexport: ExportMap) {
|
|
130
130
|
// 関数を先読みして定義
|
|
131
131
|
let i = 0
|
|
132
132
|
let isFuncPointer = false
|
|
@@ -300,7 +300,7 @@ export class NakoLexer {
|
|
|
300
300
|
}
|
|
301
301
|
|
|
302
302
|
/** 文字列を{と}の部分で分割する。中括弧が対応していない場合nullを返す。 */
|
|
303
|
-
splitStringEx
|
|
303
|
+
splitStringEx(code: string): string[] | null {
|
|
304
304
|
/** @type {string[]} */
|
|
305
305
|
const list = []
|
|
306
306
|
|
|
@@ -319,7 +319,7 @@ export class NakoLexer {
|
|
|
319
319
|
return list
|
|
320
320
|
}
|
|
321
321
|
|
|
322
|
-
_replaceWord
|
|
322
|
+
_replaceWord(tokens: Token[]): void {
|
|
323
323
|
let comment = []
|
|
324
324
|
let i = 0
|
|
325
325
|
let isFuncPointer = false
|
|
@@ -524,7 +524,7 @@ export class NakoLexer {
|
|
|
524
524
|
* インデントの個数を数える
|
|
525
525
|
* @returns 戻り値として[インデント数, 読み飛ばすべき文字数]を返す
|
|
526
526
|
*/
|
|
527
|
-
countIndent
|
|
527
|
+
countIndent(src: string): number[] {
|
|
528
528
|
let indent = 0
|
|
529
529
|
for (let i = 0; i < src.length; i++) {
|
|
530
530
|
const c = src.charAt(i)
|
|
@@ -543,7 +543,7 @@ export class NakoLexer {
|
|
|
543
543
|
* @param line 先頭行の行番号
|
|
544
544
|
* @param filename ファイル名
|
|
545
545
|
*/
|
|
546
|
-
tokenize
|
|
546
|
+
tokenize(src: string, line: number, filename: string): Token[] {
|
|
547
547
|
const srcLength: number = src.length
|
|
548
548
|
const result: Token[] = []
|
|
549
549
|
let columnCurrent
|
|
@@ -722,17 +722,17 @@ export class NakoLexer {
|
|
|
722
722
|
}
|
|
723
723
|
|
|
724
724
|
switch (ruleName) {
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
725
|
+
case 'def_test': {
|
|
726
|
+
isDefTest = true
|
|
727
|
+
break
|
|
728
|
+
}
|
|
729
|
+
case 'eol': { // eolの処理はほかに↑と↓にある
|
|
730
|
+
isDefTest = false
|
|
731
|
+
break
|
|
732
|
+
}
|
|
733
|
+
default: {
|
|
734
|
+
break
|
|
735
|
+
}
|
|
736
736
|
}
|
|
737
737
|
// ここまで‰(#682) を処理
|
|
738
738
|
if (ruleName === 'dec_lineno') {
|
|
@@ -773,7 +773,7 @@ export class NakoLexer {
|
|
|
773
773
|
}
|
|
774
774
|
|
|
775
775
|
// トークン配列をtype文字列に変換
|
|
776
|
-
static tokensToTypeStr
|
|
776
|
+
static tokensToTypeStr(tokens: Token[], sep: string) {
|
|
777
777
|
const a = tokens.map((v) => {
|
|
778
778
|
return v.type
|
|
779
779
|
})
|
|
@@ -785,7 +785,7 @@ export class NakoLexer {
|
|
|
785
785
|
* @param {string} filename
|
|
786
786
|
* @returns {string}
|
|
787
787
|
*/
|
|
788
|
-
static filenameToModName
|
|
788
|
+
static filenameToModName(filename: string) {
|
|
789
789
|
if (!filename) { return 'main' }
|
|
790
790
|
// パスがあればパスを削除
|
|
791
791
|
filename = filename.replace(/[\\:]/g, '/') // Windowsのpath記号を/に置換
|
package/core/src/nako_logger.mjs
CHANGED
|
@@ -59,7 +59,7 @@ function stringifyPosition(p) {
|
|
|
59
59
|
return `${p.file || ''}${p.line === undefined ? '' : `(${p.line + 1}行目): `}`;
|
|
60
60
|
}
|
|
61
61
|
export function parsePosition(line) {
|
|
62
|
-
const m = line.match(/^l(\d+)
|
|
62
|
+
const m = line.match(/^l(\d+):(.+)/);
|
|
63
63
|
let lineNo = 0;
|
|
64
64
|
let fileName = 'main.nako3';
|
|
65
65
|
if (m) {
|
package/core/src/nako_logger.mts
CHANGED
|
@@ -17,23 +17,23 @@ export class LogLevel {
|
|
|
17
17
|
public static stdout = 6
|
|
18
18
|
|
|
19
19
|
// string to level no
|
|
20
|
-
public static fromS
|
|
20
|
+
public static fromS(levelStr: string): number {
|
|
21
21
|
let level: number = LogLevel.trace
|
|
22
22
|
switch (levelStr) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
case 'all': level = LogLevel.all; break
|
|
24
|
+
case 'trace': level = LogLevel.trace; break
|
|
25
|
+
case 'debug': level = LogLevel.debug; break
|
|
26
|
+
case 'info': level = LogLevel.info; break
|
|
27
|
+
case 'warn': level = LogLevel.warn; break
|
|
28
|
+
case 'error': level = LogLevel.error; break
|
|
29
|
+
case 'stdout': level = LogLevel.stdout; break
|
|
30
|
+
default:
|
|
31
|
+
throw new Error('[NakoLogger] unknown logger level:' + levelStr)
|
|
32
32
|
}
|
|
33
33
|
return level
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
public static toString
|
|
36
|
+
public static toString(level: number): string {
|
|
37
37
|
const levels: string[] = ['all', 'trace', 'debug', 'info', 'warn', 'error', 'stdout']
|
|
38
38
|
return levels[level]
|
|
39
39
|
}
|
|
@@ -62,13 +62,13 @@ type LogListener = (data: LogListenerData) => void;
|
|
|
62
62
|
* エラー位置を日本語で表示する。
|
|
63
63
|
* たとえば `stringifyPosition({ file: "foo.txt", line: 5 })` は `"foo.txt(6行目):"` を出力する。
|
|
64
64
|
*/
|
|
65
|
-
function stringifyPosition
|
|
65
|
+
function stringifyPosition(p: PositionOrNull): string {
|
|
66
66
|
if (!p) { return '' }
|
|
67
67
|
return `${p.file || ''}${p.line === undefined ? '' : `(${p.line + 1}行目): `}`
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
export function parsePosition
|
|
71
|
-
const m = line.match(/^l(\d+)
|
|
70
|
+
export function parsePosition(line: string): Position {
|
|
71
|
+
const m = line.match(/^l(\d+):(.+)/)
|
|
72
72
|
let lineNo = 0
|
|
73
73
|
let fileName = 'main.nako3'
|
|
74
74
|
if (m) {
|
|
@@ -97,17 +97,17 @@ export class NakoLogger {
|
|
|
97
97
|
private listeners: NakoLoggerListener[]
|
|
98
98
|
private logs: string
|
|
99
99
|
private position: string
|
|
100
|
-
public constructor
|
|
100
|
+
public constructor() {
|
|
101
101
|
this.listeners = []
|
|
102
102
|
this.logs = ''
|
|
103
103
|
this.position = ''
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
public getErrorLogs
|
|
106
|
+
public getErrorLogs(): [string, string] {
|
|
107
107
|
return [this.logs.replace(/\s+$/, ''), this.position]
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
public clear
|
|
110
|
+
public clear(): void {
|
|
111
111
|
this.logs = ''
|
|
112
112
|
this.position = ''
|
|
113
113
|
}
|
|
@@ -117,7 +117,7 @@ export class NakoLogger {
|
|
|
117
117
|
* @param levelStr
|
|
118
118
|
* @param callback
|
|
119
119
|
*/
|
|
120
|
-
public addListener
|
|
120
|
+
public addListener(levelStr: string, callback: LogListener): void {
|
|
121
121
|
const level: number = LogLevel.fromS(levelStr)
|
|
122
122
|
this.listeners.push({ level, callback })
|
|
123
123
|
}
|
|
@@ -126,7 +126,7 @@ export class NakoLogger {
|
|
|
126
126
|
* addListenerメソッドで設定したコールバックを取り外す。
|
|
127
127
|
* @param {LogListener} callback
|
|
128
128
|
*/
|
|
129
|
-
public removeListener
|
|
129
|
+
public removeListener(callback: LogListener): void {
|
|
130
130
|
this.listeners = this.listeners.filter((l) => l.callback !== callback)
|
|
131
131
|
}
|
|
132
132
|
|
|
@@ -134,7 +134,7 @@ export class NakoLogger {
|
|
|
134
134
|
* @param {string} message
|
|
135
135
|
* @param {Position | null} position
|
|
136
136
|
*/
|
|
137
|
-
public trace
|
|
137
|
+
public trace(message: string, position: PositionOrNull = null):void {
|
|
138
138
|
this.sendI(LogLevel.trace, `${NakoColors.color.bold}[デバッグ情報(詳細)]${NakoColors.color.reset}${stringifyPosition(position)}${message}`, position)
|
|
139
139
|
}
|
|
140
140
|
|
|
@@ -142,7 +142,7 @@ export class NakoLogger {
|
|
|
142
142
|
* @param {string} message
|
|
143
143
|
* @param {Position | null} position
|
|
144
144
|
*/
|
|
145
|
-
public debug
|
|
145
|
+
public debug(message: string, position: PositionOrNull = null): void {
|
|
146
146
|
this.sendI(LogLevel.debug, `${NakoColors.color.bold}[デバッグ情報]${NakoColors.color.reset}${stringifyPosition(position)}${message}`, position)
|
|
147
147
|
}
|
|
148
148
|
|
|
@@ -150,7 +150,7 @@ export class NakoLogger {
|
|
|
150
150
|
* @param {string} message
|
|
151
151
|
* @param {Position | null} position
|
|
152
152
|
*/
|
|
153
|
-
public info
|
|
153
|
+
public info(message: string, position: PositionOrNull = null): void {
|
|
154
154
|
this.sendI(LogLevel.info, `${NakoColors.color.bold}${NakoColors.color.blue}[情報]${NakoColors.color.reset}${stringifyPosition(position)}${message}`, position)
|
|
155
155
|
}
|
|
156
156
|
|
|
@@ -158,7 +158,7 @@ export class NakoLogger {
|
|
|
158
158
|
* @param {string} message
|
|
159
159
|
* @param {Position | null} position
|
|
160
160
|
*/
|
|
161
|
-
public warn
|
|
161
|
+
public warn(message: string, position: PositionOrNull = null):void {
|
|
162
162
|
this.sendI(LogLevel.warn, `${NakoColors.color.bold}${NakoColors.color.green}[警告]${NakoColors.color.reset}${stringifyPosition(position)}${message}`, position)
|
|
163
163
|
}
|
|
164
164
|
|
|
@@ -166,23 +166,23 @@ export class NakoLogger {
|
|
|
166
166
|
* @param {string | Error} message
|
|
167
167
|
* @param {Position | null} position
|
|
168
168
|
*/
|
|
169
|
-
public error
|
|
169
|
+
public error(message: string | Error | NakoError, position: PositionOrNull = null):void {
|
|
170
170
|
// NakoErrorか判定 (`message instanceof NakoError`では判定できない場合がある)
|
|
171
171
|
if (message instanceof Error && typeof (message as NakoError).type === 'string') {
|
|
172
172
|
// NakoErrorか
|
|
173
173
|
const etype: string = (message as NakoError).type
|
|
174
174
|
switch (etype) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
}
|
|
183
|
-
this.sendI(LogLevel.error, e.message, pos)
|
|
184
|
-
return
|
|
175
|
+
case 'NakoRuntimeError':
|
|
176
|
+
case 'NakoError':
|
|
177
|
+
if (message instanceof NakoError) {
|
|
178
|
+
const e: NakoError = message
|
|
179
|
+
let pos: any = position
|
|
180
|
+
if (pos === null || pos === undefined) {
|
|
181
|
+
pos = { file: e.file, line: e.line || 0, startOffset: 0, endOffset: 0 }
|
|
185
182
|
}
|
|
183
|
+
this.sendI(LogLevel.error, e.message, pos)
|
|
184
|
+
return
|
|
185
|
+
}
|
|
186
186
|
}
|
|
187
187
|
}
|
|
188
188
|
if (message instanceof Error) {
|
|
@@ -196,7 +196,7 @@ export class NakoLogger {
|
|
|
196
196
|
}
|
|
197
197
|
|
|
198
198
|
/** RuntimeErrorを生成する */
|
|
199
|
-
public runtimeError
|
|
199
|
+
public runtimeError(error: any, posStr: string): NakoRuntimeError {
|
|
200
200
|
const e = new NakoRuntimeError(error, posStr)
|
|
201
201
|
return e
|
|
202
202
|
}
|
|
@@ -205,18 +205,18 @@ export class NakoLogger {
|
|
|
205
205
|
* @param {string} message
|
|
206
206
|
* @param {Position | null} position
|
|
207
207
|
*/
|
|
208
|
-
public stdout
|
|
208
|
+
public stdout(message: string, position: PositionOrNull = null): void {
|
|
209
209
|
this.sendI(LogLevel.stdout, `${message}`, position)
|
|
210
210
|
}
|
|
211
211
|
|
|
212
212
|
/** 指定したlevelのlistenerにメッセージを送る。htmlやbrowserConsoleは無ければnodeConsoleから生成する。 */
|
|
213
|
-
public send
|
|
213
|
+
public send(levelStr: string, nodeConsole: string, position: PositionOrNull, html: string|null = null, browserConsole: [string, string] | null = null): void {
|
|
214
214
|
const i = LogLevel.fromS(levelStr)
|
|
215
215
|
this.sendI(i, nodeConsole, position, html, browserConsole)
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
/** 指定したlevelのlistenerにメッセージを送る。htmlやbrowserConsoleは無ければnodeConsoleから生成する。 */
|
|
219
|
-
public sendI
|
|
219
|
+
public sendI(level: number, nodeConsole: string, position: PositionOrNull, html: string|null = null, browserConsole: [string, string] | null = null): void {
|
|
220
220
|
const makeData = () => {
|
|
221
221
|
// nodeConsoleからnoColor, nodeCondoleなどの形式を生成する。
|
|
222
222
|
const formats = NakoColors.convertColorTextFormat(nodeConsole)
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
1
|
/**
|
|
3
2
|
* nadesiko v3 parser
|
|
4
3
|
*/
|
|
@@ -341,7 +340,7 @@ export class NakoParser extends NakoParserBase {
|
|
|
341
340
|
else {
|
|
342
341
|
throw NakoSyntaxError.fromNode('関数の属性の指定が正しくありません。『{』と『}』で囲む必要があります。', def);
|
|
343
342
|
}
|
|
344
|
-
if (funcAttribute
|
|
343
|
+
if (funcAttribute !== null) {
|
|
345
344
|
if (funcAttribute.value === '公開') {
|
|
346
345
|
isExport = true;
|
|
347
346
|
}
|
|
@@ -533,7 +532,7 @@ export class NakoParser extends NakoParserBase {
|
|
|
533
532
|
return null;
|
|
534
533
|
}
|
|
535
534
|
const mosi = this.get(); // skip もし
|
|
536
|
-
if (mosi
|
|
535
|
+
if (mosi === null) {
|
|
537
536
|
return null;
|
|
538
537
|
}
|
|
539
538
|
while (this.check('comma')) {
|
|
@@ -1140,7 +1139,7 @@ export class NakoParser extends NakoParserBase {
|
|
|
1140
1139
|
}
|
|
1141
1140
|
if (vFrom === null || vTo === null) {
|
|
1142
1141
|
// 『AからBの範囲を繰り返す』構文のとき (#1704)
|
|
1143
|
-
if (vFrom
|
|
1142
|
+
if (vFrom === null && vTo && (vTo.type === 'func' && vTo.name === '範囲')) {
|
|
1144
1143
|
// ok
|
|
1145
1144
|
}
|
|
1146
1145
|
else {
|
|
@@ -1745,7 +1744,7 @@ export class NakoParser extends NakoParserBase {
|
|
|
1745
1744
|
this.modName = space;
|
|
1746
1745
|
}
|
|
1747
1746
|
const isexport = this.isExportStack.pop();
|
|
1748
|
-
if (isexport
|
|
1747
|
+
if (isexport !== null && isexport !== undefined) {
|
|
1749
1748
|
this.isExportDefault = isexport;
|
|
1750
1749
|
}
|
|
1751
1750
|
}
|