README.md
# lenient_parse
[![Package Version](https://img.shields.io/hexpm/v/lenient_parse)](https://hex.pm/packages/lenient_parse)
[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/lenient_parse/)
A Gleam library providing lenient parsing functions for converting strings to float and integer values. This package offers more flexible parsing than the standard Gleam functions, similar to Python's built-in `float()` and `int()` functions.
## Installation
```sh
gleam add lenient_parse
```
```gleam
import lenient_parse
import gleam/io
pub fn main() {
// --- Float parsing
// Parse a string containing an integer
"1" |> lenient_parse.to_float |> io.debug
// Ok(1.0)
// Parse a string containing a negative float
"-5.001" |> lenient_parse.to_float |> io.debug
// Ok(-5.001)
// Parse a more complex float with scientific notation
"-1_234.567_8e-2" |> lenient_parse.to_float |> io.debug
// Ok(-12.345678)
// --- Integer parsing
// Parse a string containing an integer
"123" |> lenient_parse.to_int |> io.debug
// Ok(123)
// Parse a string containing a negative integer with surrounding whitespace
" -123 " |> lenient_parse.to_int |> io.debug
// Ok(-123)
// Parse a string containing an integer with underscores
"1_000_000" |> lenient_parse.to_int |> io.debug
// Ok(1000000)
// Parse a binary string
"1000_0000" |> lenient_parse.to_int_with_base(base: 2) |> io.debug
// Ok(128)
// Parse a hexadecimal string
"DEAD_BEEF" |> lenient_parse.to_int_with_base(base: 16) |> io.debug
// Ok(3735928559)
}
```
## Developer Setup
To run the tests for this package, you'll need to [install `uv`](https://docs.astral.sh/uv/getting-started/installation/).