Pure OCaml Yaml 1.2 reader and writer using Bytesrw
at main 1.2 kB view raw
1(*--------------------------------------------------------------------------- 2 Copyright (c) 2025 Anil Madhavapeddy <anil@recoil.org>. All rights reserved. 3 SPDX-License-Identifier: ISC 4 ---------------------------------------------------------------------------*) 5 6(** Character classification for YAML parsing *) 7 8(** Line break characters *) 9let is_break c = c = '\n' || c = '\r' 10 11(** Blank (space or tab) *) 12let is_blank c = c = ' ' || c = '\t' 13 14(** Whitespace (break or blank) *) 15let is_whitespace c = is_break c || is_blank c 16 17(** Decimal digit *) 18let is_digit c = c >= '0' && c <= '9' 19 20(** Hexadecimal digit *) 21let is_hex c = 22 (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F') 23 24(** Alphabetic character *) 25let is_alpha c = (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') 26 27(** Alphanumeric character *) 28let is_alnum c = is_alpha c || is_digit c 29 30(** YAML indicator characters *) 31let is_indicator c = 32 match c with 33 | '-' | '?' | ':' | ',' | '[' | ']' | '{' | '}' | '#' | '&' | '*' | '!' | '|' 34 | '>' | '\'' | '"' | '%' | '@' | '`' -> 35 true 36 | _ -> false 37 38(** Flow context indicator characters *) 39let is_flow_indicator c = 40 match c with ',' | '[' | ']' | '{' | '}' -> true | _ -> false