ini-simple-parser
Version:
A simple, fast and configurable INI parser.
57 lines (56 loc) • 1.83 kB
JavaScript
/* IMPORT */
/* MAIN */
const inferBoolean = (value) => {
if (!isString(value) || !value.length)
return value;
if (value === 'true' || value === 'TRUE')
return true;
if (value === 'false' || value === 'FALSE')
return false;
return value;
};
const inferNull = (value) => {
if (!isString(value) || !value.length)
return value;
if (value === 'null' || value === 'NULL')
return null;
return value;
};
const inferNumber = (value) => {
if (!isString(value) || !value.length)
return value;
const firstChar = value.charCodeAt(0);
if (firstChar !== 43 && firstChar !== 45 && firstChar !== 46 && (firstChar < 48 || firstChar > 57))
return value;
const number = Number(value);
if (!Number.isNaN(number))
value = number;
return value;
};
const inferString = (value) => {
if (!isString(value) || !value.length)
return value;
const firstChar = value[0];
const lastChar = value[value.length - 1];
if (firstChar === "'" && lastChar === "'")
return value.slice(1, -1);
if (firstChar === '"' && lastChar === '"')
return value.slice(1, -1);
return value;
};
const isString = (value) => {
return typeof value === 'string';
};
const stripComments = (value) => {
if (!isString(value) || !value.length)
return value;
const comment1Index = value.indexOf('#');
const comment2Index = value.indexOf(';');
const commentIndex = (comment1Index >= 0) ? (comment2Index >= 0 ? Math.min(comment1Index, comment2Index) : comment1Index) : comment2Index;
if (commentIndex < 0)
return value;
value = value.slice(0, commentIndex).trimEnd();
return value;
};
/* EXPORT */
export { inferBoolean, inferNull, inferNumber, inferString, isString, stripComments };