33 lines
1.1 KiB
Plaintext
Executable File
33 lines
1.1 KiB
Plaintext
Executable File
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.IsWellFormedUnitIdentifier = void 0;
|
|
var IsSanctionedSimpleUnitIdentifier_1 = require("./IsSanctionedSimpleUnitIdentifier");
|
|
/**
|
|
* This follows https://tc39.es/ecma402/#sec-case-sensitivity-and-case-mapping
|
|
* @param str string to convert
|
|
*/
|
|
function toLowerCase(str) {
|
|
return str.replace(/([A-Z])/g, function (_, c) { return c.toLowerCase(); });
|
|
}
|
|
/**
|
|
* https://tc39.es/ecma402/#sec-iswellformedunitidentifier
|
|
* @param unit
|
|
*/
|
|
function IsWellFormedUnitIdentifier(unit) {
|
|
unit = toLowerCase(unit);
|
|
if ((0, IsSanctionedSimpleUnitIdentifier_1.IsSanctionedSimpleUnitIdentifier)(unit)) {
|
|
return true;
|
|
}
|
|
var units = unit.split('-per-');
|
|
if (units.length !== 2) {
|
|
return false;
|
|
}
|
|
var numerator = units[0], denominator = units[1];
|
|
if (!(0, IsSanctionedSimpleUnitIdentifier_1.IsSanctionedSimpleUnitIdentifier)(numerator) ||
|
|
!(0, IsSanctionedSimpleUnitIdentifier_1.IsSanctionedSimpleUnitIdentifier)(denominator)) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
exports.IsWellFormedUnitIdentifier = IsWellFormedUnitIdentifier;
|