123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports["default"] = extractNationalNumberFromPossiblyIncompleteNumber;
- function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {
- if (number && metadata.numberingPlan.nationalPrefixForParsing()) {
-
-
-
- var prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')');
- var prefixMatch = prefixPattern.exec(number);
- if (prefixMatch) {
- var nationalNumber;
- var carrierCode;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- var capturedGroupsCount = prefixMatch.length - 1;
- var hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount];
- if (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {
- nationalNumber = number.replace(prefixPattern, metadata.nationalPrefixTransformRule());
-
- if (capturedGroupsCount > 1) {
- carrierCode = prefixMatch[1];
- }
- }
-
-
-
-
-
- else {
-
-
-
-
-
- var prefixBeforeNationalNumber = prefixMatch[0];
- nationalNumber = number.slice(prefixBeforeNationalNumber.length);
-
- if (hasCapturedGroups) {
- carrierCode = prefixMatch[1];
- }
- }
-
-
-
-
- var nationalPrefix;
- if (hasCapturedGroups) {
- var possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1]);
- var possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup);
-
-
-
-
-
- if (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {
- nationalPrefix = metadata.numberingPlan.nationalPrefix();
- }
- } else {
- nationalPrefix = prefixMatch[0];
- }
- return {
- nationalNumber: nationalNumber,
- nationalPrefix: nationalPrefix,
- carrierCode: carrierCode
- };
- }
- }
- return {
- nationalNumber: number
- };
- }
|