~massimeddu/ditzionariusardu/trunk

« back to all changes in this revision

Viewing changes to tools/converters/gsc2lsc

  • Committer: Massimeddu
  • Date: 2009-12-14 15:24:31 UTC
  • Revision ID: massimeddu@notebook-20091214152431-f9oq9vnrfur8v5n2
Some fixes

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/bash
 
2
 
 
3
#####################################################################
 
4
# Print warning message.
 
5
 
 
6
function warning()
 
7
{
 
8
    echo "$*" >&2
 
9
}
 
10
 
 
11
#####################################################################
 
12
# Print error message and exit.
 
13
 
 
14
function error()
 
15
{
 
16
    echo "$*" >&2
 
17
    exit 1
 
18
}
 
19
 
 
20
 
 
21
#####################################################################
 
22
# Ask yesno question.
 
23
#
 
24
# Usage: yesno OPTIONS QUESTION
 
25
#
 
26
#   Options:
 
27
#     --timeout N    Timeout if no input seen in N seconds.
 
28
#     --default ANS  Use ANS as the default answer on timeout or
 
29
#                    if an empty answer is provided.
 
30
#
 
31
# Exit status is the answer.
 
32
 
 
33
function yesno()
 
34
{
 
35
    local ans
 
36
    local ok=0
 
37
    local timeout=0
 
38
    local default
 
39
    local t
 
40
 
 
41
    while [[ "$1" ]]
 
42
    do
 
43
        case "$1" in
 
44
        --default)
 
45
            shift
 
46
            default=$1
 
47
            if [[ ! "$default" ]]; then error "Missing default value"; fi
 
48
            t=$(tr '[:upper:]' '[:lower:]' <<<$default)
 
49
 
 
50
            if [[ "$t" != 'y'  &&  "$t" != 'yes'  &&  "$t" != 'n'  &&  "$t" != 'no' ]]; then
 
51
                error "Illegal default answer: $default"
 
52
            fi
 
53
            default=$t
 
54
            shift
 
55
            ;;
 
56
 
 
57
        --timeout)
 
58
            shift
 
59
            timeout=$1
 
60
            if [[ ! "$timeout" ]]; then error "Missing timeout value"; fi
 
61
            if [[ ! "$timeout" =~ ^[0-9][0-9]*$ ]]; then error "Illegal timeout value: $timeout"; fi
 
62
            shift
 
63
            ;;
 
64
 
 
65
        -*)
 
66
            error "Unrecognized option: $1"
 
67
            ;;
 
68
 
 
69
        *)
 
70
            break
 
71
            ;;
 
72
        esac
 
73
    done
 
74
 
 
75
    if [[ $timeout -ne 0  &&  ! "$default" ]]; then
 
76
        error "Non-zero timeout requires a default answer"
 
77
    fi
 
78
 
 
79
    if [[ ! "$*" ]]; then error "Missing question"; fi
 
80
 
 
81
    while [[ $ok -eq 0 ]]
 
82
    do
 
83
        if [[ $timeout -ne 0 ]]; then
 
84
            if ! read -t $timeout -p "$*" ans; then
 
85
                ans=$default
 
86
            else
 
87
                # Turn off timeout if answer entered.
 
88
                timeout=0
 
89
                if [[ ! "$ans" ]]; then ans=$default; fi
 
90
            fi
 
91
        else
 
92
            read -p "$*" ans
 
93
            if [[ ! "$ans" ]]; then
 
94
                ans=$default
 
95
            else
 
96
                ans=$(tr '[:upper:]' '[:lower:]' <<<$ans)
 
97
            fi 
 
98
        fi
 
99
 
 
100
        if [[ "$ans" == 'y'  ||  "$ans" == 'yes'  ||  "$ans" == 'n'  ||  "$ans" == 'no' ]]; then
 
101
            ok=1
 
102
        fi
 
103
 
 
104
        if [[ $ok -eq 0 ]]; then warning "Valid answers are: yes y no n"; fi
 
105
    done
 
