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.2.0.tar.gz
sha256=966fc8667c2aa9830e64950d2de74bd564a65d60e1f50cfd3dc1e99ef106dc47
sha512=6423ce04d784ba521a7f49fabdafbe036e2dd80cd08ca999fdc6767262d7f12aa4e5002d65efd4c568b343eaabf4d680191c88334d629e1ca0156084531e9e0b
doc/src/shakuhachi.libs/util.ml.html
Source file util.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(*****************************************************************************) (* *) (* 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 StringUtil = struct let make_path_safe s = String.map (function '/' | '\\' | '\000' -> '_' | c -> c) s end module ListUtil = struct let rec fold_ok f acc = function | [] -> Result.ok acc | t :: q -> let ( let* ) = Result.bind in let* acc = f acc t in fold_ok f acc q end module FileSys = struct let split_path s = let regex = Re.(compile @@ str Filename.dir_sep) in Re.split regex s let rec remove_prefix prefix path = match (prefix, path) with | [], [] | _ :: _, [] -> String.empty | [], (_ :: _ as s) -> String.concat Filename.dir_sep s | t1 :: q1, (t2 :: q2 as s) -> if String.equal t1 t2 then remove_prefix q1 q2 else String.concat Filename.dir_sep s let remove_prefix prefix path = let prefix = Unix.realpath prefix in let path = Unix.realpath path in let prefix = split_path prefix in let path = split_path path in remove_prefix prefix path let read_chan chan = let buffer = Buffer.create 4_096 in let size = 1024 in let bytes = Bytes.create size in let continue = ref true in let () = while !continue do let read = input chan bytes 0 size in let () = Buffer.add_subbytes buffer bytes 0 read in continue := read = size done in Buffer.contents buffer end
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>