UNPKG

google-libphonenumber

Version:

A browserify-compatible wrapper for Google's libphonenumber.

162 lines (156 loc) 6.16 kB
/** * @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);