106
    [[ "$ans" = "y" || "$ans" == "yes" ]]
 
107
}
 
108
 
 
109
 
 
110
 
 
111
[ "$#" -eq 2 ] || error "2 argument required, $# provided\n\nUse $0 gsc_file.dic lsc_file.dic"
 
112
 
 
113
if [ -f $1 ]
 
114
then
 
115
        echo ""
 
116
else
 
117
        error "$0 not exists. Provide a valid GSC Dictionary file."
 
118
fi
 
119
 
 
120
if [ -f $2 ]
 
121
then
 
122
        if yesno --default no "\"$2\" exists. Do you want overwrite it? (y/N) "
 
123
        then
 
124
                if yesno --default yes "Do you want make a backup copy of \"$2\"? (Y/n) "
 
125
                then
 
126
                        cp $2 $2.bak
 
127
                        printf "\n$2.bak writed successfully!\n"
 
128
                fi
 
129
        else
 
130
                printf "\n"
 
131
                error "Operation aborted."
 
132
        fi
 
133
fi
 
134
 
 
135
printf "\nSaving old comments...."
 
136
 
 
137
sed -i '/^[^\/].*$/d' $2
 
138
sed -i '/^$/d' $2
 
139
mv $2 $2.comms.tmp
 
140
 
 
141
cp $1 $2
 
142
 
 
143
sed -i '/^[^123456789].*$/d' $2
 
144
sed -i '/^$/d' $2
 
145
mv $2 $2.num.tmp
 
146
 
 
147
cp $1 $2
 
148
 
 
149
printf "\nStarting converting...."
 
150
 
 
151
printf "\nRemoving comments...."
 
152
 
 
153
sed -i '/^[\/123456789].*$/d' $2
 
154
sed -i '/^$/d' $2
 
155
 
 
156
printf "\nDone!\nAppling GSC rule 1 (x -> gh)...."
 
157
 
 
158
awk '/xer\/K.*GSC 3/ {gsub("xer\/K  ", "ghere\/I", $0); gsub(", GSC 3", "", $0); print $0; p=1;} {if(p == 0) {print $0;} else {p=0;};}' $2 1> $2.tmp 2>/dev/null
 
159
mv $2.tmp $2
 
160
 
 
161
awk '/xes\/K.*GSC 3/ {gsub("xes\/K ", "go\/I", $0); gsub("xer  ", "ghere", $0); gsub(", GSC 3", "", $0); print $0; p=1;} {if(p == 0) {print $0;} else {p=0;};}' $2 1> $2.tmp 2>/dev/null
 
162
mv $2.tmp $2
 
163
 
 
164
awk '/GSC 1/ {gsub("x", "gh", $0); gsub(", GSC 1", "", $0); print $0; p=1;} {if(p == 0) {print $0;} else {p=0;};}' $2 > $2.tmp
 
165
mv $2.tmp $2
 
166
 
 
167
printf "\nRule 1 done!\nAppling GSC rule 2 (k -> ch)...."
 
168
 
 
169
awk '/GSC 2/ {gsub("k", "ch", $0); gsub(", GSC 2", "", $0); print $0; p=1;} {if(p == 0) {print $0;} else {p=0;};}' $2 > $2.tmp
 
170
mv $2.tmp $2
 
171
 
 
172
printf "\nRule 2 done!\nAppling GSC rule 3 (er -> ere)...."
 
173
 
 
174
awk '/er\/I.*GSC 3/ {gsub("er\/I ", "ere\/I", $0); gsub(", GSC 3", "", $0); print $0; p=1;} {if(p == 0) {print $0;} else {p=0;};}' $2 1> $2.tmp 2>/dev/null
 
175
mv $2.tmp $2
 
176
 
 
177
awk '/er\/K.*GSC 3/ {gsub("er\/K ", "ere\/K", $0); gsub(", GSC 3", "", $0); print $0; p=1;} {if(p == 0) {print $0;} else {p=0;};}' $2 1> $2.tmp 2>/dev/null
 
