@freemework/hosting
Version:
Hosting library of the Freemework Project.
38 lines • 1.66 kB
JavaScript
import { readFile } from "fs";
import { promisify } from "util";
import { pathToFileURL } from "url";
const readFileAsync = promisify(readFile);
import { FConfigurationDictionary } from "@freemework/common";
/**
* Very similar to Java property files
*/
export class FConfigurationProperties extends FConfigurationDictionary {
static async fromFile(propertiesConfigFile) {
const propertiesConfigFileURL = pathToFileURL(propertiesConfigFile);
const sourceURI = new URL(`configuration+file+properties://${propertiesConfigFileURL.pathname}`);
const fileContent = await readFileAsync(propertiesConfigFile);
return new FConfigurationProperties(sourceURI, fileContent.toString("utf-8"));
}
static factory(propertiesDocument) {
const encodedPropertiesDocument = encodeURIComponent(propertiesDocument);
const sourceURI = new URL(`configuration:properties?data=${encodedPropertiesDocument}`);
return new FConfigurationProperties(sourceURI, propertiesDocument);
}
constructor(sourceURI, propertiesDocument) {
const dict = {};
const lines = propertiesDocument.toString().split(/(?:\r\n|\r|\n)/g);
lines.forEach((line) => {
if (line.startsWith("#")) {
return;
}
const indexOfEq = line.indexOf("=");
if (indexOfEq >= 0) {
const name = line.substring(0, indexOfEq).trim();
const value = line.substring(indexOfEq + 1).trim();
dict[name] = value;
}
});
super(sourceURI, dict);
}
}
//# sourceMappingURL=FConfigurationProperties.js.map