package liquidsoap-lang
Liquidsoap language library
Install
Dune Dependency
Authors
Maintainers
Sources
liquidsoap-2.2.5.tar.gz
md5=8e4d35b2595e31ef5e7a96b605382787
sha512=3c8c9738cce1adad3707986527b52aac5e5a70f11f58e4aa3647972752275d72d1649657e46cec6afc4c543a4546cc312d1c9b1a4338f9bd6e41c0a702ec5118
doc/src/liquidsoap-lang/pos.ml.html
Source file pos.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
(***************************************************************************** Liquidsoap, a programmable audio stream generator. Copyright 2003-2024 Savonet team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details, fully stated in the COPYING file at the root of the liquidsoap distribution. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *****************************************************************************) (** Operations on positions (in source files). *) (** A position. *) type t = Lexing.position * Lexing.position let to_string ?(prefix = "at ") ((start, stop) : t) = let prefix = match start.Lexing.pos_fname with | "" -> prefix | file -> prefix ^ file ^ ", " in let f l = (l.Lexing.pos_lnum, l.Lexing.pos_cnum - l.Lexing.pos_bol) in let lstart, cstart = f start in let lstop, cstop = f stop in if lstart = lstop then if cstop = cstart + 1 then Printf.sprintf "%sline %d, char %d" prefix lstart cstart else Printf.sprintf "%sline %d, char %d-%d" prefix lstart cstart cstop else Printf.sprintf "%sline %d char %d - line %d char %d" prefix lstart cstart lstop cstop let string_of_pos = to_string module Option = struct type nonrec t = t option let to_string ?prefix : t -> string = function | Some pos -> to_string ?prefix pos | None -> "unknown position" end module List = struct (** A list of positions, corresponding to a stack of calls. The toplevel one is the external caller and the last one is the callee. *) type nonrec t = t list (** The most relevant position in a call stack. *) let rec to_pos = function | [x] -> x | _ :: l -> to_pos l | [] -> raise Not_found let rec to_string ?(newlines = false) ?prefix = function | [] -> "unknown position" | [pos] -> string_of_pos ?prefix pos | pos :: l -> to_string ~newlines ?prefix l ^ (if newlines then ",\n" else ", ") ^ string_of_pos ?prefix pos end
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>