package melange
Toolchain to produce JS from Reason/OCaml
Install
Dune Dependency
Authors
Maintainers
Sources
melange-5.1.0-51.tbz
sha256=0c817cbd92c42ac15fea6e6d975fd3eb3aa31f22b10cca22b3687ffed0e1b092
sha512=a0b85e22b106df7e9448d12977b740f735445640d4a9368591bdf5e67a95b93d5aacf957086c524549e3402faf0916c3f501ba43a631c74d8af4a7c986842c09
doc/src/melange.js_parser/lex_env.ml.html
Source file lex_env.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 87
(* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. *) module Sedlexing = Flow_sedlexing (* bol = Beginning Of Line *) type bol = { line: int; offset: int; } type lex_state = { lex_errors_acc: (Loc.t * Parse_error.t) list } [@@ocaml.unboxed] type t = { lex_source: File_key.t option; lex_lb: Sedlexing.lexbuf; lex_bol: bol; lex_in_comment_syntax: bool; lex_enable_comment_syntax: bool; lex_state: lex_state; lex_last_loc: Loc.t; } let empty_lex_state = { lex_errors_acc = [] } (* The lex_last_loc should initially be set to the beginning of the first line, so that comments on the first line are reported as not being on a new line. *) let initial_last_loc = { Loc.source = None; start = { Loc.line = 1; column = 0 }; _end = { Loc.line = 1; column = 0 } } let new_lex_env lex_source lex_lb ~enable_types_in_comments = { lex_source; lex_lb; lex_bol = { line = 1; offset = 0 }; lex_in_comment_syntax = false; lex_enable_comment_syntax = enable_types_in_comments; lex_state = empty_lex_state; lex_last_loc = initial_last_loc; } (* copy all the mutable things so that we have a distinct lexing environment that does not interfere with ordinary lexer operations *) let clone env = let lex_lb = Sedlexing.lexbuf_clone env.lex_lb in { env with lex_lb } let lexbuf env = env.lex_lb let source env = env.lex_source let state env = env.lex_state let line env = env.lex_bol.line let bol_offset env = env.lex_bol.offset let is_in_comment_syntax env = env.lex_in_comment_syntax let is_comment_syntax_enabled env = env.lex_enable_comment_syntax let in_comment_syntax is_in env = if is_in <> env.lex_in_comment_syntax then { env with lex_in_comment_syntax = is_in } else env (* TODO *) let debug_string_of_lexbuf _lb = "" let debug_string_of_lex_env (env : t) = let source = match source env with | None -> "None" | Some x -> Printf.sprintf "Some %S" (File_key.to_string x) in Printf.sprintf "{\n lex_source = %s\n lex_lb = %s\n lex_in_comment_syntax = %b\n lex_enable_comment_syntax = %b\n lex_state = {errors = (count = %d)}\n}" source (debug_string_of_lexbuf env.lex_lb) (is_in_comment_syntax env) (is_comment_syntax_enabled env) (List.length (state env).lex_errors_acc)
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>