178
mv $2.tmp $2
 
179
 
 
180
awk '/er\/J.*GSC 3/ {gsub("er\/J ", "ere\/J", $0); gsub(", GSC 3", "", $0); print $0; p=1;} {if(p == 0) {print $0;} else {p=0;};}' $2 1> $2.tmp 2>/dev/null
 
181
mv $2.tmp $2
 
182
 
 
183
awk '/er\/O.*GSC 3/ {gsub("er\/O ", "ere\/O", $0); gsub(", GSC 3", "", $0); print $0; p=1;} {if(p == 0) {print $0;} else {p=0;};}' $2 1> $2.tmp 2>/dev/null
 
184
mv $2.tmp $2
 
185
 
 
186
awk '/er\/P.*GSC 3/ {gsub("er\/P ", "ere\/P", $0); gsub(", GSC 3", "", $0); print $0; p=1;} {if(p == 0) {print $0;} else {p=0;};}' $2 1> $2.tmp 2>/dev/null
 
187
mv $2.tmp $2
 
188
 
 
189
awk '/er\/L.*GSC 3/ {gsub("er\/L ", "ere\/L", $0); gsub(", GSC 3", "", $0); print $0; p=1;} {if(p == 0) {print $0;} else {p=0;};}' $2 1> $2.tmp 2>/dev/null
 
190
mv $2.tmp $2
 
191
 
 
192
awk '/er *#.*GSC 3/ {gsub("er ", "ere", $0); gsub(", GSC 3", "", $0); print $0; p=1;} {if(p == 0) {print $0;} else {p=0;};}' $2 > $2.tmp
 
193
mv $2.tmp $2
 
194
 
 
195
printf "\nRule 3 done!\nAppling GSC rule 4 (s -> is)...."
 
196
 
 
197
awk '/^s.*GSC 4/ {gsub("^s", "is", $0); gsub(", GSC 4", "", $0); print $0; p=1;} {if(p == 0) {print $0;} else {p=0;};}' $2 > $2.tmp
 
198
mv $2.tmp $2
 
199
 
 
200
awk '/s.*GSC 4/ {gsub("s", "is", $0); gsub(", GSC 4", "", $0); print $0; p=1;} {if(p == 0) {print $0;} else {p=0;};}' $2 > $2.tmp
 
201
mv $2.tmp $2
 
202
 
 
203
printf "\nRule 3 done!\nFormating text...."
 
204
 
 
205
awk '{if(index($0, "po:")==29){gsub("po:", " po:", $0)} else if(index($0, "po:")==28){gsub("po:", "  po:", $0)} else if(index($0, "po:")==27){gsub("po:", "   po:", $0)} print $0;}' $2 > $2.tmp
 
206
mv $2.tmp $2
 
207
 
 
208
awk '{if(index($0, "po:")==31){gsub(" po:", "po:", $0)} else if(index($0, "po:")==32){gsub("  po:", "po:", $0)} else if(index($0, "po:")==33){gsub("   po:", "po:", $0)} print $0;}' $2 > $2.tmp
 
209
mv $2.tmp $2
 
210
 
 
211
awk '{if(index($0, "#")==61){gsub(" #", "#", $0)} else if(index($0, "#")==62){gsub("  #", "#", $0)} else if(index($0, "#")==63){gsub("   #", "#", $0)} print $0;}' $2 > $2.tmp
 
212
mv $2.tmp $2
 
213
 
 
214
printf "\nDone!\nSorting...\n"
 
215
 
 
216
sort $2 > $2.tmp
 
217
mv $2.tmp $2
 
218
 
 
219
echo >> $2
 
220
 
 
221
printf "\nDone!\nAdding old comments..."
 
222
 
 
223
cat $2.num.tmp $2.comms.tmp $2 > $2.tmp
 
224
mv $2.tmp $2
 
225
rm -f $2.comms.tmp $2.num.tmp
 
226
 
 
227
printf "\nAll done!\n$2 writed successfully!\n"
 
228
 
 
229
exit 0