#!/usr/bin/env bash

set -euo pipefail

iconv -f EUC-JP -t UTF-8 "$@" | awk '
function fail(s) {
	print "skk2ktrans: " FILENAME ":" FNR ": " s >"/dev/stderr"
	bad = 1
	exit 1
}
function add(k, v, id) {
	sub(/;.*/, "", v)
	if(v == "" || v ~ /^[([#]/ || v ~ /[[:space:]]/)
		return
	id = k SUBSEP v
	if(seen[id])
		return
	seen[id] = 1
	if(!(k in row))
		order[++nkey] = k
	else
		row[k] = row[k] " "
	row[k] = row[k] v
}
/^;;/ || /^[[:space:]]*$/ {
	next
}
{
	if(!match($0, /[[:space:]]+/))
		fail("missing candidate list")
	key = substr($0, 1, RSTART-1)
	field = substr($0, RSTART+RLENGTH)
	if(key == "" || key ~ /^;/ || field !~ /^\/.*\/$/)
		fail("invalid row")
	if(field ~ /\\/)
		fail("escaped candidates are unsupported")
	if(field ~ /\/[([#]/)
		fail("expression candidates are unsupported")
	n = split(substr(field, 2, length(field)-2), value, "/")
	for(i = 1; i <= n; i++)
		add(key, value[i])
}
END {
	if(bad)
		exit 1
	for(i = 1; i <= nkey; i++)
		print order[i] "\t" row[order[i]]
}
'
