From c77cf00a60d489aaf3ceb45eb9f08ba7a85d2097 Mon Sep 17 00:00:00 2001 From: olizilla Date: Sat, 23 Feb 2013 14:44:38 +0000 Subject: [PATCH 1/9] Clean up figlet font loading for node --- figlet-node.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/figlet-node.js b/figlet-node.js index fe4b1e4..1f16184 100644 --- a/figlet-node.js +++ b/figlet-node.js @@ -8,13 +8,23 @@ * http://github.com/scottgonzalez/figlet-js */ +var fs = require("fs"); +var path = require('path'); var Figlet = require("./figlet").Figlet; Figlet.loadFont = function(name, fn) { - require("fs").readFile("./fonts/" + name + ".flf", "utf-8", function(err, contents) { + + var fontFileName = name + ".flf"; + + var filePath = path.resolve(__dirname, "fonts", fontFileName); + + fs.readFile(filePath, "utf8", function(err, contents) { + + if (err) {throw err;} + // console.log('figlet-node.loadFont', err, contents); + fn(contents); }); }; exports.Figlet = Figlet; - From 48f6ae8895b6edc75c574d94fa00e0b79f3ecda3 Mon Sep 17 00:00:00 2001 From: olizilla Date: Sat, 23 Feb 2013 18:35:00 +0000 Subject: [PATCH 2/9] Adds font-list.txt --- fonts/font-list.txt | 148 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 fonts/font-list.txt diff --git a/fonts/font-list.txt b/fonts/font-list.txt new file mode 100644 index 0000000..d6bb938 --- /dev/null +++ b/fonts/font-list.txt @@ -0,0 +1,148 @@ +3-d.flf +3x5.flf +5lineoblique.flf +acrobatic.flf +alligator.flf +alligator2.flf +alphabet.flf +avatar.flf +banner.flf +banner3-D.flf +banner3.flf +banner4.flf +barbwire.flf +basic.flf +bell.flf +big.flf +bigchief.flf +binary.flf +block.flf +bubble.flf +bulbhead.flf +calgphy2.flf +caligraphy.flf +catwalk.flf +chunky.flf +coinstak.flf +colossal.flf +computer.flf +contessa.flf +contrast.flf +cosmic.flf +cosmike.flf +cricket.flf +cursive.flf +cyberlarge.flf +cybermedium.flf +cybersmall.flf +diamond.flf +digital.flf +doh.flf +doom.flf +dotmatrix.flf +drpepper.flf +eftichess.flf +eftifont.flf +eftipiti.flf +eftirobot.flf +eftitalic.flf +eftiwall.flf +eftiwater.flf +epic.flf +fender.flf +font-list.txt +fourtops.flf +fuzzy.flf +goofy.flf +gothic.flf +graffiti.flf +hollywood.flf +invita.flf +isometric1.flf +isometric2.flf +isometric3.flf +isometric4.flf +italic.flf +ivrit.flf +jazmine.flf +jerusalem.flf +katakana.flf +kban.flf +larry3d.flf +lcd.flf +lean.flf +letters.flf +linux.flf +lockergnome.flf +madrid.flf +marquee.flf +maxfour.flf +mike.flf +mini.flf +mirror.flf +mnemonic.flf +morse.flf +moscow.flf +nancyj-fancy.flf +nancyj-underlined.flf +nancyj.flf +nipples.flf +ntgreek.flf +o8.flf +ogre.flf +pawp.flf +peaks.flf +pebbles.flf +pepper.flf +poison.flf +puffy.flf +pyramid.flf +relief.flf +relief2.flf +rev.flf +roman.flf +rot13.flf +rounded.flf +rowancap.flf +rozzo.flf +runic.flf +runyc.flf +sblood.flf +script.flf +serifcap.flf +shadow.flf +short.flf +slant.flf +slide.flf +slscript.flf +small.flf +smisome1.flf +smkeyboard.flf +smscript.flf +smshadow.flf +smslant.flf +smtengwar.flf +speed.flf +stampatello.flf +standard.flf +starwars.flf +stellar.flf +stop.flf +straight.flf +tanja.flf +tengwar.flf +term.flf +thick.flf +thin.flf +threepoint.flf +ticks.flf +ticksslant.flf +tinker-toy.flf +tombstone.flf +trek.flf +tsalagi.flf +twopoint.flf +univers.flf +usaflag.flf +wavy.flf +weird.flf From 594383655b9e9a098122bf97458245e9242477a3 Mon Sep 17 00:00:00 2001 From: olizilla Date: Tue, 5 Mar 2013 16:09:48 +0000 Subject: [PATCH 3/9] Removes rogue console.log and tidies up var namimg --- figlet-node.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/figlet-node.js b/figlet-node.js index 1f16184..2eb4bf1 100644 --- a/figlet-node.js +++ b/figlet-node.js @@ -14,14 +14,13 @@ var Figlet = require("./figlet").Figlet; Figlet.loadFont = function(name, fn) { - var fontFileName = name + ".flf"; + var fileName = name + ".flf"; - var filePath = path.resolve(__dirname, "fonts", fontFileName); + var filePath = path.resolve(__dirname, "fonts", fileName); fs.readFile(filePath, "utf8", function(err, contents) { - if (err) {throw err;} - // console.log('figlet-node.loadFont', err, contents); + if (err) { throw err; } fn(contents); }); From 777ae19cc27e92dbfe6a6eb2f1eb902ceee35129 Mon Sep 17 00:00:00 2001 From: olizilla Date: Tue, 5 Mar 2013 16:38:13 +0000 Subject: [PATCH 4/9] Removes unused font-list.txt --- fonts/font-list.txt | 148 -------------------------------------------- 1 file changed, 148 deletions(-) delete mode 100644 fonts/font-list.txt diff --git a/fonts/font-list.txt b/fonts/font-list.txt deleted file mode 100644 index d6bb938..0000000 --- a/fonts/font-list.txt +++ /dev/null @@ -1,148 +0,0 @@ -3-d.flf -3x5.flf -5lineoblique.flf -acrobatic.flf -alligator.flf -alligator2.flf -alphabet.flf -avatar.flf -banner.flf -banner3-D.flf -banner3.flf -banner4.flf -barbwire.flf -basic.flf -bell.flf -big.flf -bigchief.flf -binary.flf -block.flf -bubble.flf -bulbhead.flf -calgphy2.flf -caligraphy.flf -catwalk.flf -chunky.flf -coinstak.flf -colossal.flf -computer.flf -contessa.flf -contrast.flf -cosmic.flf -cosmike.flf -cricket.flf -cursive.flf -cyberlarge.flf -cybermedium.flf -cybersmall.flf -diamond.flf -digital.flf -doh.flf -doom.flf -dotmatrix.flf -drpepper.flf -eftichess.flf -eftifont.flf -eftipiti.flf -eftirobot.flf -eftitalic.flf -eftiwall.flf -eftiwater.flf -epic.flf -fender.flf -font-list.txt -fourtops.flf -fuzzy.flf -goofy.flf -gothic.flf -graffiti.flf -hollywood.flf -invita.flf -isometric1.flf -isometric2.flf -isometric3.flf -isometric4.flf -italic.flf -ivrit.flf -jazmine.flf -jerusalem.flf -katakana.flf -kban.flf -larry3d.flf -lcd.flf -lean.flf -letters.flf -linux.flf -lockergnome.flf -madrid.flf -marquee.flf -maxfour.flf -mike.flf -mini.flf -mirror.flf -mnemonic.flf -morse.flf -moscow.flf -nancyj-fancy.flf -nancyj-underlined.flf -nancyj.flf -nipples.flf -ntgreek.flf -o8.flf -ogre.flf -pawp.flf -peaks.flf -pebbles.flf -pepper.flf -poison.flf -puffy.flf -pyramid.flf -relief.flf -relief2.flf -rev.flf -roman.flf -rot13.flf -rounded.flf -rowancap.flf -rozzo.flf -runic.flf -runyc.flf -sblood.flf -script.flf -serifcap.flf -shadow.flf -short.flf -slant.flf -slide.flf -slscript.flf -small.flf -smisome1.flf -smkeyboard.flf -smscript.flf -smshadow.flf -smslant.flf -smtengwar.flf -speed.flf -stampatello.flf -standard.flf -starwars.flf -stellar.flf -stop.flf -straight.flf -tanja.flf -tengwar.flf -term.flf -thick.flf -thin.flf -threepoint.flf -ticks.flf -ticksslant.flf -tinker-toy.flf -tombstone.flf -trek.flf -tsalagi.flf -twopoint.flf -univers.flf -usaflag.flf -wavy.flf -weird.flf From ed540671c781f0d0f5deb939e299c224eec353da Mon Sep 17 00:00:00 2001 From: olizilla Date: Tue, 5 Mar 2013 16:43:24 +0000 Subject: [PATCH 5/9] 10% more awesome readme banner --- readme.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/readme.md b/readme.md index e26e3b1..620ed5e 100644 --- a/readme.md +++ b/readme.md @@ -1,11 +1,9 @@ - _______ _________ _______ _ _______ _________ _________ _______ - ( ____ \\__ __/( ____ \( \ ( ____ \\__ __/ \__ _/( ____ \ - | ( \/ ) ( | ( \/| ( | ( \/ ) ( ) ( | ( \/ - | (__ | | | | | | | (__ | | _____ | | | (_____ - | __) | | | | ____ | | | __) | | (_____) | | (_____ ) - | ( | | | | \_ )| | | ( | | | | ) | - | ) ___) (___| (___) || (____/\| (____/\ | | |\_) ) /\____) | - |/ \_______/(_______)(_______/(_______/ )_( (____/ \_______) + ___________.___ ________ .____ ______________________ ____. _________ + \_ _____/| | / _____/ | | \_ _____/\__ ___/ | | / _____/ + | __) | |/ \ ___ | | | __)_ | | ______ | | \_____ \ + | \ | |\ \_\ \| |___ | \ | | /_____/ /\__| | / \ + \___ / |___| \______ /|_______ \/_______ / |____| \________|/_______ / + \/ \/ \/ \/ \/ [Figlet](http://www.figlet.org/) is a program for making large letters out of ordinary text. From a070a2d7a5c302134af3dfbf4bb705e463efa7f9 Mon Sep 17 00:00:00 2001 From: olizilla Date: Wed, 3 Apr 2013 23:24:22 +0100 Subject: [PATCH 6/9] Updated for node to allow error arg in callback. Breaks jQuery support. --- figlet-node.js | 6 ++---- figlet.js | 14 +++++++++++--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/figlet-node.js b/figlet-node.js index 2eb4bf1..ab96f16 100644 --- a/figlet-node.js +++ b/figlet-node.js @@ -1,4 +1,4 @@ -/** + /** * Figlet JS node.js module * * Copyright (c) 2010 Scott González @@ -20,9 +20,7 @@ Figlet.loadFont = function(name, fn) { fs.readFile(filePath, "utf8", function(err, contents) { - if (err) { throw err; } - - fn(contents); + fn(err, contents); }); }; diff --git a/figlet.js b/figlet.js index bb8f7ab..b767fd7 100644 --- a/figlet.js +++ b/figlet.js @@ -19,7 +19,11 @@ var Figlet = (typeof exports !== "undefined" ? exports : window).Figlet = { return; } - Figlet.loadFont(name, function(defn) { + Figlet.loadFont(name, function(err, defn) { + if (err) { + fn(err); + return; + } Figlet._parseFont(name, defn, fn); }); }, @@ -59,7 +63,11 @@ var Figlet = (typeof exports !== "undefined" ? exports : window).Figlet = { }, write: function(str, font, fn) { - Figlet.parseFont(font, function() { + Figlet.parseFont(font, function(err) { + if (err) { + fn(err); + return; + } var chars = [], result = ""; for (var i = 0, len = str.length; i < len; i++) { @@ -71,7 +79,7 @@ var Figlet = (typeof exports !== "undefined" ? exports : window).Figlet = { } result += "\n"; } - fn(result); + fn(null, result); }); } }; From 0124f9497506b7e988b3ab8674d96fa10d797f1e Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Fri, 7 Jun 2013 15:48:50 +0100 Subject: [PATCH 7/9] Use unknown character character. Add test framework, test for unknown character character. --- figlet.js | 6 ++++++ package.json | 23 +++++++++++++++++++++++ readme.md | 2 ++ test/figlet.js | 17 +++++++++++++++++ 4 files changed, 48 insertions(+) create mode 100644 package.json create mode 100644 test/figlet.js diff --git a/figlet.js b/figlet.js index b767fd7..41e32dd 100644 --- a/figlet.js +++ b/figlet.js @@ -54,6 +54,12 @@ var Figlet = (typeof exports !== "undefined" ? exports : window).Figlet = { start = (char - 32) * height, charDefn = [], i; + + // Is char defined? + if (!fontDefn.defn[start]) { + start = (" ".charCodeAt(0) - 32) * height; + } + for (i = 0; i < height; i++) { charDefn[i] = fontDefn.defn[start + i] .replace(/@/g, "") diff --git a/package.json b/package.json new file mode 100644 index 0000000..eae7689 --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "figlet-js", + "version": "0.0.0", + "description": "Figlet is a program for making large letters out of ordinary text.", + "main": "figlet-node.js", + "scripts": { + "test": "nodeunit test" + }, + "repository": { + "type": "git", + "url": "git://github.com/scottgonzalez/figlet-js.git" + }, + "author": "Scott Gonzalez", + "license": "MIT", + "readmeFilename": "readme.md", + "bugs": { + "url": "https://github.com/scottgonzalez/figlet-js/issues" + }, + "dependencies": {}, + "devDependencies": { + "nodeunit": "~0.8.0" + } +} diff --git a/readme.md b/readme.md index 620ed5e..d91493c 100644 --- a/readme.md +++ b/readme.md @@ -5,6 +5,8 @@ \___ / |___| \______ /|_______ \/_______ / |____| \________|/_______ / \/ \/ \/ \/ \/ +[![Build Status](https://travis-ci.org/olizilla/figlet-js.png?branch=master)](https://travis-ci.org/olizilla/figlet-js) + [Figlet](http://www.figlet.org/) is a program for making large letters out of ordinary text. Figlet-JS is a JavaScript implementation of a FIGdriver and is available as a Node module and a jQuery plugin. diff --git a/test/figlet.js b/test/figlet.js new file mode 100644 index 0000000..04afcaf --- /dev/null +++ b/test/figlet.js @@ -0,0 +1,17 @@ +var figlet = require("../figlet-node.js").Figlet; + +module.exports = { + + // Figlet should replace uknown characters in the font with an unknown character character - a space character + // TODO: Expose unknown character character as an option? + "Test render unknown characters": function (test) { + + test.expect(2); + + figlet.write("(ノಠ益ಠ)ノ彡", "graffiti", function (er, text) { + test.ifError(er); + test.equal(" ___ ___ \n / / \\ \\ \n / / \\ \\ \n ( ( ) ) \n \\ \\ / / \n \\__\\ /__/ \n", text); + test.done(); + }); + } +}; \ No newline at end of file From 65a45fb21867323ca607ac5f8f8f7273f55f8888 Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Fri, 7 Jun 2013 15:50:49 +0100 Subject: [PATCH 8/9] Travis config --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..87f8cd9 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +node_js: + - "0.10" \ No newline at end of file From 32cdc42781a8e359bffb62b2cc9680e9f490c425 Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Fri, 7 Jun 2013 17:33:07 +0100 Subject: [PATCH 9/9] Falsey value input validation --- figlet.js | 8 ++++++-- test/figlet.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/figlet.js b/figlet.js index 41e32dd..32dcbd3 100644 --- a/figlet.js +++ b/figlet.js @@ -67,8 +67,12 @@ var Figlet = (typeof exports !== "undefined" ? exports : window).Figlet = { } return fontDefn.char[char] = charDefn; }, - + write: function(str, font, fn) { + if (!str) { + return fn(null, ""); + } + Figlet.parseFont(font, function(err) { if (err) { fn(err); @@ -79,7 +83,7 @@ var Figlet = (typeof exports !== "undefined" ? exports : window).Figlet = { for (var i = 0, len = str.length; i < len; i++) { chars[i] = Figlet.parseChar(str.charCodeAt(i), font); } - for (i = 0, height = chars[0].length; i < height; i++) { + for (i = 0; i < chars[0].length; i++) { for (var j = 0; j < len; j++) { result += chars[j][i]; } diff --git a/test/figlet.js b/test/figlet.js index 04afcaf..cb5d97f 100644 --- a/test/figlet.js +++ b/test/figlet.js @@ -13,5 +13,49 @@ module.exports = { test.equal(" ___ ___ \n / / \\ \\ \n / / \\ \\ \n ( ( ) ) \n \\ \\ / / \n \\__\\ /__/ \n", text); test.done(); }); + }, + + "Test render empty string": function (test) { + + test.expect(2); + + figlet.write("", "standard", function (er, text) { + test.ifError(er); + test.strictEqual("", text); + test.done(); + }); + }, + + "Test render undefined": function (test) { + + test.expect(2); + + figlet.write(undefined, "standard", function (er, text) { + test.ifError(er); + test.strictEqual("", text); + test.done(); + }); + }, + + "Test render null": function (test) { + + test.expect(2); + + figlet.write(null, "standard", function (er, text) { + test.ifError(er); + test.strictEqual("", text); + test.done(); + }); + }, + + "Test render false": function (test) { + + test.expect(2); + + figlet.write(false, "standard", function (er, text) { + test.ifError(er); + test.strictEqual("", text); + test.done(); + }); } }; \ No newline at end of file