#!/bin/sh

usage="$0 html_file.html"

if [ "$#" -ne 1 ]
then
    echo "$usage"
    exit 1
fi

html_file="$1"
if ! [ -f "$html_file" ]
then
    echo "error: '$html_file' is not a regular file."
    echo "$usage"
    exit 1
fi

# the weird << syntax: heredoc for multiline strings

awk_prog=$(cat  << 'EOF'

BEGIN {
  in_status = 0
  username = 0
  out_html = ""

  OPEN_DIV_PAT = "<div"
  CLOSE_DIV_PAT = "</div>"

  status_html="<div id="statuscafe"><div id="statuscafe-username">::USERNAME::</div><div id="statuscafe-content">::CONTENT::</div></div>"

}

/<div id="statuscafe">/ {
    in_status = 1
    div_lvl = 0
    out_html = out_html $0 "\n"
}

!in_status {
    out_html = out_html $0 "\n"
}

in_status && ($0 ~ OPEN_DIV_PAT || $0 ~ CLOSE_DIV_PAT) {
    for (i = 1; i <= NF; ++i) {
        if (match($i, OPEN_DIV_PAT)) {
            div_lvl += 1;
        } else if (match($i, CLOSE_DIV_PAT)) {
            div_lvl -= 1;
        }

        if (div_lvl == 0) {
            in_status = 0;
            out_html = out_html $0 "\n"
        }
    }
    #print div_lvl;
}

in_status && /<!--[[:space:]]*username:[[:space:]]*[^[:space:]]+[[:space:]]*-->/ {
    out_html = out_html $0 "\n"

    in_uname = 0
    for (i = 1; i < NF; ++i) {
        if (in_uname) {
            username = $i;
            print "username is " $i;
            break;
        }
        if ($i ~ /username:/) {
            in_uname = 1;
        }
    }
}

END {
    print out_html
}

EOF
)

awk "$awk_prog" "$html_file"
