サーバのいらない派閥ジェネレータ
面白いけどHTML+JavaScriptだけでできるような。あとやってることに対してrubyコードも複雑すぎると思う。
<html> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> <script> //<![CDATA[ function genHabatsu() { var text = document.getElementById("input").value; text = habatsu(text); document.getElementById("output").innerHTML = text; } function habatsu(text) { var result = ""; var continues = {}; var lines = text.split("\n"); for (var i = lines.length - 1; i >= 0; i -= 1) { var level = getLevel(lines[i]); result = makeIndent(level, continues) + lines[i].substr(level) + "<br />" + result; purgeDeeper(continues, level); continues[level] = true; } return result; } function purgeDeeper(continues, level) { for (var i in continues) { if (parseInt(i) > level) { continues[i] = false; } } } function makeIndent(level, continues) { var indent = ""; for (var i = 1; i < level; i += 1) { indent += continues[i] ? "│ " : " "; } if (level > 0) { indent += continues[level] ? "├─" : "└─"; } return indent; } function getLevel(line) { var r = 0; for (var i = 0; i < line.length; i += 1) { if (line.charAt(i) == "-") { r += 1; } else { break; } } return r; } //]]> </script> </head> <body> <div> <form> <textarea id="input" cols="80" rows="10"> あああ - いいい -- ううう --- えええ -- ううう --- えええ - おおお かかか - ききき -- くくく -- けけけ - こここ </textarea><br/> <input type="button" onclick="genHabatsu()" value="gen"/> </form> </div> <pre id="output"></pre> </body> </html>
IE7対応させた。幅設定で折り返しとか入れると面白いかも。
JavaScript で幅に合わせて文字列を切りつめる - Psychs's blog のやりかたで、
- span style="font-family: 'MS Pゴシック'; font-size: 16px"
- 8 * count の幅
でいいでしょう