# unannotation.awk: filter to remove annotations in dictionaries.
#
# Copyright (C) 2001, 2002 SKK Development Team <skk@ring.gr.jp>
#
# Maintainer: SKK Development Team <skk@ring.gr.jp>
# Version: $Id: unannotation.awk,v 1.3 2006/01/04 10:35:06 skk-cvs Exp $
# Last Modified: $Date: 2006/01/04 10:35:06 $
#
# This file is part of Daredevil SKK.
#
# Daredevil SKK is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2, or
# (at your option) any later version.
#
# Daredevil SKK is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Daredevil SKK, see the file COPYING.  If not, write to
# the Free Software Foundation Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301, USA.

BEGIN{
    print ";; -*- text -*-";
    ctime = myctime(0);
    this = ARGV[1];
    if (match(this, "\.annotated$") != 0){
	this = substr(this, 1, RSTART - 1);
    } else
	this = this ".unannotated";
    printf(";; %s was generated automatically by unannotation.awk at %s\n",
	   this, ctime);
    #getline modeindicator
    #if (match(modeindicator, /;; -*- text -*-/) != 0){
    #    print modeindicator;
    #}
}
#$0 !~ /"^;; -\*- text -\*-\n"/{
{
    if (match($0, /^;/) == 0) {
	gsub(";[^/]*/", "/");
	if (DEQUOTE && $0 ~ /\\073/) {
	    $0 = dequote($0);
	}
    }
    print;
}
function myctime(ts,    format) {
    format = "%a %b %e %H:%M:%S %Y";
    if (ts == 0)
	ts = systime();         # use current time as default
    return strftime(format, ts);
}
# convert '\073' to ';' and strip '(concat "...")'.
# example: 'smile /(concat "^_^\073\073")/:-)/' to 'smile /^_^;;/:-)/'
# @param s string to convert
# @return converted string
function dequote(s) {
    ret = "";
    n = split(s, a, "/");
    for (i = 1; i < n; i++) {
	if (a[i] ~ /^\(concat ".*\\073.*"\)$/) {	# \073 = ';'
	    gsub(/\\073/, ";", a[i]);
	    if (a[i] !~ /\\/) {	# no other quote
		a[i] = gensub(/^\(concat "(.*)"\)$/, "\\1", "g", a[i]);
	    }
	}
	ret = ret a[i] "/";
    }
    return ret;
}
# end of unannotation.awk.
