diff --git a/script/inkjs-compiler.ts b/script/inkjs-compiler.ts index 499cafb9..aa2c4458 100644 --- a/script/inkjs-compiler.ts +++ b/script/inkjs-compiler.ts @@ -8,6 +8,8 @@ var path = require('path'); import * as fs from "fs"; import { ErrorHandler } from '../src/engine/Error'; +const BOM = '\u{feff}'; + const help = process.argv.includes("-h"); if(help){ process.stdout.write(` @@ -36,30 +38,39 @@ if(!inputFile){ process.stderr.write("No input file specified. -h for help\n"); process.exit(1); } -outputfile = outputfile || inputFile+".json"; - -const fileHandler = new PosixFileHandler(path.dirname(inputFile)); -const mainInk = fileHandler.LoadInkFileContents(inputFile); - -const errorHandler: ErrorHandler = (message, errorType) => { - process.stderr.write(message + "\n"); -}; -const options = new CompilerOptions( - inputFile, [], countAllVisit, errorHandler, fileHandler -) - -const c = new Compiler(mainInk, options); -const rstory = c.Compile(); -if (!rstory) { - process.stderr.write("*** Compilation failed ***\n"); - process.exit(1); -} -const jsonStory = rstory.ToJson() +let jsonStory: string = ""; + +if(!inputFile.endsWith(".json")){ + outputfile = outputfile || inputFile+".json"; + + const fileHandler = new PosixFileHandler(path.dirname(inputFile)); + const mainInk = fileHandler.LoadInkFileContents(inputFile); + + const errorHandler: ErrorHandler = (message, errorType) => { + process.stderr.write(message + "\n"); + }; + const options = new CompilerOptions( + inputFile, [], countAllVisit, errorHandler, fileHandler + ) -if(jsonStory && write){ - const BOM = '\u{feff}'; - fs.writeFileSync(outputfile, BOM+jsonStory); + const c = new Compiler(mainInk, options); + const rstory = c.Compile(); + if (!rstory) { + process.stderr.write("*** Compilation failed ***\n"); + process.exit(1); + } + let jsonified: string | void; + + if((jsonified = rstory.ToJson())){ + jsonStory = jsonified + } + + if(jsonStory && write){ + fs.writeFileSync(outputfile, BOM+jsonStory); + } +}else{ + jsonStory = fs.readFileSync(inputFile,"utf-8").replace(BOM, "") } if(jsonStory && play){ diff --git a/src/engine/ControlCommand.ts b/src/engine/ControlCommand.ts index bae14fa0..7a33a399 100644 --- a/src/engine/ControlCommand.ts +++ b/src/engine/ControlCommand.ts @@ -96,7 +96,7 @@ export class ControlCommand extends InkObject { return new ControlCommand(ControlCommand.CommandType.EndTag); } public toString() { - return this.commandType.toString(); + return "ControlCommand " + this.commandType.toString(); } } diff --git a/src/engine/Void.ts b/src/engine/Void.ts index b2255a02..07cf45f6 100644 --- a/src/engine/Void.ts +++ b/src/engine/Void.ts @@ -1,3 +1,7 @@ import { InkObject } from "./Object"; -export class Void extends InkObject {} +export class Void extends InkObject { + public toString() { + return "Void"; + } +}