11import { readFile } from "node:fs/promises" ;
2- import { isNotNil } from "es-toolkit" ;
32import { outputFile } from "fs-extra/esm" ;
43import { logger } from "./log.js" ;
54
@@ -20,27 +19,14 @@ export class PrefsManager {
2019 for ( const match of matches ) {
2120 const key = match [ 2 ] . trim ( ) ;
2221 const value = match [ 3 ] . trim ( ) ;
23- this . prefs [ key ] = value ;
22+
23+ this . setPref ( key , value ) ;
2424 } ;
2525 }
2626
2727 private render ( ) {
2828 return Object . entries ( this . prefs ) . map ( ( [ key , value ] ) => {
29- if ( ! isNotNil ( value ) )
30- return "" ;
31-
32- let cleanValue = "" ;
33- if ( typeof value === "boolean" ) {
34- cleanValue = `${ value } ` ;
35- }
36- else if ( typeof value === "string" ) {
37- cleanValue = value ; // `${value.replace("\n", "\\n")}`;
38- }
39- else if ( typeof value === "number" ) {
40- cleanValue = value . toString ( ) ;
41- }
42-
43- return `${ this . namespace } ("${ key } ", ${ cleanValue } );` ;
29+ return `${ this . namespace } ("${ key } ", ${ value } );` ;
4430 } ) . filter ( c => ! ! c ) . join ( "\n" ) ;
4531 }
4632
@@ -57,7 +43,33 @@ export class PrefsManager {
5743 }
5844
5945 setPref ( key : string , value : any ) {
60- this . prefs [ key ] = value ;
46+ let cleanValue : any ;
47+ if ( value === null || value === undefined ) {
48+ if ( key in this . prefs )
49+ delete this . prefs [ key ] ;
50+ else
51+ return ;
52+ }
53+ else if ( value === "true" ) {
54+ cleanValue = true ;
55+ }
56+ else if ( value === "false" ) {
57+ cleanValue = false ;
58+ }
59+ else if ( typeof value === "boolean" ) {
60+ cleanValue = value ;
61+ }
62+ else if ( typeof value === "string" ) {
63+ cleanValue = value ; // `${value.replace("\n", "\\n")}`;
64+ }
65+ else if ( typeof value === "number" ) {
66+ cleanValue = value ;
67+ }
68+ else {
69+ cleanValue = value ;
70+ }
71+
72+ this . prefs [ key ] = cleanValue ;
6173 } ;
6274
6375 setPrefs ( prefs : Prefs ) {
@@ -115,13 +127,15 @@ type PluginPrefKey<K extends keyof _PluginPrefsMap> = \`${prefix}.\${K}\`;
115127type PluginPrefsMap = {
116128 [K in keyof _PluginPrefsMap as PluginPrefKey<K>]: _PluginPrefsMap[K]
117129};
118-
119- declare namespace _ZoteroTypes {
120- interface Prefs {
121- get: <K extends keyof PluginPrefsMap>(key: K, global?: boolean) => PluginPrefsMap[K];
122- set: <K extends keyof PluginPrefsMap>(key: K, value: PluginPrefsMap[K], global?: boolean) => any;
123- }
124- }
125130` ;
126131 return dtsContent ;
127132}
133+
134+ const _backup = `
135+ // declare namespace _ZoteroTypes {
136+ // interface Prefs {
137+ // get: <K extends keyof PluginPrefsMap>(key: K, global?: boolean) => PluginPrefsMap[K];
138+ // set: <K extends keyof PluginPrefsMap>(key: K, value: PluginPrefsMap[K], global?: boolean) => any;
139+ // }
140+ // }
141+ ` ;
0 commit comments