UNPKG

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
"use strict"; 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;