<!DOCTYPE html>
|
|
<html>
|
|
<!--
|
|
@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.
|
|
-->
|
|
<!--
|
|
Author: Nikolaos Trogkanis
|
|
-->
|
|
<head>
|
|
<title>Phone Number Parser Demo</title>
|
|
<script src="http://closure-library.googlecode.com/svn/trunk/closure/goog/base.js"></script>
|
|
<script>
|
|
goog.require('goog.dom');
|
|
goog.require('goog.json');
|
|
goog.require('goog.proto2.ObjectSerializer');
|
|
goog.require('goog.string.StringBuffer');
|
|
</script>
|
|
<script src="phonemetadata.pb.js"></script>
|
|
<script src="phonenumber.pb.js"></script>
|
|
<script src="metadata.js"></script>
|
|
<script src="phonenumberutil.js"></script>
|
|
<script src="asyoutypeformatter.js"></script>
|
|
</head>
|
|
<body>
|
|
|
|
<script>
|
|
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 isNumberValid = phoneUtil.isValidNumber(number);
|
|
output.append('\nResult from isValidNumber(): ');
|
|
output.append(isNumberValid);
|
|
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 isPossibleNumber(): ');
|
|
output.append(phoneUtil.isPossibleNumber(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('\nInternational format: ');
|
|
output.append(isNumberValid ?
|
|
phoneUtil.format(number, PNF.INTERNATIONAL) :
|
|
'invalid');
|
|
output.append('\nNational format: ');
|
|
output.append(phoneUtil.format(number, PNF.NATIONAL));
|
|
output.append('\nOut-of-country format from US: ');
|
|
output.append(isNumberValid ?
|
|
phoneUtil.formatOutOfCountryCallingNumber(number, 'US') :
|
|
'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;
|
|
}
|
|
</script>
|
|
|
|
<h2>Phone Number Parser Demo</h2>
|
|
|
|
<form>
|
|
<p>
|
|
Specify a Phone Number:
|
|
<input type="text" name="phoneNumber" id="phoneNumber" size="25" />
|
|
</p>
|
|
<p>
|
|
Specify a Default Country:
|
|
<input type="text" name="defaultCountry" id="defaultCountry" size="2" />
|
|
(ISO 3166-1 two-letter country code)
|
|
</p>
|
|
<p>
|
|
Specify a Carrier Code:
|
|
<input type="text" name="carrierCode" id="carrierCode" size="2" />
|
|
(optional, only valid for some countries)
|
|
</p>
|
|
<input type="submit" value="Submit" onclick="return phoneNumberParser();" />
|
|
<input type="reset" value="Reset" />
|
|
<p>
|
|
<textarea id="output" rows="30" cols="80"></textarea>
|
|
</p>
|
|
</form>
|
|
|
|
</body>
|
|
</html>
|