1/*==================================================================================================== 2////////////////////////////////////////////////////////////////////////////////////////////////////// 3 4 author : http://www.yomotsu.net 5 thanks : http://css-happylife.com 6 created: 2008/02/23 7 update : 2009/01/06 8 9 public domain 10 11 å ¥åãããããã¹ããèªåã§æå®ã®å½¢å¼(åè§,å ¨è§,ã²ãããª,å ¨è§ã«ã¿ã«ã)ã«å¤æãã JavaScriptã 12 èªåã§æå®ã®å½¢å¼ã«å¤æããã input è¦ç´ ãã¾ã㯠textarea è¦ç´ ã® class 屿§ã« 13 ãã® JS å ã® conf ã§è¨å®ããå 容ãæå®ããã¨åä½ãã¾ãã 14 15////////////////////////////////////////////////////////////////////////////////////////////////////// 16====================================================================================================*/ 17 18var valueConvertor = { 19 20 conf : { 21 asciiClass : "ascii", 22 multibyteClass : "multibyte", 23 hiraganaClass : "hiragana", 24 katakanaClass : "katakana", 25 fullwidthKanaClass: "fullwidth-kana", 26 halfwidthKanaClass: "halfwidth-kana" 27 }, 28 29 30 main : function (){ 31 var i; 32 var input = document.getElementsByTagName("input"); 33 var textarea = document.getElementsByTagName("textarea"); 34 35 for ( i in valueConvertor.conf ){ 36 valueConvertor.conf[i] = new RegExp("\\b"+valueConvertor.conf[i]+"\\b"); 37 } 38 39 for(i=0;i<input.length;i++) { 40 try { 41 input[i].addEventListener('blur', valueConvertor.convert, false); 42 } catch (e) { 43 input[i].attachEvent('onblur', (function(el){return function(){valueConvertor.convert.call(el);};})(input[i])); 44 } 45 } 46 for(i=0;i<textarea.length;i++){ 47 try { 48 textarea[i].addEventListener('blur', valueConvertor.convert, false); 49 } catch (e) { 50 textarea[i].attachEvent('onblur', (function(el){return function(){valueConvertor.convert.call(el);};})(textarea[i])); 51 } 52 } 53 }, 54 55 convert : function(){ 56 57 if (this.className.match(valueConvertor.conf.asciiClass)) 58 this.value = valueConvertor.toAsciiCase(this.value); 59 else if (this.className.match(valueConvertor.conf.multibyteClass)) 60 this.value = valueConvertor.toMultibyteCase(this.value); 61 62 if (this.className.match(valueConvertor.conf.hiraganaClass)){ 63 this.value = valueConvertor.toZenkanaCase(this.value); 64 this.value = valueConvertor.toHiraganaCase(this.value); 65 this.value = valueConvertor.toPaddingCase(this.value); 66 } 67 else if (this.className.match(valueConvertor.conf.katakanaClass)){ 68 this.value = valueConvertor.toZenkanaCase(this.value); 69 this.value = valueConvertor.toKatakanaCase(this.value); 70 this.value = valueConvertor.toPaddingCase(this.value); 71 } 72 73 if(this.className.match(valueConvertor.conf.fullwidthKanaClass)){ 74 this.value = valueConvertor.toZenkanaCase(this.value); 75 this.value = valueConvertor.toPaddingCase(this.value); 76 } 77 else if(this.className.match(valueConvertor.conf.halfwidthKanaClass)){ 78 this.value = valueConvertor.toHankanaCase(this.value); 79 } 80 }, 81 82 toAsciiCase : function(text){ 83 var i, charCode, charArray = []; 84 for(i=text.length-1;0<=i;i--) { 85 charCode = charArray[i] = text.charCodeAt(i); 86 switch(true) { 87 case (charCode <= 0xff5e && 0xff01 <= charCode): 88 charArray[i] -= 0xfee0; 89 break; 90 case (charCode == 0x3000): 91 charArray[i] = 0x0020; 92 break; 93 case (charCode == 0x30FC): 94 charArray[i] = 0x002D; 95 break; 96 } 97 } 98 return String.fromCharCode.apply(null, charArray); 99 }, 100 101 toMultibyteCase : function(text){ 102 var i, charCode, charArray = []; 103 for(i=text.length-1;0<=i;i--) 104 { 105 charCode = charArray[i] = text.charCodeAt(i); 106 switch(true) { 107 case (charCode <= 0x007E && 0x0021 <= charCode): 108 charArray[i] += 0xFEE0; 109 break; 110 case (charCode == 0x0020): 111 charArray[i] = 0x3000; 112 break; 113 } 114 } 115 return String.fromCharCode.apply(null, charArray); 116 }, 117 118 toZenkanaCase : function(text){ 119 var i, charCode, m, charArray = []; 120 m = 121 { 122 0xFF66:0x30F2, 0xFF67:0x30A1, 0xFF68:0x30A3, 0xFF69:0x30A5, 0xFF6A:0x30A7, 123 0xFF6B:0x30A9, 0xff6c:0x30e3, 0xff6d:0x30e5, 0xff6e:0x30e7, 0xff6f:0x30c3, 124 0xFF70:0x30FC, 0xFF71:0x30A2, 0xFF72:0x30A4, 0xFF73:0x30A6, 0xFF74:0x30A8, 125 0xFF75:0x30AA, 0xFF76:0x30AB, 0xFF77:0x30AD, 0xFF78:0x30AF, 0xFF79:0x30B1, 126 0xFF7A:0x30B3, 0xFF7B:0x30B5, 0xFF7C:0x30B7, 0xFF7D:0x30B9, 0xFF7E:0x30BB, 127 0xFF7F:0x30BD, 0xFF80:0x30BF, 0xFF81:0x30C1, 0xFF82:0x30C4, 0xFF83:0x30C6, 128 0xFF84:0x30C8, 0xFF85:0x30CA, 0xFF86:0x30CB, 0xFF87:0x30CC, 0xFF88:0x30CD, 129 0xFF89:0x30CE, 0xFF8A:0x30CF, 0xFF8B:0x30D2, 0xFF8C:0x30D5, 0xFF8D:0x30D8, 130 0xFF8E:0x30DB, 0xFF8F:0x30DE, 0xFF90:0x30DF, 0xFF91:0x30E0, 0xFF92:0x30E1, 131 0xFF93:0x30E2, 0xFF94:0x30E4, 0xFF95:0x30E6, 0xFF96:0x30E8, 0xFF97:0x30E9, 132 0xFF98:0x30EA, 0xFF99:0x30EB, 0xFF9A:0x30EC, 0xFF9B:0x30ED, 0xFF9C:0x30EF, 133 0xFF9D:0x30F3, 0xFF9E:0x309B, 0xFF9F:0x309C 134 }; 135 136 for(i=text.length-1;0<=i;i--){
137 charCode = text.charCodeAt(i); 138 if (m[charCode]){ 139 charArray[i] = m[charCode]; 140 } 141 else{ 142 charArray[i] = charCode; 143 } 144 } 145 146 return String.fromCharCode.apply(null, charArray); 147 }, 148 149 toHankanaCase : function(text){ 150 var i, charCode, m, charArray = []; 151 m = 152 { 153 0x30A1:0xFF67, 0x30A3:0xFF68, 0x30A5:0xFF69, 0x30A7:0xFF6A, 0x30A9:0xFF6B, 154 0x30e3:0xff6c, 0x30e5:0xff6d, 0x30e7:0xff6e, 0x30c3:0xff6f, 0x30FC:0xFF70, 155 0x30A2:0xFF71, 0x30A4:0xFF72, 0x30A6:0xFF73, 0x30A8:0xFF74, 0x30AA:0xFF75, 156 0x30AB:0xFF76, 0x30AD:0xFF77, 0x30AF:0xFF78, 0x30B1:0xFF79, 0x30B3:0xFF7A, 157 0x30B5:0xFF7B, 0x30B7:0xFF7C, 0x30B9:0xFF7D, 0x30BB:0xFF7E, 0x30BD:0xFF7F, 158 0x30BF:0xFF80, 0x30C1:0xFF81, 0x30C4:0xFF82, 0x30C6:0xFF83, 0x30C8:0xFF84, 159 0x30CA:0xFF85, 0x30CB:0xFF86, 0x30CC:0xFF87, 0x30CD:0xFF88, 0x30CE:0xFF89, 160 0x30CF:0xFF8A, 0x30D2:0xFF8B, 0x30D5:0xFF8C, 0x30D8:0xFF8D, 0x30DB:0xFF8E, 161 0x30DE:0xFF8F, 0x30DF:0xFF90, 0x30E0:0xFF91, 0x30E1:0xFF92, 0x30E2:0xFF93, 162 0x30E4:0xFF94, 0x30E6:0xFF95, 0x30E8:0xFF96, 0x30E9:0xFF97, 0x30EA:0xFF98, 163 0x30EB:0xFF99, 0x30EC:0xFF9A, 0x30ED:0xFF9B, 0x30EF:0xFF9C, 0x30F3:0xFF9D, 164 0x309B:0xFF9E, 0x309C:0xFF9F, 0x30F2:0xFF66 165 }; 166 for(i=0;i<text.length;i++) { 167 charCode = text.charCodeAt(i); 168 switch(true) { 169 case (charCode in m): 170 charArray.push(m[charCode]); 171 break; 172 case (0x30AB <= charCode && charCode <= 0x30C9): 173 charArray.push(m[charCode-1], 0xFF9E); 174 break; 175 case (0x30CF <= charCode && charCode <= 0x30DD): 176 charArray.push(m[charCode-charCode%3], [0xFF9E,0xFF9F][charCode%3-1]); 177 break; 178 case (0x30f4 == charCode): 179 charArray.push(0xff73, 0xFF9E); 180 break; 181 default: 182 charArray.push(charCode); 183 break; 184 } 185 } 186 return String.fromCharCode.apply(null, charArray); 187 }, 188 189 toHiraganaCase : function(text){ 190 var i, charCode, charArray = []; 191 for(i=text.length-1;0<=i;i--){ 192 charCode = text.charCodeAt(i); 193 charArray[i] = (0x30A1 <= charCode && charCode <= 0x30F6) ? charCode - 0x0060 : charCode; 194 } 195 return String.fromCharCode.apply(null, charArray); 196 }, 197 198 toKatakanaCase : function(text){ 199 var i, charCode, m, charArray = []; 200 for(i=text.length-1;0<=i;i--){ 201 charCode = text.charCodeAt(i); 202 if(0x3041 <= charCode && charCode <= 0x3096){ 203 charArray[i] = charCode + 0x0060 ; 204 } 205 else{ 206 charArray[i] = charCode; 207 } 208 } 209 return String.fromCharCode.apply(null, charArray); 210 }, 211 212 //åè§ã®æ¿ç¹ãåè§ã®åæ¿ç¹ã®å¦ç 213 toPaddingCase : function(text){ 214 var i, charCode, charArray = []; 215 for(i=0;i<text.length;i++) 216 { 217 charCode = text.charCodeAt(i); 218 switch(true) 219 { 220 case (0x304B <= charCode && charCode <= 0x3062 && (charCode % 2 == 1)): 221 case (0x30AB <= charCode && charCode <= 0x30C2 && (charCode % 2 == 1)): 222 case (0x3064 <= charCode && charCode <= 0x3069 && (charCode % 2 == 0)): 223 case (0x30C4 <= charCode && charCode <= 0x30C9 && (charCode % 2 == 0)): 224 charArray.push(charCode + ({0x309B:1}[text.charCodeAt(i+1)] || 0)); 225 if(charArray[charArray.length-1] != charCode){ i++; }; 226 break; 227 case (0x306F <= charCode && charCode <= 0x307F && (charCode % 3 == 0)): 228 case (0x30CF <= charCode && charCode <= 0x30DD && (charCode % 3 == 0)): 229 charArray.push(charCode + ({0x309B:1,0x309C:2}[text.charCodeAt(i+1)] || 0)); 230 if(charArray[charArray.length-1] != charCode){ i++; }; 231 break; 232 case (0x3046 == charCode || 0x30a6 == charCode): 233 charArray.push(charCode + ({0x309B:78}[text.charCodeAt(i+1)] || 0)); 234 if(charArray[charArray.length-1] != charCode){ i++; }; 235 break; 236 default: 237 charArray.push(charCode); 238 break; 239 } 240 } 241 return String.fromCharCode.apply(null, charArray); 242 }, 243 244 addEvent : function(){ 245 try { 246 window.addEventListener('load', this.main, false); 247 } catch (e) { 248 window.attachEvent('onload', this.main); 249 } 250 } 251 252} 253 254valueConvertor.addEvent();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.