function escape_html(text) { gsub(/&/, "\\&", text) gsub(//, "\\>", text) gsub(/"/, "\\"", text) return text } function get_value() { sub(/^[^ ]* */, "") return $0 } function end() { print "</pre>" print "" } $1 == "entry" { if (in_content && $2 == end_of_content) { in_content = 0 in_stat = 0 end() } title = "" id = "" name = "" email = "" updated = "" next } $1 == "stat" && $2 == end_of_content { in_stat = 1 next } $1 == "content" { end_of_content = $2 print "" print " " escape_html(title) "" print " " id "" print " " print " " escape_html(name) "" print " " escape_html(email) "" print " " print " " escape_html(updated) "" printf " <pre>" in_content = 1 next } in_stat && /^ [^ ]* *\|/ { sub(/[^ ][^ ]*/, "&") } in_stat && / \+*-*$/ { sub(/ \++/, "&") sub(/-+$/, "&") } in_content { print escape_html($0) next } $1 == "title" { title = get_value() } $1 == "name" { name = get_value() } $1 == "email" { email = get_value() } $1 == "id" { id = get_value() id = site ".git/objects/" substr(id, 1, 2) "/" substr(id, 3) } $1 == "updated" { updated = $2 "T" $3 substr($4, 1, 3) ":" substr($4, 3, 2) } END { if (in_content) end() }