@cute-dw/core
Version:
This TypeScript library is the main part of a more powerfull package designed for the fast WEB software development. The cornerstone of the library is the **DataStore** class, which might be useful when you need a full control of the data, but do not need
113 lines • 12.8 kB
JavaScript
import { Strings } from "../util/Strings";
import { HashTable } from "./HashTable";
/**
* The `Properties` class represents a persistent set of properties. Each key and its corresponding value in the property list is a _string_.
*/
export class Properties extends HashTable {
constructor(properties) {
super();
if (properties) {
this.putAll(properties);
}
}
/**
* Searches for the property with the specified key in this property list
* @param key The key whose associated value is to be returned
* @returns The value to which the specified `key` is mapped, or _undefined_ if this map contains no mapping for the `key`
*/
getProperty(key) {
return this.get(key);
}
/**
* Returns an enumeration of all the keys in this property list
* @returns Array of the property names (keys)
*/
propertyNames() {
return this.keys();
}
/**
* Load key/value pairs from the global `localStorage` object
* @returns _true_ if collection was changed, otherwise _false_
*/
loadLocalStorage() {
const nLen = localStorage.length;
let key;
let value;
let count = 0;
for (let i = 0; i < nLen; i++) {
key = localStorage.key(i);
if (key != null) {
value = localStorage.getItem(key);
if (value != null) {
this.put(key, value);
count++;
}
}
}
return count > 0;
}
/**
* Load key/value pairs from the global `sessionStorage` object
* @returns _true_ if collection was changed, otherwise _false_
*/
loadSessionStorage() {
const nLen = sessionStorage.length;
let key;
let value;
let count = 0;
for (let i = 0; i < nLen; i++) {
key = sessionStorage.key(i);
if (key != null) {
value = sessionStorage.getItem(key);
if (value != null) {
this.put(key, value);
count++;
}
}
}
return count > 0;
}
/**
* Writes this property list (key and element pairs) in this {@link Properties} table to the local storage
* @returns _true_ if something changes in the `localStorage` object, else _false_
*/
storeToLocalStorage() {
let keys = this.keys();
for (let i = 0; i < keys.length; i++) {
localStorage.setItem(keys[i], this.getProperty(keys[i]) || "");
}
return keys.length > 0;
}
/**
* Writes this property list (key and element pairs) in this {@link Properties} table to the session storage
* @returns _true_ if something changes in the `sessionStorage` object, else _false_
*/
storeToSessionStorage() {
let keys = this.keys();
for (let i = 0; i < keys.length; i++) {
sessionStorage.setItem(keys[i], this.getProperty(keys[i]) || "");
}
return keys.length > 0;
}
/**
* Load key/value pairs from the string in `ini`-format
* @param source The source string with key=value pairs
* @param separator The separator string of key=value pairs. Default is ';'.
* @returns _true_ if the dictionary was changed, else _false_
* @since 0.5.0
*/
loadIniString(source, separator = ";") {
const pairs = Strings.getTokens(source, separator);
let count = 0;
let p;
pairs.forEach(s => {
p = s.indexOf("=");
if (p >= 0) {
this.put(s.substring(0, p).trim(), s.substring(p + 1).trim());
count++;
}
});
return count > 0;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvcGVydGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2N1dGUtY29yZS9zcmMvbGliL2NvbGxlY3Rpb25zL1Byb3BlcnRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sVUFBVyxTQUFRLFNBQXlCO0lBRXZELFlBQVksVUFBdUI7UUFDakMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxHQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRDs7O09BR0c7SUFDSCxnQkFBZ0I7UUFDZCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ2pDLElBQUksR0FBRyxDQUFDO1FBQ1IsSUFBSSxLQUFLLENBQUM7UUFDVixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxLQUFLLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNCLEdBQUcsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtnQkFDZixLQUFLLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbEMs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QUFPLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RyaW5ncyB9IGZyb20gXCIuLi91dGlsL1N0cmluZ3NcIjtcclxuaW1wb3J0IHsgSGFzaFRhYmxlIH0gZnJvbSBcIi4vSGFzaFRhYmxlXCI7XHJcbi8qKlxyXG4gKiBUaGUgYFByb3BlcnRpZXNgIGNsYXNzIHJlcHJlc2VudHMgYSBwZXJzaXN0ZW50IHNldCBvZiBwcm9wZXJ0aWVzLiBFYWNoIGtleSBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHByb3BlcnR5IGxpc3QgaXMgYSBfc3RyaW5nXy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0aWVzIGV4dGVuZHMgSGFzaFRhYmxlPHN0cmluZywgc3RyaW5nPiB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3BlcnRpZXM/OiBQcm9wZXJ0aWVzKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgaWYgKHByb3BlcnRpZXMpIHtcclxuICAgICAgdGhpcy5wdXRBbGwocHJvcGVydGllcyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNlYXJjaGVzIGZvciB0aGUgcHJvcGVydHkgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBpbiB0aGlzIHByb3BlcnR5IGxpc3RcclxuICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgd2hvc2UgYXNzb2NpYXRlZCB2YWx1ZSBpcyB0byBiZSByZXR1cm5lZFxyXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSB0byB3aGljaCB0aGUgc3BlY2lmaWVkIGBrZXlgIGlzIG1hcHBlZCwgb3IgX3VuZGVmaW5lZF8gaWYgdGhpcyBtYXAgY29udGFpbnMgbm8gbWFwcGluZyBmb3IgdGhlIGBrZXlgXHJcbiAgICovXHJcbiAgZ2V0UHJvcGVydHkoa2V5OiBzdHJpbmcpOiBzdHJpbmd8dW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmdldChrZXkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGFuIGVudW1lcmF0aW9uIG9mIGFsbCB0aGUga2V5cyBpbiB0aGlzIHByb3BlcnR5IGxpc3RcclxuICAgKiBAcmV0dXJucyBBcnJheSBvZiB0aGUgcHJvcGVydHkgbmFtZXMgKGtleXMpXHJcbiAgICovXHJcbiAgcHJvcGVydHlOYW1lcygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5rZXlzKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIExvYWQga2V5L3ZhbHVlIHBhaXJzIGZyb20gdGhlIGdsb2JhbCBgbG9jYWxTdG9yYWdlYCBvYmplY3RcclxuICAgKiBAcmV0dXJucyBfdHJ1ZV8gaWYgY29sbGVjdGlvbiB3YXMgY2hhbmdlZCwgb3RoZXJ3aXNlIF9mYWxzZV9cclxuICAgKi9cclxuICBsb2FkTG9jYWxTdG9yYWdlKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgbkxlbiA9IGxvY2FsU3RvcmFnZS5sZW5ndGg7XHJcbiAgICBsZXQga2V5O1xyXG4gICAgbGV0IHZhbHVlO1xyXG4gICAgbGV0IGNvdW50ID0gMDtcclxuICAgIGZvciAobGV0IGk9MDsgaSA8IG5MZW47IGkrKykge1xyXG4gICAgICBrZXkgPSBsb2NhbFN0b3JhZ2Uua2V5KGkpO1xyXG4gICAgICBpZiAoa2V5ICE9IG51bGwpIHtcclxuICAgICAgICB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMucHV0KGtleSwgdmFsdWUpO1xyXG4gICAgICAgICAgY291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjb3VudCA+IDA7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIExvYWQga2V5L3ZhbHVlIHBhaXJzIGZyb20gdGhlIGdsb2JhbCBgc2Vzc2lvblN0b3JhZ2VgIG9iamVjdFxyXG4gICAqIEByZXR1cm5zIF90cnVlXyBpZiBjb2xsZWN0aW9uIHdhcyBjaGFuZ2VkLCBvdGhlcndpc2UgX2ZhbHNlX1xyXG4gICAqL1xyXG4gICBsb2FkU2Vzc2lvblN0b3JhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBuTGVuID0gc2Vzc2lvblN0b3JhZ2UubGVuZ3RoO1xyXG4gICAgbGV0IGtleTtcclxuICAgIGxldCB2YWx1ZTtcclxuICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICBmb3IgKGxldCBpPTA7IGkgPCBuTGVuOyBpKyspIHtcclxuICAgICAga2V5ID0gc2Vzc2lvblN0b3JhZ2Uua2V5KGkpO1xyXG4gICAgICBpZiAoa2V5ICE9IG51bGwpIHtcclxuICAgICAgICB2YWx1ZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oa2V5KTtcclxuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5wdXQoa2V5LCB2YWx1ZSk7XHJcbiAgICAgICAgICBjb3VudCsrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvdW50ID4gMDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogV3JpdGVzIHRoaXMgcHJvcGVydHkgbGlzdCAoa2V5IGFuZCBlbGVtZW50IHBhaXJzKSBpbiB0aGlzIHtAbGluayBQcm9wZXJ0aWVzfSB0YWJsZSB0byB0aGUgbG9jYWwgc3RvcmFnZVxyXG4gICAqIEByZXR1cm5zIF90cnVlXyBpZiBzb21ldGhpbmcgY2hhbmdlcyBpbiB0aGUgYGxvY2FsU3RvcmFnZWAgb2JqZWN0LCBlbHNlIF9mYWxzZV9cclxuICAgKi9cclxuICBzdG9yZVRvTG9jYWxTdG9yYWdlKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGtleXMgPSB0aGlzLmtleXMoKTtcclxuICAgIGZvciAobGV0IGk9MDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5c1tpXSwgdGhpcy5nZXRQcm9wZXJ0eShrZXlzW2ldKXx8XCJcIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ga2V5cy5sZW5ndGggPiAwO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBXcml0ZXMgdGhpcyBwcm9wZXJ0eSBsaXN0IChrZXkgYW5kIGVsZW1lbnQgcGFpcnMpIGluIHRoaXMge0BsaW5rIFByb3BlcnRpZXN9IHRhYmxlIHRvIHRoZSBzZXNzaW9uIHN0b3JhZ2VcclxuICAgKiBAcmV0dXJucyBfdHJ1ZV8gaWYgc29tZXRoaW5nIGNoYW5nZXMgaW4gdGhlIGBzZXNzaW9uU3RvcmFnZWAgb2JqZWN0LCBlbHNlIF9mYWxzZV9cclxuICAgKi9cclxuICBzdG9yZVRvU2Vzc2lvblN0b3JhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQga2V5cyA9IHRoaXMua2V5cygpO1xyXG4gICAgZm9yIChsZXQgaT0wOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKGtleXNbaV0sIHRoaXMuZ2V0UHJvcGVydHkoa2V5c1tpXSl8fFwiXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGtleXMubGVuZ3RoID4gMDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTG9hZCBrZXkvdmFsdWUgcGFpcnMgZnJvbSB0aGUgc3RyaW5nIGluIGBpbmlgLWZvcm1hdFxyXG4gICAqIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBzdHJpbmcgd2l0aCBrZXk9dmFsdWUgcGFpcnNcclxuICAgKiBAcGFyYW0gc2VwYXJhdG9yIFRoZSBzZXBhcmF0b3Igc3RyaW5nIG9mIGtleT12YWx1ZSBwYWlycy4gRGVmYXVsdCBpcyAnOycuXHJcbiAgICogQHJldHVybnMgX3RydWVfIGlmIHRoZSBkaWN0aW9uYXJ5IHdhcyBjaGFuZ2VkLCBlbHNlIF9mYWxzZV9cclxuICAgKiBAc2luY2UgMC41LjBcclxuICAgKi9cclxuICBsb2FkSW5pU3RyaW5nKHNvdXJjZTogc3RyaW5nLCBzZXBhcmF0b3I6IHN0cmluZyA9IFwiO1wiKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYWlycyA9IFN0cmluZ3MuZ2V0VG9rZW5zKHNvdXJjZSwgc2VwYXJhdG9yKTtcclxuICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICBsZXQgcDtcclxuICAgIHBhaXJzLmZvckVhY2gocyA9PiB7XHJcbiAgICAgIHAgPSBzLmluZGV4T2YoXCI9XCIpO1xyXG4gICAgICBpZiAocCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5wdXQoIHMuc3Vic3RyaW5nKDAsIHApLnRyaW0oKSwgcy5zdWJzdHJpbmcocCsxKS50cmltKCkpO1xyXG4gICAgICAgIGNvdW50Kys7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvdW50ID4gMDtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==