読者です 読者をやめる 読者になる 読者になる

コンソールに文字でAscii Artを出力する asciify がイノベーティブな件

※ 携帯から見ると崩れてたので修正しました。

アプリケーションをコンソールから起動させた時に Ascii Artが出ると心の癒しになりますよね。

毎回毎回のDaily ルーチンワークにちょっとした刺激を。
そんな心の健康を保つイノベーティブな AA 出力ツール、asciifyを見つけたので紹介します。

まぁ何はともあれデモをご覧ください。

$ asciify "Hello World" -f larry3d

f:id:yosuke_furukawa:20130608230245p:plain
3Dで出力しました。

他にも色々フォントがあります。

スターウォーズ

$ asciify "Hello World" -f starwars

f:id:yosuke_furukawa:20130608230541p:plain


全て調べるのであれば

$ asciify "Hello" -a

ってやると全部のフォントが出てきます。
100種類くらいあるので良い感じのやつを探すといいかもしれません。

f:id:yosuke_furukawa:20130608230719p:plain

インストールはnode.jsが入っていれば超簡単。

$ npm install asciify -g

とするだけでインストールできます。

組み込んで利用することもできるよ!

asciifyはnode.jsのモジュールなので、組み込んで利用することもできます。

var asciify = require('asciify');
asciify("HelloWorld", {font: 'starwars'}, function(err, msg) {
  if(err) return;
  console.log(msg);
});

あと、ログに顔文字を出すと捗る、という話をしてた方がいたので、それに倣ってasciifyを使って顔文字connectのログを出してみた。

f:id:yosuke_furukawa:20130608161014p:plain

これは、、、捗るかも。。。

実際に使うなら、以下のようなconnect用のモジュールを作っておいて

var asciify = require('asciify');

var aafy = function() {
  return function (req, res, next) {
    var end = res.end;
    res.end = function(chunk, enc) {
        res.end = end;
        res.end(chunk, enc);
        var color = 32;
        var emoticon = '(^-^)';
        if (res.statusCode >= 500) color = 31, emoticon = '(T-T)';
        else if (res.statusCode >= 400) color = 33, emoticon = '(-_-;)';

        asciify(res.statusCode+emoticon, {font: 'starwars'}, function(err, msg) {
          console.log('\033[' + color + 'm' + msg + '\033[39m');
        });
    };
    next();
  };
};

exports.aafy = aafy;

expressのuseする所に書く。

...
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());

// express loggerの直前辺りが良い。
var aa = require('./aafy.js');
app.use(aa.aafy());

app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
...

asciifyの欠点

ただこのasciify、マルチバイト文字を入力することはできません。
キタ━とかやりたいとおもっても入力するとエラーになります。

普通に入力することはできないんですが、asciifyにはkatakanaっていうフォントがあってそれ使うとそれっぽいことができます。
この場合、fontは固定されちゃいますが、キタ━はできます。

$ asciify "GP----" -f katakana
# #        #
 #   #    #######
# # #    #     #
   #    # #   #   ##### ##### ##### ##### #####
  # #      ###
 #   #    ##
      # ##

アルファベットとカタカナの対応表はココにあります。

asciify(github)