fix amount parser

todo: private type
This commit is contained in:
Swrup 2025-10-03 22:42:16 +02:00
parent a04e179c08
commit cdd6d5142b
2 changed files with 10 additions and 6 deletions

View file

@ -95,20 +95,20 @@ module Amount = struct
let parse_currency = string "EUR" *> return `Eur in
let parse_int =
take_while1 (function '0' .. '9' -> true | _ -> false)
>>| Int64.of_string
>>| Int64.of_string_opt
>>= function
| None -> fail "invalid integer"
| Some n -> return n
in
let parse_t =
lift4
(fun sign currency value fraction ->
{ sign; currency; value; fraction })
make ~sign ~currency ~value ~fraction)
parse_sign parse_currency
(char ':' *> parse_int)
(char '.' *> parse_int)
in
fun s ->
match parse_string ~consume:Consume.All parse_t s with
| Ok v -> Ok v
| Error e -> Error e
fun s -> parse_string ~consume:Consume.All parse_t s |> Result.join
end
module Eddsa = struct