From: ntakahas Date: Mon, 30 Oct 2006 11:57:12 +0000 (+0000) Subject: Merge the surrounding text version and the preedit version. X-Git-Tag: REL-1-3-4~55 X-Git-Url: http://git.chise.org/gitweb/?a=commitdiff_plain;h=cca8af0c780cb847ad98e914a203902a2bac6aad;p=m17n%2Fm17n-db.git Merge the surrounding text version and the preedit version. --- diff --git a/th-kesmanee.mim b/th-kesmanee.mim index 371bac3..7320a97 100644 --- a/th-kesmanee.mim +++ b/th-kesmanee.mim @@ -193,31 +193,23 @@ The correction algorithm follows the one shown in the following (map (delete @<) (pushback 1) - (cond - ((= @-1 -2) (shift nst)) - (1 (shift st))))) + (shift main))) - ;; no surrounding text - (nst - (t - (set x -1) - (set y -1)) - + (main (map - (set z @-) + (set x @-3) + (set y @-2) + (set z @-1) + (set arg1 y) (set arg2 z) (cp) (cond - ((= ret 1) ;; CP(y,z) succeeded. - (set x y) - (set y z)) + ((= ret 1)) ;; CP(y,z) succeeded. (1 (ac) (cond - ((= ret 1) ;; AC(y,z) succeeded. - (set x y) - (set y z)) + ((= ret 1)) ;; AC(y,z) succeeded. (1 ;; WTT-based input sequence correction starts here. @@ -237,11 +229,9 @@ The correction algorithm follows the one shown in the following ((= ret 1) ;; reorder(y -> zy) - (delete @-) - (delete @-) + (delete @-2) (insert z) - (insert y) - (set x z)) + (insert y)) ;; elif CP(x,y) then (1 @@ -252,10 +242,8 @@ The correction algorithm follows the one shown in the following ((= ret 1) ;; replace(y -> z) - (delete @-) - (delete @-) - (insert z) - (set y z)) + (delete @-2) + (insert z)) ;; elif y is FV1 and z is TONE then ((& (| (= y 0x0E30) (= y 0x0E32) (= y 0x0E33)) @@ -263,16 +251,14 @@ The correction algorithm follows the one shown in the following (<= z 0x0E4B)) ;; reorder(y -> zy) - (delete @-) - (delete @-) + (delete @-2) (insert z) - (insert y) - (set x z)) + (insert y)) ;; else ;; reject(z) (1 - (delete @-)) + (delete @-1)) ;;endif )))) @@ -284,28 +270,18 @@ The correction algorithm follows the one shown in the following (ac) (cond ((& (= ret 1) - ;; CTRL, NON and CONS should not be replaced. - (| (= y 0x0E24) - (= y 0x0E26) - (& (>= y 0x0E30) (<= y 0x0E3A)) - (& (>= y 0x0E40) (<= y 0x0E45)) - (& (>= y 0x0E47) (<= y 0x0E4E))) - (| (= z 0x0E24) - (= z 0x0E26) - (& (>= z 0x0E30) (<= z 0x0E3A)) - (& (>= z 0x0E40) (<= z 0x0E45)) - (& (>= z 0x0E47) (<= z 0x0E4E)))) + ;; Only Thai characters should be replaced. + (& (>= y 0x0E01) (<= y 0x0E5B)) + (& (>= z 0x0E01) (<= z 0x0E5B))) ;; replace(y -> z) - (delete @-) - (delete @-) - (insert z) - (set y z)) + (delete @-2) + (insert z)) ;; else ;; reject(z) (1 - (delete @-)) + (delete @-1)) ;; endif ))) @@ -313,9 +289,13 @@ The correction algorithm follows the one shown in the following )))) - ;; Commit the preedit chars as soon as fixed. - (set w @-) + ;; Commit the preedit chars that are fixed. + (set w @-1) (cond + ;; If surrounding text is supported, commit the only char in preedit. + ((> @-0 -2) + (commit)) + ;; If the last char is CTRL or NON, we can commit everything. ((| (& (>= w 0x0000) (<= w 0x0E00)) (= w 0x0E2F) @@ -328,14 +308,14 @@ The correction algorithm follows the one shown in the following ;; everything but the last. ((| (& (>= w 0x0E01) (<= w 0x0E2E)) (& (>= w 0x0E40) (<= w 0x0E45))) - (delete @-) + (delete @-1) (commit) (insert w)) ;; If the last char is FV1 (excluding AM) and ... ((| (= w 0x0E30) (= w 0x0E32)) - (delete @-) - (set v @-) + (delete @-1) + (set v @-1) (cond ;; ... the before last is CONS, we can commit other than the @@ -343,7 +323,7 @@ The correction algorithm follows the one shown in the following ((| (& (>= v 0x0E01) (<= v 0x0E23)) (= v 0x0E25) (& (>= v 0x0E27) (<= v 0x0E2E))) - (delete @-) + (delete @-1) (commit) (insert v) (insert w)) @@ -353,119 +333,7 @@ The correction algorithm follows the one shown in the following (1 (commit) (insert w)))) - ))) - - ;; with surrounding text - (st - (map - ;; z = next character - (set z @-) - ;; y = previous character - (set y @-1) - ;; x = character previous to y - (set x @-2) - - (set arg1 y) - (set arg2 z) - (cp) - (cond - ((= ret 1)) ;; CP(y,z) succeeded. - (1 - (ac) - (cond - ((= ret 1)) ;; AC(y,z) succeeded. - (1 - ;; WTT-based input sequence correction starts here. - - ;; begin - ;; if CP(x,z) then - (set arg1 x) - (set arg2 z) - (cp) - (cond - ((= ret 1) - - ;; if CP(z,y) then - (set arg1 z) - (set arg2 y) - (cp) - (cond - ((= ret 1) - - ;; reorder(y -> zy) - (delete @-) - (delete @-1) - (insert z) - (insert y)) - - ;; elif CP(x,y) then - (1 - (set arg1 x) - (set arg2 y) - (cp) - (cond - ((= ret 1) - - ;; replace(y -> z) - (delete @-) - (delete @-1) - (insert z)) - - ;; elif y is FV1 and z is TONE then - ((& (| (= y 0x0E30) (= y 0x0E32) (= y 0x0E33)) - (>= z 0x0E48) - (<= z 0x0E4B)) - - ;; reorder(y -> zy) - (delete @-) - (delete @-1) - (insert z) - (insert y)) - - ;; else - ;; reject(z) - (1 - (delete @-)) - - ;;endif - )))) - - ;; elif AC(x,z) then - (1 - (set arg1 x) - (set arg2 z) - (ac) - (cond - ((& (= ret 1) - ;; CTRL, NON and CONS should not be replaced. - (| (= y 0x0E24) - (= y 0x0E26) - (& (>= y 0x0E30) (<= y 0x0E3A)) - (& (>= y 0x0E40) (<= y 0x0E45)) - (& (>= y 0x0E47) (<= y 0x0E4E))) - (| (= z 0x0E24) - (= z 0x0E26) - (& (>= z 0x0E30) (<= z 0x0E3A)) - (& (>= z 0x0E40) (<= z 0x0E45)) - (& (>= z 0x0E47) (<= z 0x0E4E)))) - - ;; replace(y -> z) - (delete @-) - (delete @-1) - (insert z)) - - ;; else - ;; reject(z) - (1 - (delete @-)) - - ;; endif - ))) - ;; end - - )))) - (commit) - ))) + )))) ;; Local Variables: ;; coding: utf-8