import instanceOfType from './instanceOfType';

export default function getEffectiveBooleanValue (value) {
	const typedValue = value.value[0].typedValue;

	if (instanceOfType(value.value[0], 'xs:string') ||
		instanceOfType(value.value[0], 'xs:anyURI') ||
		instanceOfType(value.value[0], 'xs:untypedAtomic') ||
		instanceOfType(value.value[0], 'xs:QName')) {
		return typedValue.length !== 0;
	}

	if (instanceOfType(value.value[0], 'xs:boolean')) {
		return typedValue;
	}

	if (instanceOfType(value.value[0], 'xs:numeric')) {
		return !isNaN(typedValue) || typedValue !== 0;
	}

	throw new Error('FORG0006: A wrong argument type was specified in a function call.');
}
