function escape_html(text) {
gsub(/&/, "\\&", 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 && /^ [^ ]* *\|/ {
if (match($0, /.\html\.sh /)) {
sub(/\.html\.sh /, ".html ")
suffix = ".sh"
} else {
suffix = ""
}
sub(/[^ ][^ ]*/, "&" suffix)
}
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()
}