一昨日、15時ぐらいまでは普通だったが16時ごろから急激に悪寒、歯がガタガタしてどうしようもなく、18時ごろに会社を出た。電車に乗るうちに悪寒から吐き気になって途中下車。トイレに行って吐こうとしてみたが吐けず、とりあえず売店で買い物してビニール袋を用意しつつなんとか帰宅した。帰宅してからは吐き気よりもとにかく頭痛がひどくなった。帰宅した時点で体温は38℃前後だった。

仕事で対応が必要だったのでしかたなく VPN 繋いで居間で半分寝ながら1時間ぐらいごとに対応していたが、こっちで対応が必要になるタイミングがさっぱりわからずイライラした。おかげで悪夢倍増しつつだらだら夜中まで対応するハメになった。その日は結局居間で寝たが尻が痛くなった。

日があけて9時近くになったので病院に行って診察をうけたが今一原因はわからなかった。インフルエンザではなかった。鼻も喉もおかしくなく、下痢もないので、薬はロキソニンの処方だけだった。

とりあえず勤怠で休みますというメールをしたが、あいかわらず仕事でタイミング不明の対応が必要だったので1時間ぐらいごとにチェックして対応していた。

午後からは熱が下がった。たぶん仕事でイライラしすぎたせいで熱出たんだと思う。仕事ほんとしたくない。

Perl の Locale::Maketext::Lexicon::Gettext は以下のような Gettext ライクなフォーマットを扱うが、同じようなことを JS でしたいとき

%1 さん、こんにちは
%quant(%1,user,users)
  • %function() は任意の関数が呼べる感じなので、JS でもそのようにしておく。
  • numf は実装してない。
  • Locale.data= { ... } みたいなのが言語別に完全にわかれているのを想定してる
var Locale = {
    loc : function (msgid, arg) {
        var args = Array.prototype.slice.call(arguments, 0);
        var text = Locale.data[msgid];
        if (text) {
            if (/%/.test(text)) {
                text = text.replace(/%(\d)/g, function (_, n) {
                    return args[n];
                });
                text = text.replace(/%([a-z*#]+)\(([^\)]+)\)/g, function (_, func, args) {
                    if (func == '#') func = 'numf';
                    if (func == '*') func = 'quant';
                    args = args.split(/,/);
                    return Locale[func].apply(null, args);
                });
                return text;
            } else {
                return text;
            }
        } else {
            return msgid;
        }
    },

    quant : function (number, singular, plural, negative) {
        if (number == 0 && negative) { // no warnings
            return negative;
        } else
        if (number == 1) {
            return singular;
        } else
        if (plural) {
            return plural;
        } else {
            return singular + 's';
        }
    },

    numf : function (number) {
        return number; // XXX
    }
};