1
0
forked from N0VA/kewt
Files
kewt/awk/emoji.awk
2026-05-05 20:10:01 +02:00

52 lines
1.3 KiB
Awk

BEGIN {
if (emoji_file == "") {
emoji_file = "emoji.tsv"
}
while ((getline line < emoji_file) > 0) {
split(line, parts, "\t")
if (length(parts[1]) > 0) {
map[parts[1]] = parts[2]
}
}
close(emoji_file)
}
{
if ($0 ~ /<pre>/) in_pre = 1
if (!in_pre) {
code_count = 0
line = $0
out = ""
while (match(line, /<code>[^<]*<\/code>/)) {
code_count++
code_store[code_count] = substr(line, RSTART, RLENGTH)
out = out substr(line, 1, RSTART - 1) "\034EC" code_count "\034"
line = substr(line, RSTART + RLENGTH)
}
out = out line
line = out
out = ""
while (match(line, /:[A-Za-z0-9_+\-]+:/)) {
token = substr(line, RSTART, RLENGTH)
out = out substr(line, 1, RSTART - 1)
if (token in map) {
out = out map[token]
} else {
out = out token
}
line = substr(line, RSTART + RLENGTH)
}
out = out line
for (i = 1; i <= code_count; i++) {
gsub("\034EC" i "\034", code_store[i], out)
delete code_store[i]
}
$0 = out
}
if ($0 ~ /<\/pre>/) in_pre = 0
print
}