12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758(*****************************************************************************)(* *)(* Copyright (C) 2026 Yves Ndiaye *)(* *)(* This Source Code Form is subject to the terms of the Mozilla Public *)(* License, v. 2.0. If a copy of the MPL was not distributed with this *)(* file, You can obtain one at https://mozilla.org/MPL/2.0/. *)(* *)(*****************************************************************************)moduleKeys=structletname="name"letdatabase="database"letmusic_directory="music_directory"letplugins_directory="plugins_directory"endtypet={name:string;database:string;music_directory:string;plugins_directory:string;}letsection="collection"letinit~name~database~music_directory~plugins_directory={name;database;music_directory;plugins_directory}letconvkeysection=matchSection.assockeysectionwith|Somee->Oke|None->Error(Err.missing_keykey)letof_sectionsection=let(let*)=Result.bindinlet*name=convKeys.namesectioninlet*database=convKeys.databasesectioninlet*music_directory=convKeys.music_directorysectioninlet*plugins_directory=convKeys.plugins_directorysectioninOk{name;database;music_directory;plugins_directory}letto_sectiont=let{name;database;music_directory;plugins_directory}=tinSection.initsection[(Keys.name,name);(Keys.database,database);(Keys.music_directory,music_directory);(Keys.plugins_directory,plugins_directory);]letnamet=t.nameletdatabaset=t.databaseletmusic_directoryt=t.music_directoryletplugins_directoryt=t.plugins_directory