crutch redone

master
vegasd 2014-01-31 16:25:58 +04:00
parent fbce2cb299
commit ef5d94b037
1 changed files with 69 additions and 101 deletions

View File

@ -2,143 +2,111 @@
-- avoiding of bug with russian input =========================================================================================================
local crutch_table = {
["233131144"]="А",
["235131144"]="а",
[string.char(233, 131, 144)]="А",
[string.char(235, 131, 144)]="а",
["233135144"]="Б",
["235135144"]="б",
[string.char(233, 135, 144)]="Б",
[string.char(235, 135, 144)]="б",
["233139144"]="В",
["235139144"]="в",
[string.char(233, 139, 144)]="В",
[string.char(235, 139, 144)]="в",
["233143144"]="Г",
["235143144"]="г",
[string.char(233, 143, 144)]="Г",
[string.char(235, 143, 144)]="г",
["233147144"]="Д",
["235147144"]="д",
[string.char(233, 147, 144)]="Д",
[string.char(235, 147, 144)]="д",
["233151144"]="Е",
["235151144"]="е",
[string.char(233, 151, 144)]="Е",
[string.char(235, 151, 144)]="е",
["232135144"]="Ё",
["233135145"]="ё",
[string.char(232, 135, 144)]="Ё",
[string.char(233, 135, 145)]="ё",
["233155144"]="Ж",
["235155144"]="ж",
[string.char(233, 155, 144)]="Ж",
[string.char(235, 155, 144)]="ж",
["233159144"]="З",
["235159144"]="з",
[string.char(233, 159, 144)]="З",
[string.char(235, 159, 144)]="з",
["233163144"]="И",
["235163144"]="и",
[string.char(233, 163, 144)]="И",
[string.char(235, 163, 144)]="и",
["233167144"]="Й",
["235167144"]="й",
[string.char(233, 167, 144)]="Й",
[string.char(235, 167, 144)]="й",
["233171144"]="К",
["235171144"]="к",
[string.char(233, 171, 144)]="К",
[string.char(235, 171, 144)]="к",
["233175144"]="Л",
["235175144"]="л",
[string.char(233, 175, 144)]="Л",
[string.char(235, 175, 144)]="л",
["233179144"]="М",
["235179144"]="м",
[string.char(233, 179, 144)]="М",
[string.char(235, 179, 144)]="м",
["233183144"]="Н",
["235183144"]="н",
[string.char(233, 183, 144)]="Н",
[string.char(235, 183, 144)]="н",
["233187144"]="О",
["235187144"]="о",
[string.char(233, 187, 144)]="О",
[string.char(235, 187, 144)]="о",
["233191144"]="П",
["235191144"]="п",
[string.char(233, 191, 144)]="П",
[string.char(235, 191, 144)]="п",
["234131144"]="Р",
["232131145"]="р",
[string.char(234, 131, 144)]="Р",
[string.char(232, 131, 145)]="р",
["234135144"]="С",
["232135145"]="с",
[string.char(234, 135, 144)]="С",
[string.char(232, 135, 145)]="с",
["234139144"]="Т",
["232139145"]="т",
[string.char(234, 139, 144)]="Т",
[string.char(232, 139, 145)]="т",
["234143144"]="У",
["232143145"]="у",
[string.char(234, 143, 144)]="У",
[string.char(232, 143, 145)]="у",
["234147144"]="Ф",
["232147145"]="ф",
[string.char(234, 147, 144)]="Ф",
[string.char(232, 147, 145)]="ф",
["234151144"]="Х",
["232151145"]="х",
[string.char(234, 151, 144)]="Х",
[string.char(232, 151, 145)]="х",
["234155144"]="Ц",
["232155145"]="ц",
[string.char(234, 155, 144)]="Ц",
[string.char(232, 155, 145)]="ц",
["234159144"]="Ч",
["232159145"]="ч",
[string.char(234, 159, 144)]="Ч",
[string.char(232, 159, 145)]="ч",
["234163144"]="Ш",
["232163145"]="ш",
[string.char(234, 163, 144)]="Ш",
[string.char(232, 163, 145)]="ш",
["234167144"]="Щ",
["232167145"]="щ",
[string.char(234, 167, 144)]="Щ",
[string.char(232, 167, 145)]="щ",
["234171144"]="Ъ",
["232171145"]="ъ",
[string.char(234, 171, 144)]="Ъ",
[string.char(232, 171, 145)]="ъ",
["234175144"]="Ы",
["232175145"]="ы",
[string.char(234, 175, 144)]="Ы",
[string.char(232, 175, 145)]="ы",
["234179144"]="Ь",
["232179145"]="ь",
[string.char(234, 179, 144)]="Ь",
[string.char(232, 179, 145)]="ь",
["234183144"]="Э",
["232183145"]="э",
[string.char(234, 183, 144)]="Э",
[string.char(232, 183, 145)]="э",
["234187144"]="Ю",
["232187145"]="ю",
[string.char(234, 187, 144)]="Ю",
[string.char(232, 187, 145)]="ю",
["234191144"]="Я",
["232191145"]="я"
[string.char(234, 191, 144)]="Я",
[string.char(232, 191, 145)]="я"
};
function tobytes(str)
byte={}
for i = 1, #str do
table.insert(byte, string.byte(string.sub(str, i, i)))
end
return byte;
end
function string.km_rus_crutch_regen(str)
byte=tobytes(str)
if byte[1]==nil then
return ""
for key, value in pairs(crutch_table) do
str = string.gsub(str, key, value)
end
text=""
i=1
repeat
if byte[i]>128 then
if byte[i+2]~=nil and byte[i+1]~=nil and byte[i] then
tmp = byte[i]..byte[i+1]..byte[i+2]
else
tmp = "0"
end
if crutch_table[tmp]~=nil then
char = crutch_table[tmp]
i=i+3
else
char = string.sub(str, i, i+1)
i=i+2
end
else
char=string.sub(str, i, i)
i=i+1
end
text=text..char
until i>#byte
return text
return str
end
function km_process_fields(fields)