派閥ジェネレーター


こういうのは作っておいて損がないですね。

#! /usr/bin/gawk -f
# habatsu.awk - generate HABATSU (faction) ascii art
# usage: gawk -f habatsu.awk habatsu.txt
#   input:  habatsu.txt (file indented by '-')
#   output: HABATSU (faction) ascii art

$0 != "" {
    depth[NR] = gsub(/\-/, ":", $1);
    line[NR] = $0;
}

END {
    space = " ";
    spaces = "                                                        ";
    for (i = NR; i >= 2; i--) {
        match(line[i], /:*/);
        space = substr(space spaces, 1, (RLENGTH - 1) * 4);
        line[i] = space " +- " substr(line[i], RLENGTH + 1);
        space = space " |";
    }
    for (i = 1; i <= NR; i++) {
        if (line[i] != " +- " && depth[i] != 0) {
            print line[i];
        } else if (depth[i] == 0) {
            sub(/ \+\- /, "", line[i]);
            print line[i];
        }
    }
}

ちょっと雑なところもありますが許してください。

$ cat habatsu.txt
感電しないよ派
- やる気と根性だよ派
-- 山にかわいい7つの子があるからよ派(王道派)
-- 感電してるけど平気なふりしてるよ派(中立派)
-- 電気の周波に合わせて足を高速で動かしてるよ派
- ゴムだからだよ派
-- カラスはゴムをはいてるよ派
-- カラスはゴムだよ派
-- 電気はゴムだよ派
- カラスは存在しないよ派

感電してるよ派
- 楽しんでるよ派
-- 接触面積が広いから大丈夫だよ派
- 鳩が感電したのがカラスだよ派
- 感電してるのは電気の方だよ派

$ gawk -f habatsu.awk habatsu.txt
感電しないよ派
 +-  やる気と根性だよ派
 |   +-  山にかわいい7つの子があるからよ派(王道派)
 |   +-  感電してるけど平気なふりしてるよ派(中立派)
 |   +-  電気の周波に合わせて足を高速で動かしてるよ派
 +-  ゴムだからだよ派
 |   +-  カラスはゴムをはいてるよ派
 |   +-  カラスはゴムだよ派
 |   +-  電気はゴムだよ派
 +-  カラスは存在しないよ派

感電してるよ派
 +-  楽しんでるよ派
 |   +-  接触面積が広いから大丈夫だよ派
 +-  鳩が感電したのがカラスだよ派
 +-  感電してるのは電気の方だよ派

こんな感じでしょうか。