diff --git a/lib/ansi.ml b/lib/ansi.ml index 1076180..9f766a0 100644 --- a/lib/ansi.ml +++ b/lib/ansi.ml @@ -29,10 +29,10 @@ let ansi_sgr = 'h'; 'l'; ] - in + and (=?) = List.mem in peek_char >>= function | Some c -> - if List.mem c valid then advance 1 *> return (Some c) else return None + if c =? valid then advance 1 *> return (Some c) else return None | None -> return None let capture_ansi = both ansi_values ansi_sgr @@ -40,12 +40,6 @@ let capture_ansi = both ansi_values ansi_sgr let ansi_parse = ansi_escape *> capture_ansi -let%test "ansi_parse" = - parse_string ~consume:Angstrom.Consume.Prefix ansi_parse "\x1b[35;23;12m" - |> function - | Ok (d, t) -> d = [ 35; 23; 12 ] && t = Some 'm' - | _ -> false - type parser_state_colour = ParsingFg | ParsingBg type parser_state = @@ -100,6 +94,12 @@ let parse_ansi_intermediate (codes, terminator) : chunk = in Ansi final +let%test "ansi_parse" = + parse_string ~consume:Angstrom.Consume.Prefix ansi_parse "\x1b[35;23;12m" + |> function + | Ok (d, t) -> d = [ 35; 23; 12 ] && t = Some 'm' + | _ -> false + let%test "ansi_intermediate_parse" = let result = parse_ansi_intermediate ([ 38; 5; 25; 24; 23; 1; 0 ], Some 'm')