1*082815dcSEvan Bacon"use strict"; 2*082815dcSEvan Bacon 3*082815dcSEvan BaconObject.defineProperty(exports, "__esModule", { 4*082815dcSEvan Bacon value: true 5*082815dcSEvan Bacon}); 6*082815dcSEvan Baconexports.parsePropertiesFile = parsePropertiesFile; 7*082815dcSEvan Baconexports.propertiesListToString = propertiesListToString; 8*082815dcSEvan Baconfunction parsePropertiesFile(contents) { 9*082815dcSEvan Bacon const propertiesList = []; 10*082815dcSEvan Bacon const lines = contents.split('\n'); 11*082815dcSEvan Bacon for (let i = 0; i < lines.length; i++) { 12*082815dcSEvan Bacon const line = lines[i].trim(); 13*082815dcSEvan Bacon if (!line) { 14*082815dcSEvan Bacon propertiesList.push({ 15*082815dcSEvan Bacon type: 'empty' 16*082815dcSEvan Bacon }); 17*082815dcSEvan Bacon } else if (line.startsWith('#')) { 18*082815dcSEvan Bacon propertiesList.push({ 19*082815dcSEvan Bacon type: 'comment', 20*082815dcSEvan Bacon value: line.substring(1).trimStart() 21*082815dcSEvan Bacon }); 22*082815dcSEvan Bacon } else { 23*082815dcSEvan Bacon const eok = line.indexOf('='); 24*082815dcSEvan Bacon const key = line.slice(0, eok); 25*082815dcSEvan Bacon const value = line.slice(eok + 1, line.length); 26*082815dcSEvan Bacon propertiesList.push({ 27*082815dcSEvan Bacon type: 'property', 28*082815dcSEvan Bacon key, 29*082815dcSEvan Bacon value 30*082815dcSEvan Bacon }); 31*082815dcSEvan Bacon } 32*082815dcSEvan Bacon } 33*082815dcSEvan Bacon return propertiesList; 34*082815dcSEvan Bacon} 35*082815dcSEvan Baconfunction propertiesListToString(props) { 36*082815dcSEvan Bacon let output = ''; 37*082815dcSEvan Bacon for (let i = 0; i < props.length; i++) { 38*082815dcSEvan Bacon const prop = props[i]; 39*082815dcSEvan Bacon if (prop.type === 'empty') { 40*082815dcSEvan Bacon output += ''; 41*082815dcSEvan Bacon } else if (prop.type === 'comment') { 42*082815dcSEvan Bacon output += '# ' + prop.value; 43*082815dcSEvan Bacon } else if (prop.type === 'property') { 44*082815dcSEvan Bacon output += `${prop.key}=${prop.value}`; 45*082815dcSEvan Bacon } else { 46*082815dcSEvan Bacon // @ts-ignore: assertion 47*082815dcSEvan Bacon throw new Error(`Invalid properties type "${prop.type}"`); 48*082815dcSEvan Bacon } 49*082815dcSEvan Bacon if (i < props.length - 1) { 50*082815dcSEvan Bacon output += '\n'; 51*082815dcSEvan Bacon } 52*082815dcSEvan Bacon } 53*082815dcSEvan Bacon return output; 54*082815dcSEvan Bacon} 55*082815dcSEvan Bacon//# sourceMappingURL=Properties.js.map