import Metadata from '../metadata.js'
import { VALID_DIGITS } from '../constants.js'

const CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])')

export default function stripIddPrefix(number, country, callingCode, metadataJson) {
	if (!country) {
		return
	}

	// Get the IDD prefix pattern.
	const metadata = new Metadata(metadataJson)
	metadata.selectNumberingPlan(country || callingCode)
	const IDDPrefixPattern = new RegExp(metadata.IDDPrefix())

	// Check if the number is IDD-prefixed.
	if (number.search(IDDPrefixPattern) !== 0) {
		return
	}

	// Strip IDD prefix.
	number = number.slice(number.match(IDDPrefixPattern)[0].length)

	// If there're any digits after an IDD prefix,
	// then those digits are a country calling code.
	// Since no country code starts with a `0`,
	// the code below validates that the next digit (if present) is not `0`.
	const matchedGroups = number.match(CAPTURING_DIGIT_PATTERN)
	if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {
		if (matchedGroups[1] === '0') {
			return
		}
	}

	return number
}