UNPKG

@formatjs/ecma402-abstract

Version:

A collection of implementation for ECMAScript abstract operations

32 lines (31 loc) 720 B
/** * https://tc39.es/ecma402/#sec-getstringorbooleanoption * @param opts * @param prop * @param values * @param trueValue * @param falsyValue * @param fallback */ import { ToString } from "./262.js"; export function GetStringOrBooleanOption(opts, prop, values, trueValue, falsyValue, fallback) { let value = opts[prop]; if (value === undefined) { return fallback; } if (value === true) { return trueValue; } const valueBoolean = Boolean(value); if (valueBoolean === false) { return falsyValue; } value = ToString(value); if (value === "true" || value === "false") { return fallback; } if ((values || []).indexOf(value) === -1) { throw new RangeError(`Invalid value ${value}`); } return value; }