Implement storage/retrieval of strings

This commit is contained in:
Florine W. Dekker 2022-11-26 15:36:09 +01:00
parent c8c99373a3
commit 201efeca8c
Signed by: FWDekker
GPG Key ID: D3DCFAA8A4560BE0
2 changed files with 38 additions and 15 deletions

View File

@ -1,6 +1,6 @@
{
"name": "@fwdekker/template",
"version": "3.4.1",
"version": "3.5.0",
"description": "The base template for pages on fwdekker.com.",
"author": "Florine W. Dekker",
"license": "MIT",

View File

@ -20,7 +20,6 @@ export interface Storage {
*
* @param name the name of the array to store
* @param value the array to store under the given name
* @protected
*/
setArray(name: string, value: any[]): void;
@ -29,7 +28,6 @@ export interface Storage {
*
* @param name the name of the boolean to retrieve
* @param def the value to return if no boolean is stored with the given name
* @protected
*/
getBoolean(name: string, def: boolean): boolean;
@ -38,7 +36,6 @@ export interface Storage {
*
* @param name the name of the boolean to store
* @param value the boolean to store under the given name
* @protected
*/
setBoolean(name: string, value: boolean): void;
@ -47,7 +44,6 @@ export interface Storage {
*
* @param name the name of the number to retrieve
* @param def the value to return if no number is stored with the given name
* @protected
*/
getNumber(name: string, def: number): number;
@ -56,9 +52,24 @@ export interface Storage {
*
* @param name the name of the number to store
* @param value the number to store under the given name
* @protected
*/
setNumber(name: string, value: number): void;
/**
* Retrieves a string from storage.
*
* @param name the name of the string to retrieve
* @param def the value to return if no string is stored with the given name
*/
getString(name: string, def: string): string;
/**
* Stores a string.
*
* @param name the name of the string to store
* @param value the number to store under the given name
*/
setString(name: string, value: string): void;
}
/**
@ -115,28 +126,32 @@ export class LocalStorage implements Storage {
}
setArray(name: string, value: any[]): void {
const item = this.read();
item[name] = JSON.stringify(value);
this.write(item);
this.setString(name, JSON.stringify(value));
}
getBoolean(name: string, def: boolean = false): boolean {
return (this.read()[name] ?? `${def}`) === "true";
return this.getString(name, def ? "true" : "false") === "true";
}
setBoolean(name: string, value: boolean): void {
const item = this.read();
item[name] = "" + value;
this.write(item);
this.setString(name, "" + value);
}
getNumber(name: string, def: number = 0): number {
return +(this.read()[name] ?? def);
return +this.getString(name, "" + def);
}
setNumber(name: string, value: number): void {
this.setString(name, "" + value);
}
getString(name: string, def: string = ""): string {
return this.read()[name] ?? def;
}
setString(name: string, value: string): void {
const item = this.read();
item[name] = "" + value;
item[name] = value;
this.write(item);
}
}
@ -175,4 +190,12 @@ export class MemoryStorage implements Storage {
getNumber(name: string, def: number): number {
return this.storage[name] ?? def;
}
setString(name: string, value: string): void {
this.storage[name] = value;
}
getString(name: string, def: string): string {
return this.storage[name] ?? def;
}
}