UNPKG

simple-git

Version:

Simple GIT interface for node.js

54 lines 1.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const utils_1 = require("../utils"); class ConfigList { constructor() { this.files = []; this.values = Object.create(null); } get all() { if (!this._all) { this._all = this.files.reduce((all, file) => { return Object.assign(all, this.values[file]); }, {}); } return this._all; } addFile(file) { if (!(file in this.values)) { const latest = utils_1.last(this.files); this.values[file] = latest ? Object.create(this.values[latest]) : {}; this.files.push(file); } return this.values[file]; } addValue(file, key, value) { const values = this.addFile(file); if (!values.hasOwnProperty(key)) { values[key] = value; } else if (Array.isArray(values[key])) { values[key].push(value); } else { values[key] = [values[key], value]; } this._all = undefined; } } exports.ConfigList = ConfigList; function configListParser(text) { const config = new ConfigList(); const lines = text.split('\0'); for (let i = 0, max = lines.length - 1; i < max;) { const file = configFilePath(lines[i++]); const [key, value] = utils_1.splitOn(lines[i++], '\n'); config.addValue(file, key, value); } return config; } exports.configListParser = configListParser; function configFilePath(filePath) { return filePath.replace(/^(file):/, ''); } //# sourceMappingURL=ConfigList.js.map