diff --git a/exec/load/tdfonts_lib.js b/exec/load/tdfonts_lib.js index 676baf2022e9e1979ff232994fbf936549789ed9..52fb826c6a53fbfc6f8e1c0876e976ead5ba038a 100755 --- a/exec/load/tdfonts_lib.js +++ b/exec/load/tdfonts_lib.js @@ -36,7 +36,7 @@ function loadfont(fn_arg) { // Construct font file path if (fn_arg.indexOf('/') === -1) { - if (fn_arg.indexOf('.') !== -1) { + if (file_getext(fn_arg)) { fn = file_getcase(FONT_DIR + fn_arg); } else { fn = file_getcase(FONT_DIR + fn_arg + "." + FONT_EXT); @@ -339,17 +339,19 @@ function reset_color() return "\x1b[0m"; } +function getlist() { + return directory(FONT_DIR + "*." + FONT_EXT); // Get all .tdf files +} + function output(str, font) { var orgfont = font; while (true) { try { if (!font) { // Random font file selection - var fontDir = FONT_DIR; - var files = directory(fontDir + "/*.tdf"); // Get all .tdf files + var files = getlist(); if (files.length > 0) { var randomIndex = random((files.length)+1); - var filename = file_getname(files[randomIndex]); - font = filename.replace(/\.tdf$/i, ""); + font = file_getname(files[randomIndex]); } } if (typeof font == "string") diff --git a/exec/tdfiglet.js b/exec/tdfiglet.js index 579edb9fbc9f4ab9279156799b1761537e0af135..3b3e36108e75317efb26a78a415e2e7f765fd3f4 100644 --- a/exec/tdfiglet.js +++ b/exec/tdfiglet.js @@ -22,6 +22,8 @@ function usage() { writeln(" -n No blank line between wrapped output lines"); writeln(" -W Always word-wrap the output"); writeln(" -i Print font details"); + writeln(" -l Loop through the available fonts"); + writeln(" -p Pause between fonts"); writeln(" -r Use random font and/or index (if not specified with -x)"); writeln(" -R Use random font and auto-retry upon exception"); writeln(" -h Print usage"); @@ -30,7 +32,8 @@ function usage() { } var fontfile = null; - +var loopfonts = false; +var pause = false; var input_string = ""; for(i = 0; i < argv.length; ++i) { var arg = argv[i]; @@ -69,6 +72,10 @@ for(i = 0; i < argv.length; ++i) { tdf.opt.utf8 = true; } else if (arg === "-i") { tdf.opt.info = true; + } else if (arg === "-l") { + loopfonts = true; + } else if (arg === "-p") { + pause = true; } else if (arg === "-r") { tdf.opt.random = true; } else if (arg === "-R") { @@ -85,10 +92,23 @@ for(i = 0; i < argv.length; ++i) { } } -if (!fontfile && !tdf.opt.random) +if (!fontfile && !tdf.opt.random && !loopfonts) usage(); if (!input_string) usage(); -tdf.printstr(input_string, fontfile); +if (loopfonts) { + var list = tdf.getlist(); + for (var i in list) { + if (pause && i > 0) + prompt("Hit enter"); + try { + tdf.printstr(input_string, list[i]); + } catch(e) { + if (tdf.opt.info) + print("exception: " + e); + } + } +} else + tdf.printstr(input_string, fontfile);