1/** 2 * GAddress Finder - Googleæ¥æ¬èªå ¥åAPIã使ã£ã¦ãéµä¾¿çªå·ããä½æãæ¤ç´¢ 3 * @see http://0-oo.net/sbox/javascript/gaddress-finder 4 * @version 0.2.0 5 * @copyright 2011-2013 [email protected] 6 * @license http://0-oo.net/pryn/MIT_license.txt (The MIT license) 7 * 8 * See also 9 * @see http://www.google.com/intl/ja/ime/cgiapi.html 10 */ 11var GAddressFinder = {}; 12/** 13 * éµä¾¿çªå·ããä½æãæ¤ç´¢ãã 14 * callbackã«å¼æ°ã§æ¸¡ãããã®ã¯ [<使>, <é½éåºç>, <é½éåºç以å¤ã®ä½æ>] ã®é å 15 * @param String zip éµä¾¿çªå·ï¼ãã©ã¼ãããã¯"000-0000" or "0000000"ï¼ 16 * @param Function callback æ¤ç´¢çµæã渡ã颿° 17 * @return String æ¤ç´¢å®è¡æã¯åè§ã«ãã¦ãã¤ãã³ãå ¥ããéµä¾¿çªå·ãããã§ãªããã°null 18 */ 19GAddressFinder.call = function (zip, callback) { 20 if (zip) { 21 zip = this._toHan(zip); //å ¨è§ã®å ´åã¯åè§ã«ãã 22 } 23 24 var matches = zip.match(/^(\d{3})(\d{4})$/); 25 26 if (matches) { 27 //ãã¤ãã³ãç¡ãå ´åã¯å ¥ãã 28 zip = matches[1] + '-' + matches[2]; 29 } 30 31 if (!zip.match(/^\d{3}-\d{4}$/)) { 32 return null; 33 } 34 35 this._userCallback = callback; 36 37 var url = '//www.google.com/transliterate'; //httpsã«ãå¯¾å¿ 38 url += '?langpair=ja-Hira|ja&jsonp=GAddressFinder.callback&text=' + zip; 39 40 var script = document.createElement('script'); 41 script.src = url; 42 script.type = 'text/javascript'; 43 document.body.appendChild(script); 44 45 return zip; 46}; 47/** 48 * éµä¾¿çªå·ããæ¤ç´¢ãã使ãå ¥åæ¬ã«ã»ãããã 49 * @param String zipId éµä¾¿çªå·ãå ¥åããè¦ç´ ã®id屿§ 50 * @param String prefId 使ãã»ããããè¦ç´ ã®id屿§ 51 * @param String otherId (optional) é½éåºçã¨ãã®ä»ãåããå ´åã®ãã®ä»ã®id屿§ 52 * @return Boolean æ¤ç´¢ãå®è¡ãããã©ãã 53 */ 54GAddressFinder.set = function (zipId, prefId, otherId) { 55 var zip = document.getElementById(zipId); 56 57 var result = this.call(zip.value, function (address) { 58 if (!address) { 59 alert('該å½ãã使ãããã¾ããã§ãã'); 60 return; 61 } 62 63 var elm = document.getElementById(prefId); //ä½ææ¬ or é½éåºçæ¬ 64 65 if (!otherId) { 66 //ããã¹ãããã¯ã¹1ã¤ã®å ´å 67 elm.value = address[0]; 68 return; 69 } 70 71 if (elm.tagName == 'INPUT') { 72 elm.value = address[1]; 73 } else { 74 for (var i = 0, len = elm.length; i < len; i++) { 75 if (elm.options[i].text == address[1]) { 76 elm.options[i].selected = true; 77 break; 78 } 79 } 80 } 81 82 document.getElementById(otherId).value = address[2]; 83 }); 84 85 if (result) { 86 zip.value = result; 87 return true; 88 } else { 89 alert('æ£ããéµä¾¿çªå·ãå ¥åãã¦ãã ãã'); 90 return false; 91 } 92}; 93/** 94 * Googleæ¥æ¬èªå ¥åAPIããJSONPã§å¼ã°ãã 95 * @param Array results æ¤ç´¢çµæ 96 */ 97GAddressFinder.callback = function (results) { 98 this._userCallback(results[0][1][0].match(/^(.{2,3}?(?:é½|é|åº|ç))(.*)$/)); 99}; 100/** 101 * åè§ã«å¤æ 102 * @param String before 103 * @retrun String 104 */ 105GAddressFinder._toHan = function (before) { 106 var zen = 'ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ã¼'; //é·é³ç¬¦å·ã夿ãã¦ããã 107 var han = '0123456789--'; 108 var after = ''; 109 110 for (var i = 0, len = before.length; i < len; i++) { 111 var c = before.charAt(i); 112 after += han.charAt(zen.indexOf(c)) || c; 113 } 114 115 return after; 116};
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.