package shakuhachi
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
A music collection manager
Install
dune-project
Dependency
Authors
Maintainers
Sources
0.3.2.tar.gz
sha256=c72807d303de137441b643fec1c7630c930ebc792b576783c7961b237c2114db
sha512=770f878bbdac8033d90e904ce8e9c84fc75331c7ff9b35e2204fafe3746f432f2664296dac91942a788b82a2da07478d91b76ed85cd880758d2def8a55144840
doc/src/shakuhachi.config/misc.ml.html
Source file misc.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86(*****************************************************************************) (* *) (* 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/. *) (* *) (*****************************************************************************) module Keys = struct let unicode_nf = "unicode_normalization_form" let duplicate_query = "duplicate_query" end module Default = struct let unicode_normalization_form : Uunf.form = `NFC end module Unicode = struct let form_of_string = function | "nfd" -> `NFD | "nfkd" -> `NFKD | "nfkc" -> `NFKC | "nfc" -> `NFC | _ -> `NFC let form_to_string = function | `NFC -> "nfc" | `NFD -> "nfd" | `NFKD -> "nfkd" | `NFKC -> "nfkc" end type t = { unicode_normalization_form : Uunf.form; duplicate_query : (unit, unit, unit, unit, unit) SkhcQuery.Field.t SkhcQuery.Query.t option; } let section = "misc" let default : t = { unicode_normalization_form = `NFC; duplicate_query = None } let init ~unicode_normalization_form ~duplicate_query = { unicode_normalization_form; duplicate_query } (*let conv ~default key section = match Section.assoc key section with Some e -> e | None -> default*) let of_section section = let ( >>= ) = Option.bind in let unicode_normalization_form = section |> Section.assoc Keys.unicode_nf |> Option.map Unicode.form_of_string |> Option.value ~default:Default.unicode_normalization_form in let duplicate_query = section |> Section.assoc Keys.duplicate_query >>= SkhcQuery.Query.of_sexp_keys in { unicode_normalization_form; duplicate_query } let to_section t = let unicode = Unicode.form_to_string t.unicode_normalization_form in let duplicate_query = t.duplicate_query |> Option.map SkhcQuery.Query.to_sexp_keys |> Option.value ~default:String.empty in Section.init section [ (Keys.unicode_nf, unicode); (Keys.duplicate_query, duplicate_query) ] let unicode_normalization_form t = t.unicode_normalization_form let duplicate_query t = t.duplicate_query let set_duplicate_query query t = { t with duplicate_query = query }
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>