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,27 @@ 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+ return ;
49+ }
50+ else if ( value === "true" ) {
51+ cleanValue = true ;
52+ }
53+ else if ( value === "false" ) {
54+ cleanValue = false ;
55+ }
56+ else if ( typeof value === "boolean" ) {
57+ cleanValue = value ;
58+ }
59+ else if ( typeof value === "string" ) {
60+ cleanValue = value ; // `${value.replace("\n", "\\n")}`;
61+ }
62+ else if ( typeof value === "number" ) {
63+ cleanValue = value ;
64+ }
65+
66+ this . prefs [ key ] = cleanValue ;
6167 } ;
6268
6369 setPrefs ( prefs : Prefs ) {
@@ -115,13 +121,15 @@ type PluginPrefKey<K extends keyof _PluginPrefsMap> = \`${prefix}.\${K}\`;
115121type PluginPrefsMap = {
116122 [K in keyof _PluginPrefsMap as PluginPrefKey<K>]: _PluginPrefsMap[K]
117123};
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- }
125124` ;
126125 return dtsContent ;
127126}
127+
128+ const _backup = `
129+ // declare namespace _ZoteroTypes {
130+ // interface Prefs {
131+ // get: <K extends keyof PluginPrefsMap>(key: K, global?: boolean) => PluginPrefsMap[K];
132+ // set: <K extends keyof PluginPrefsMap>(key: K, value: PluginPrefsMap[K], global?: boolean) => any;
133+ // }
134+ // }
135+ ` ;
0 commit comments