fix ansi parsing encapsulation
This commit is contained in:
parent
92e539754c
commit
c5f8eea2c5
2 changed files with 8 additions and 5 deletions
11
lib/ansi.ml
11
lib/ansi.ml
|
@ -37,8 +37,6 @@ let ansi_sgr =
|
|||
|
||||
let capture_ansi = both ansi_values ansi_sgr
|
||||
|
||||
let ansi_parse =
|
||||
ansi_escape *> capture_ansi
|
||||
|
||||
type parser_state_colour = ParsingFg | ParsingBg
|
||||
|
||||
|
@ -94,8 +92,13 @@ let parse_ansi_intermediate (codes, terminator) : chunk =
|
|||
in
|
||||
Ansi final
|
||||
|
||||
let raw_ansi_parse =
|
||||
ansi_escape *> capture_ansi
|
||||
|
||||
let ansi_parse = raw_ansi_parse >>| parse_ansi_intermediate
|
||||
|
||||
let%test "ansi_parse" =
|
||||
parse_string ~consume:Angstrom.Consume.Prefix ansi_parse "\x1b[35;23;12m"
|
||||
parse_string ~consume:Angstrom.Consume.Prefix raw_ansi_parse "\x1b[35;23;12m"
|
||||
|> function
|
||||
| Ok (d, t) -> d = [ 35; 23; 12 ] && t = Some 'm'
|
||||
| _ -> false
|
||||
|
@ -108,7 +111,7 @@ let%test "ansi_intermediate_parse" =
|
|||
|
||||
let%test "ansi_full" =
|
||||
let final =
|
||||
parse_string ~consume:Angstrom.Consume.Prefix ansi_parse
|
||||
parse_string ~consume:Angstrom.Consume.Prefix raw_ansi_parse
|
||||
"\x1b[38;5;25;24;23;1;0m"
|
||||
|> function
|
||||
| Ok (raw, term) -> parse_ansi_intermediate (raw, term)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue