libphonenumber-js
Version:
A simpler (and smaller) rewrite of Google Android's popular libphonenumber library
148 lines (116 loc) • 4.79 kB
JavaScript
export function get_phone_code(country_metadata) {
return country_metadata[0];
}
export function get_national_number_pattern(country_metadata) {
return country_metadata[1];
}
export function get_formats(country_metadata) {
return country_metadata[2] || [];
}
export function get_national_prefix(country_metadata) {
return country_metadata[3];
}
export function get_national_prefix_formatting_rule(country_metadata) {
return country_metadata[4];
}
export function get_national_prefix_for_parsing(country_metadata) {
var national_prefix_for_parsing = country_metadata[5];
// If `national_prefix_for_parsing` is not set explicitly,
// then infer it from `national_prefix` (if any)
if (!national_prefix_for_parsing) {
national_prefix_for_parsing = get_national_prefix(country_metadata);
}
return national_prefix_for_parsing;
}
export function get_national_prefix_transform_rule(country_metadata) {
return country_metadata[6];
}
export function get_national_prefix_is_optional_when_formatting(country_metadata) {
return country_metadata[7];
}
export function get_leading_digits(country_metadata) {
return country_metadata[8];
}
export function get_format_pattern(format_array) {
return format_array[0];
}
export function get_format_format(format_array) {
return format_array[1];
}
export function get_format_leading_digits_patterns(format_array) {
return format_array[2] || [];
}
export function get_format_national_prefix_formatting_rule(format_array, country_metadata) {
return format_array[3] || get_national_prefix_formatting_rule(country_metadata);
}
export function get_format_national_prefix_is_optional_when_formatting(format_array, country_metadata) {
return format_array[4] || get_national_prefix_is_optional_when_formatting(country_metadata);
}
export function get_format_national_prefix_is_mandatory_when_formatting(format_array, country_metadata) {
var national_prefix_formatting_rule = get_format_national_prefix_formatting_rule(format_array, country_metadata);
// National prefix is omitted if there's no national prefix formatting rule
// set for this country, or when the national prefix formatting rule
// contains no national prefix itself, or when this rule is set but
// national prefix is optional for this phone number format
// (and it is not enforced explicitly)
return national_prefix_formatting_rule &&
// Check that national prefix formatting rule is not a dummy one
national_prefix_formatting_rule !== '$1' &&
// Check that national prefix formatting rule actually has national prefix digit(s)
/\d/.test(national_prefix_formatting_rule.replace('$1', '')) &&
// Or maybe national prefix is optional for this format
!get_format_national_prefix_is_optional_when_formatting(format_array, country_metadata);
}
export function get_format_international_format(format_array) {
return format_array[5] || get_format_format(format_array);
}
// Formatting information for regions which share
// a country calling code is contained by only one region
// for performance reasons. For example, for NANPA region
// ("North American Numbering Plan Administration",
// which includes USA, Canada, Cayman Islands, Bahamas, etc)
// it will be contained in the metadata for `US`.
export function get_metadata_by_country_phone_code(country_phone_code, metadata) {
var country_code = metadata.country_phone_code_to_countries[country_phone_code][0];
return metadata.countries[country_code];
}
export function get_types(country_metadata) {
return country_metadata[9];
}
function get_type(country_metadata, index) {
return get_types(country_metadata) ? get_types(country_metadata)[index] : undefined;
}
export function get_type_fixed_line(country_metadata) {
return get_type(country_metadata, 0);
}
export function get_type_mobile(country_metadata) {
return get_type(country_metadata, 1);
}
export function get_type_toll_free(country_metadata) {
return get_type(country_metadata, 2);
}
export function get_type_premium_rate(country_metadata) {
return get_type(country_metadata, 3);
}
export function get_type_personal_number(country_metadata) {
return get_type(country_metadata, 4);
}
export function get_type_voice_mail(country_metadata) {
return get_type(country_metadata, 5);
}
export function get_type_uan(country_metadata) {
return get_type(country_metadata, 6);
}
export function get_type_pager(country_metadata) {
return get_type(country_metadata, 7);
}
export function get_type_voip(country_metadata) {
return get_type(country_metadata, 8);
}
export function get_type_shared_cost(country_metadata) {
return get_type(country_metadata, 9);
}
export function get_country_phone_code(country, country_metadata) {
return get_phone_code(country_metadata[country]);
}
//# sourceMappingURL=metadata.js.map