#!/usr/bin/env node /** * @fileoverview Test the sprintf() function * @author Jeff Parsons * @copyright © Jeff Parsons 2012-2017 * @suppress {missingProperties} * * This file is part of PCjs, a computer emulation software project at . * * PCjs is free software: you can redistribute it and/or modify it under the terms of the * GNU General Public License as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. * * PCjs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with PCjs. If not, * see . * * You are required to include the above copyright notice in every modified copy of this work * and to display that copyright notice when the software starts running; see COPYRIGHT in * . * * Some PCjs files also attempt to load external resource files, such as character-image files, * ROM files, and disk image files. Those external resource files are not considered part of PCjs * for purposes of the GNU General Public License, and the author does not claim any copyright * as to their contents. */ "use strict"; var repl = require("repl"); var Defines = require("../lib/defines"); var Str = require("../lib/strlib"); /** * printf(sFormat, sValue) * * @param {string} sFormat * @param {number} sValue * @return {boolean} */ function printf(sFormat, sValue) { console.log('printf("' + sFormat + '", ' + sValue + "): '" + Str.sprintf(sFormat, +sValue) + "'"); return true; } /** * onCommand(cmd, context, filename, callback) * * @param {string} cmd * @param {Object} context * @param {string} filename * @param {function(Object|null, Object)} callback */ var onCommand = function (cmd, context, filename, callback) { var result = false; var match = cmd.match(/([^ ]*) *(.*?)\s*$/); if (match && match[1]) result = printf(match[1], match[2]); callback(null, result); }; repl.start({ prompt: "printf> ", input: process.stdin, output: process.stdout, eval: onCommand });