amaran-light-cli
Version:
Command line tool for controlling Aputure Amaran lights via WebSocket to a local Amaran desktop app.
42 lines • 1.46 kB
JavaScript
export function parseStrictNumber(value, label) {
const trimmed = value.trim();
if (!/^-?(?:\d+|\d*\.\d+)$/.test(trimmed)) {
throw new Error(`${label} must be a number`);
}
return Number(trimmed);
}
export function parseStrictInteger(value, label) {
const trimmed = value.trim();
if (!/^-?\d+$/.test(trimmed)) {
throw new Error(`${label} must be an integer`);
}
return Number(trimmed);
}
export function parseBooleanString(value, label) {
const normalized = value.toLowerCase().trim();
if (normalized === 'true' || normalized === '1' || normalized === 'yes' || normalized === 'on')
return true;
if (normalized === 'false' || normalized === '0' || normalized === 'no' || normalized === 'off')
return false;
throw new Error(`${label} must be true or false`);
}
export function parseCloudCover(value) {
if (value === undefined)
return undefined;
if (typeof value === 'number')
return value;
const trimmed = value.trim();
if (trimmed.endsWith('%')) {
return parseStrictNumber(trimmed.slice(0, -1), 'cloud-cover') / 100;
}
return parseStrictNumber(trimmed, 'cloud-cover');
}
export function escapeXmlText(value) {
return value
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
//# sourceMappingURL=parseUtils.js.map