Blame view
egs/gp/s5/local/gp_rmn2utf_RU.pl
2.65 KB
8dcb6dfcb first commit |
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 116 117 118 119 120 121 122 123 124 125 126 |
#!/usr/bin/env perl use warnings; #sed replacement for -w perl parameter # Copyright 2012 Arnab Ghoshal # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED # WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, # MERCHANTABLITY OR NON-INFRINGEMENT. # See the Apache 2 License for the specific language governing permissions and # limitations under the License. # This script maps from the GlobalPhone-style ASCII encoding of Russian # characters to UTF8. This is almost identical to the corresponding script for # Portuguese and Spanish use strict; use Unicode::Normalize; binmode(STDOUT, ":encoding(utf8)"); my $usage = "Usage: gp_rmn2utf_RU.pl < input > utf8-output\ Maps from the GlobalPhone-style ASCII encoding of Spanish characters to UTF8. "; if (defined($ARGV[0])) { if ($ARGV[0] =~ m/(-h|--help)/) { print STDERR "$usage"; exit 0; } else { die "Unknown option '$ARGV[0]' $usage"; } } while (<STDIN>) { s/~/\x{044C}/g; # Cyrillic Soft Sign - soften consonant before that, e.g. t~ => Tb s/schTsch/\x{0449}/g; s/SchTsch/\x{0429}/g; s/jscH/\x{0436}/g; s/JscH/\x{0416}/g; s/tscH/\x{0447}/g; s/TscH/\x{0427}/g; s/sch/\x{0448}/g; s/Sch/\x{0428}/g; s/ts/\x{0446}/g; s/tS/\x{0446}/g; s/Ts/\x{0426}/g; s/TS/\x{0426}/g; s/ye/\x{0435}/g; s/yo/\x{0451}/g; # non in text s/yu/\x{044E}/g; s/ya/\x{044F}/g; s/Ye/\x{0415}/g; s/Yo/\x{0401}/g; # non in text s/Yu/\x{042E}/g; s/Ya/\x{042F}/g; s/i2/\x{044B}/g; s/I2/\x{042B}/g; s/Q/\x{044A}/g; s/q/\x{042A}/g; # non in text s/a/\x{0430}/g; s/b/\x{0431}/g; s/w/\x{0432}/g; s/g/\x{0433}/g; s/d/\x{0434}/g; s/z/\x{0437}/g; s/i/\x{0438}/g; s/j/\x{0439}/g; s/k/\x{043A}/g; s/l/\x{043B}/g; s/m/\x{043C}/g; s/n/\x{043D}/g; s/o/\x{043E}/g; s/p/\x{043F}/g; s/r/\x{0440}/g; s/s/\x{0441}/g; s/t/\x{0442}/g; s/u/\x{0443}/g; s/f/\x{0444}/g; s/h/\x{0445}/g; s/e/\x{044D}/g; s/A/\x{0410}/g; s/B/\x{0411}/g; s/W/\x{0412}/g; s/G/\x{0413}/g; s/D/\x{0414}/g; s/Z/\x{0417}/g; s/I/\x{0418}/g; s/J/\x{0419}/g; s/K/\x{041A}/g; s/L/\x{041B}/g; s/M/\x{041C}/g; s/N/\x{041D}/g; s/O/\x{041E}/g; s/P/\x{041F}/g; s/R/\x{0420}/g; s/S/\x{0421}/g; s/T/\x{0422}/g; s/U/\x{0423}/g; s/F/\x{0424}/g; s/H/\x{0425}/g; s/E/\x{042D}/g; print NFC($_); # recompose & reorder canonically } |