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