diff options
Diffstat (limited to 'javascript/i18n/phonenumbers/demo.js')
-rw-r--r-- | javascript/i18n/phonenumbers/demo.js | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/javascript/i18n/phonenumbers/demo.js b/javascript/i18n/phonenumbers/demo.js new file mode 100644 index 0000000..b5bfaa3 --- /dev/null +++ b/javascript/i18n/phonenumbers/demo.js @@ -0,0 +1,161 @@ +/** + * @license + * Copyright (C) 2010 The Libphonenumber Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @fileoverview Phone Number Parser Demo. + * + * @author Nikolaos Trogkanis + */ + +goog.require('goog.dom'); +goog.require('goog.json'); +goog.require('goog.proto2.ObjectSerializer'); +goog.require('goog.string.StringBuffer'); +goog.require('i18n.phonenumbers.AsYouTypeFormatter'); +goog.require('i18n.phonenumbers.PhoneNumberFormat'); +goog.require('i18n.phonenumbers.PhoneNumberType'); +goog.require('i18n.phonenumbers.PhoneNumberUtil'); +goog.require('i18n.phonenumbers.PhoneNumberUtil.ValidationResult'); + + +function phoneNumberParser() { + var $ = goog.dom.getElement; + var phoneNumber = $('phoneNumber').value; + var regionCode = $('defaultCountry').value; + var carrierCode = $('carrierCode').value; + var output = new goog.string.StringBuffer(); + try { + var phoneUtil = i18n.phonenumbers.PhoneNumberUtil.getInstance(); + var number = phoneUtil.parseAndKeepRawInput(phoneNumber, regionCode); + output.append('****Parsing Result:****\n'); + output.append(goog.json.serialize(new goog.proto2.ObjectSerializer( + goog.proto2.ObjectSerializer.KeyOption.NAME).serialize(number))); + output.append('\n\n****Validation Results:****'); + var isPossible = phoneUtil.isPossibleNumber(number); + output.append('\nResult from isPossibleNumber(): '); + output.append(isPossible); + if (!isPossible) { + output.append('\nResult from isPossibleNumberWithReason(): '); + var PNV = i18n.phonenumbers.PhoneNumberUtil.ValidationResult; + switch (phoneUtil.isPossibleNumberWithReason(number)) { + case PNV.INVALID_COUNTRY_CODE: + output.append('INVALID_COUNTRY_CODE'); + break; + case PNV.TOO_SHORT: + output.append('TOO_SHORT'); + break; + case PNV.TOO_LONG: + output.append('TOO_LONG'); + break; + } + // IS_POSSIBLE shouldn't happen, since we only call this if _not_ + // possible. + output.append('\nNote: numbers that are not possible have type ' + + 'UNKNOWN, an unknown region, and are considered invalid.'); + } else { + var isNumberValid = phoneUtil.isValidNumber(number); + output.append('\nResult from isValidNumber(): '); + output.append(isNumberValid); + if (isNumberValid && regionCode && regionCode != 'ZZ') { + output.append('\nResult from isValidNumberForRegion(): '); + output.append(phoneUtil.isValidNumberForRegion(number, regionCode)); + } + output.append('\nPhone Number region: '); + output.append(phoneUtil.getRegionCodeForNumber(number)); + output.append('\nResult from getNumberType(): '); + var PNT = i18n.phonenumbers.PhoneNumberType; + switch (phoneUtil.getNumberType(number)) { + case PNT.FIXED_LINE: + output.append('FIXED_LINE'); + break; + case PNT.MOBILE: + output.append('MOBILE'); + break; + case PNT.FIXED_LINE_OR_MOBILE: + output.append('FIXED_LINE_OR_MOBILE'); + break; + case PNT.TOLL_FREE: + output.append('TOLL_FREE'); + break; + case PNT.PREMIUM_RATE: + output.append('PREMIUM_RATE'); + break; + case PNT.SHARED_COST: + output.append('SHARED_COST'); + break; + case PNT.VOIP: + output.append('VOIP'); + break; + case PNT.PERSONAL_NUMBER: + output.append('PERSONAL_NUMBER'); + break; + case PNT.PAGER: + output.append('PAGER'); + break; + case PNT.UAN: + output.append('UAN'); + break; + case PNT.UNKNOWN: + output.append('UNKNOWN'); + break; + } + } + var PNF = i18n.phonenumbers.PhoneNumberFormat; + output.append('\n\n****Formatting Results:**** '); + output.append('\nE164 format: '); + output.append(isNumberValid ? + phoneUtil.format(number, PNF.E164) : + 'invalid'); + output.append('\nOriginal format: '); + output.append(phoneUtil.formatInOriginalFormat(number, regionCode)); + output.append('\nNational format: '); + output.append(phoneUtil.format(number, PNF.NATIONAL)); + output.append('\nInternational format: '); + output.append(isNumberValid ? + phoneUtil.format(number, PNF.INTERNATIONAL) : + 'invalid'); + output.append('\nOut-of-country format from US: '); + output.append(isNumberValid ? + phoneUtil.formatOutOfCountryCallingNumber(number, 'US') : + 'invalid'); + output.append('\nOut-of-country format from Switzerland: '); + output.append(isNumberValid ? + phoneUtil.formatOutOfCountryCallingNumber(number, 'CH') : + 'invalid'); + if (carrierCode.length > 0) { + output.append('\nNational format with carrier code: '); + output.append(phoneUtil.formatNationalNumberWithCarrierCode(number, + carrierCode)); + } + output.append('\n\n****AsYouTypeFormatter Results****'); + var formatter = new i18n.phonenumbers.AsYouTypeFormatter(regionCode); + var phoneNumberLength = phoneNumber.length; + for (var i = 0; i < phoneNumberLength; ++i) { + var inputChar = phoneNumber.charAt(i); + output.append('\nChar entered: '); + output.append(inputChar); + output.append(' Output: '); + output.append(formatter.inputDigit(inputChar)); + } + } catch (e) { + output.append('\n' + e); + } + $('output').value = output.toString(); + return false; +} + +goog.exportSymbol('phoneNumberParser', phoneNumberParser); |