yini-parser
Version:
Node.js parser for YINI — a clean, structured INI alternative with types, simple section nesting, comments, and strict mode.
71 lines (70 loc) • 3.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.extractYiniLine = void 0;
const env_1 = require("../config/env");
const print_1 = require("../utils/print");
const string_1 = require("../utils/string");
const yiniHelpers_1 = require("../yiniHelpers");
/**
* Extract significant YINI line from YINI content (that may be surrounded by comments.).
* @param rawYiniContent For example:
* // This whole line is a comment.
* ^SectionName# This part is a comment.
* // This whole line is a comment.
* @returns Will filter out any comments (before or after) and return only one single significant YINI line.
*/
const extractYiniLine = (rawYiniContent) => {
(0, print_1.debugPrint)('-> Entered extractSignificantYiniCode(..)');
const significantLines = [];
let resultLine = '';
(0, print_1.debugPrint)('rawYiniContent: >>>' + rawYiniContent + '<<<');
const contentLines = (0, string_1.splitLines)(rawYiniContent);
if ((0, env_1.isDebug)()) {
console.log(`contentLines: (len: ${contentLines.length})`);
(0, print_1.printObject)(contentLines);
}
// contentLines.forEach((row: string) => {
for (const line of contentLines) {
let row = line;
(0, print_1.debugPrint)('---');
// debugPrint('row (a): >>>' + row + '<<<')
// row = stripNLAndAfter(row)
(0, print_1.debugPrint)('row (b): >>>' + row + '<<<');
row = (0, yiniHelpers_1.stripCommentsAndAfter)(row);
(0, print_1.debugPrint)('row (c): >>>' + row + '<<<');
row = row.trim();
(0, print_1.debugPrint)('row (d): >>>' + row + '<<<');
if (row) {
(0, print_1.debugPrint)('Found some content in split row (non-comments).');
(0, print_1.debugPrint)('Split row: >>>' + row + '<<<');
// Use this as input in line.
// line = row
significantLines.push(row);
// break
}
}
(0, print_1.debugPrint)('--- End: parse line from section content-----------------');
(0, print_1.debugPrint)();
switch (significantLines.length) {
case 0:
resultLine = '';
break;
case 1:
(0, print_1.debugPrint)('Did only find one significant lines in rawYiniContent, OK');
resultLine = significantLines[0];
break;
default:
(0, print_1.debugPrint)('(!) Did find several significant lines in rawYiniContent! - Maybe internal error...');
(0, print_1.debugPrint)('significantLines[0] = >>>' + significantLines[0] + '<<<');
(0, print_1.debugPrint)('significantLines[1] = >>>' + significantLines[1] + '<<<');
// throw new Error(
// 'Internal error: Detected several row lines in rawYiniContent: >>>' +
// rawYiniContent +
// '<<<',
// )
}
(0, print_1.debugPrint)('<- About to leave extractSignificantYiniCode(..):');
(0, print_1.debugPrint)('resultLine: >>>' + resultLine + '<<<');
return resultLine;
};
exports.extractYiniLine = extractYiniLine;