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 diff --git a/figlet-node.js b/figlet-node.js index fe4b1e4..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 @@ -8,13 +8,20 @@ * 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) { - fn(contents); + + var fileName = name + ".flf"; + + var filePath = path.resolve(__dirname, "fonts", fileName); + + fs.readFile(filePath, "utf8", function(err, contents) { + + fn(err, contents); }); }; exports.Figlet = Figlet; - diff --git a/figlet.js b/figlet.js index bb8f7ab..32dcbd3 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); }); }, @@ -50,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, "") @@ -57,21 +67,29 @@ var Figlet = (typeof exports !== "undefined" ? exports : window).Figlet = { } return fontDefn.char[char] = charDefn; }, - + write: function(str, font, fn) { - Figlet.parseFont(font, function() { + if (!str) { + return fn(null, ""); + } + + Figlet.parseFont(font, function(err) { + if (err) { + fn(err); + return; + } var chars = [], result = ""; 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]; } result += "\n"; } - fn(result); + fn(null, result); }); } }; 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 e26e3b1..d91493c 100644 --- a/readme.md +++ b/readme.md @@ -1,11 +1,11 @@ - _______ _________ _______ _ _______ _________ _________ _______ - ( ____ \\__ __/( ____ \( \ ( ____ \\__ __/ \__ _/( ____ \ - | ( \/ ) ( | ( \/| ( | ( \/ ) ( ) ( | ( \/ - | (__ | | | | | | | (__ | | _____ | | | (_____ - | __) | | | | ____ | | | __) | | (_____) | | (_____ ) - | ( | | | | \_ )| | | ( | | | | ) | - | ) ___) (___| (___) || (____/\| (____/\ | | |\_) ) /\____) | - |/ \_______/(_______)(_______/(_______/ )_( (____/ \_______) + ___________.___ ________ .____ ______________________ ____. _________ + \_ _____/| | / _____/ | | \_ _____/\__ ___/ | | / _____/ + | __) | |/ \ ___ | | | __)_ | | ______ | | \_____ \ + | \ | |\ \_\ \| |___ | \ | | /_____/ /\__| | / \ + \___ / |___| \______ /|_______ \/_______ / |____| \________|/_______ / + \/ \/ \/ \/ \/ + +[![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. diff --git a/test/figlet.js b/test/figlet.js new file mode 100644 index 0000000..cb5d97f --- /dev/null +++ b/test/figlet.js @@ -0,0 +1,61 @@ +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(); + }); + }, + + "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