@@ -9,7 +9,7 @@ function chr(uni) {
9
9
0xdc00 | ( ( uni - 0x10000 ) & 0x03ff ) ) ;
10
10
}
11
11
12
- function match ( c , i , p , j ) {
12
+ function match ( c , i , p , j , onlydic ) {
13
13
var pos = p . indexOf ( '*' ) ;
14
14
if ( i - pos < 0 ) return false ;
15
15
if ( i - pos + p . length > text . length ) return false ;
@@ -18,11 +18,27 @@ function match(c, i, p, j) {
18
18
for ( var z = i - pos ; z < i - pos + p . length ; z ++ ) tmp += text [ z ] . charAt ( 0 ) ;
19
19
if ( tmp != p . replace ( / \* / g, c ) ) return false ;
20
20
21
+ var phrase = p . replace ( "*" , c ) ;
21
22
for ( var x = 0 ; x < p . length ; x ++ ) {
22
- if ( p . charAt ( x ) == '*' ) {
23
- var a = i - pos + x ;
23
+ var a = i - pos + x ;
24
+ var spobj = $ ( '#sp' + a ) ;
25
+ var phraseattr = spobj . attr ( "phrase" ) ;
26
+ if ( phraseattr === undefined ) {
27
+ phraseattr = phrase ;
28
+ } else {
29
+ var phrasearr = phraseattr . split ( "," ) ;
30
+ if ( phrasearr . indexOf ( phrase ) < 0 ) {
31
+ phrasearr . push ( phrase ) ;
32
+ }
33
+ phraseattr = phrasearr . join ( "," ) ;
34
+ }
35
+
36
+ var spDom = spobj . attr ( {
37
+ "phrase" :phraseattr
38
+ } ) ;
39
+ if ( p . charAt ( x ) == '*' && ! onlydic ) {
24
40
text [ a ] = c + ( j > 0 ? chr ( vsbase + j * 1 ) : '' ) ;
25
- $ ( '#sp' + a ) . text ( text [ a ] ) . addClass ( 'auto' ) ;
41
+ spDom . text ( text [ a ] ) . addClass ( 'auto' ) ;
26
42
}
27
43
}
28
44
}
@@ -32,14 +48,19 @@ function autoSelect() {
32
48
var t = text [ i ] ;
33
49
var c = t . charAt ( 0 ) ;
34
50
if ( ! data [ c ] ) continue ;
35
- if ( t . length > 1 ) continue ;
51
+ var onlydic = false ;
52
+ if ( t . length > 1 ) {
53
+ // For IVS char, do not overwrite the inserted text
54
+ onlydic = true ;
55
+ } ;
56
+ //if (t.length > 1) continue;
36
57
if ( ! data [ c ] . v ) continue ;
37
58
38
59
here: for ( var j in data [ c ] . v ) {
39
60
if ( ! data [ c ] . v [ j ] ) continue ;
40
61
var list = data [ c ] . v [ j ] . split ( '/' ) ;
41
62
for ( var n = 0 ; n < list . length ; n ++ ) {
42
- if ( match ( c , i , list [ n ] , j ) ) break here;
63
+ if ( match ( c , i , list [ n ] , j , onlydic ) ) break here;
43
64
}
44
65
//console.log(list);
45
66
}
@@ -135,7 +156,7 @@ $('#start').click(function() {
135
156
$ ( '#start' ) . hide ( ) ;
136
157
$ ( '#info2' ) . show ( ) ;
137
158
$ ( '#info1' ) . hide ( ) ;
138
-
159
+
139
160
setEditorText ( t ) ;
140
161
} ) ;
141
162
0 commit comments