ウクレレ記法をはてな以外で使う
ウクレレ記法ってステキですよね。
簡単にコードダイアグラムが書けちゃう。はてな民大勝利!
だけど、「ウクレレ記法を使いたい…!でも、はてな民じゃないし。。。」という人のために、はてな以外でもウクレレ記法を使えるようにjavascriptを書いてみました。
(function (w) { var u = "<img src=\"http://hatena.g.hatena.ne.jp/", c = "images/ukulele/$1.png\" alt=\"$0\" />", d = "ukulele?chord=$1&flets=$2\" alt=\"$0\" />", m = "|:|1234-_()", l = { "|:" : "repeat_start", ":|" : "repeat_end", "1" : "repeat_1", "2" : "repeat_2", "3" : "repeat_3", "4" : "repeat_4", "-" : "repeat_last", "_" : "space", "(" : "left_bracket", ")" : "right_bracket"}; (function (f) { if (typeof w.addEventListener == 'function') { w.addEventListener('load', f, false); return true } else if (typeof w.attachEvent == 'object') { w.attachEvent('onload', f); return true } var o = w.onload; if (typeof w.onload != 'function') { w.onload = f; } else { w.onload = function () { o();f(); } } })(function () { var b = document.body.innerHTML, r = b.match(/\[uke:(.*?)\]/g); for (var i = 0; i < r.length; i++) { var a = r[i].slice(5, - 1).split(" "), n = ""; for (var j = 0; j < a.length; j++) { if (a[j].length == 0) { continue } n += u; if (-1 != m.indexOf(a[j])) { n += c.replace(/\$[01]/g, l[a[j]]) } else { var s = a[j].replace("#", "%23"); if (-1 != s.indexOf("@")) { var f = s.split("@"); n += d.replace("$0", a[j]).replace("$1", f[0]).replace("$2", f[1]) } else { n += c.replace("$0", a[j]).replace("$1", s) } } } b = b.replace(r[i], "<p>" + n + "</p>") } document.body.innerHTML = b; }) })(window);
要は、[uke: 〜]を見つけたらゴリゴリっと置換しちゃえばいいじゃない、という発想。
ご覧の通り、[uke:tp]には対応してません。。。
性能も特に考えてません。
そんなんでも良かったら使って下さいな。
ご指摘お待ちしてます><