File: makealias

package info (click to toggle)
nuspell 5.1.7-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,832 kB
  • sloc: cpp: 19,251; sh: 328; perl: 261; makefile: 5
file content (115 lines) | stat: -rwxr-xr-x 2,564 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#!/bin/sh
# makealias: make alias compressed dic and aff files
# Usage: alias.sh dic aff (not alias.sh aff dic!)
# Version: 2007-10-26

case $# in
0|1) 
echo 'makealias: make alias compressed dic and aff files
Usage: makealias file.dic file.aff (not makefile file.aff file.dic!)' >/dev/stderr
exit;;
esac

DIC=`basename $1 .dic`
AFF=`basename $2 .aff`

# FLAG type definition must be before alias definitions
grep '^FLAG' $2 >"${AFF}_alias.aff"

awk 'BEGIN{n=1;m=1}
function cutslash(st) {
    if (split(st,t,"/") > 1) return t[1]
    return st
}
function ltrim(st) {
    sub(/^ +/,"",st)
    return st
}
FILENAME ~ /.dic$/ && $1 ~ "/[^ \t]" {
    split($1,t,"/")
    if(!a[t[2]]){
        a[t[2]]=n
        b[n]=t[2]
        n++
    }
    if (NF > 1) {
        $1 = ""
        if(!a2[$0]){
            a2[$0]=m
            c[m]=$0
            m++
        }
        print t[1]"/"a[t[2]] "\t" a2[$0]
    } else {
        print t[1]"/"a[t[2]]
    }
    next
}
FILENAME ~ /.dic$/ && NF > 1 {
    x = $1
    $1 = ""
    if(!a2[$0]){
        a2[$0]=m
        c[m]=$0
        m++
    }
    print cutslash(x) "\t" a2[$0]
    next
}
FILENAME ~ /.dic$/ { print cutslash($1) }
FILENAME ~ /.aff$/ && /^[PS]FX/ && ($4 ~ /\/[^	 ]/) && NF > 4 {
    split($4,t,"/")
    if(!a[t[2]]){
        a[t[2]]=n
        b[n]=t[2]
        n++
    }
    begin = $1 " " $2 " " $3 " " (t[1]"/"a[t[2]]) " " $5
    if ($6!="") ok = 1; else ok = 0;
    $1 = ""
    $2 = ""
    $3 = ""
    $4 = ""
    $5 = ""
    if(ok){
        if(!a2[$0]){
            a2[$0]=m
            c[m]=$0
            m++
        }
        print begin " " a2[$0] >>"/dev/stderr"
    } else print begin >>"/dev/stderr"
    next
}
FILENAME ~ /.aff$/ && /^[PS]FX/ && NF > 4 {
    begin = $1 " " $2 " " $3 " " cutslash($4) " " $5
    if ($6!="") ok = 1; else ok = 0;
    $1 = ""
    $2 = ""
    $3 = ""
    $4 = ""
    $5 = ""
    if(ok) {
        if (!a2[$0]){
            a2[$0]=m
            c[m]=$0
            m++
        }
        print begin " " a2[$0] >>"/dev/stderr"
    } else print begin >>"/dev/stderr"
    next
}
FILENAME ~ /.aff$/ { print $0 >>"/dev/stderr" }
END{
    if (n>1) {
        print "AF", n-1 >>"'${AFF}_alias.aff'"
        for(i=1;i<n;i++) print "AF", b[i],"#",i >>"'${AFF}_alias.aff'"
    }
    if (m>1) {
        print "AM", m-1 >>"'${AFF}_alias.aff'"
        for(i=1;i<m;i++) print "AM " ltrim(c[i]) >>"'${AFF}_alias.aff'"
    }
}' $1 $2 >${DIC}_alias.dic 2>${AFF}_alias.$$
grep -v '^FLAG' ${AFF}_alias.$$ >>${AFF}_alias.aff
echo "output: ${DIC}_alias.dic, ${AFF}_alias.aff"
rm ${AFF}_alias.$$