Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
JosephTLyons committed Nov 4, 2024
1 parent e870312 commit 6403150
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 26 deletions.
29 changes: 4 additions & 25 deletions src/lenient_parse/internal/parse.gleam
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import lenient_parse/internal/tokenizer.{
type Token, DecimalPoint, Digit, Sign, Underscore, Unknown, Whitespace,
}
import parse_error.{
type ParseError, EmptyString, InvalidDecimalPosition, UnknownCharacter,
WhitespaceOnlyString,
type ParseError, EmptyString, InvalidDecimalPosition,
InvalidUnderscorePosition, UnknownCharacter, WhitespaceOnlyString,
}

pub fn parse_float(input: String) -> Result(Float, ParseError) {
Expand Down Expand Up @@ -37,7 +37,7 @@ pub fn parse_float(input: String) -> Result(Float, ParseError) {
use #(_, tokens, index) <- result.try(post_whitespace_result)

case tokens |> list.first {
Ok(token) -> Error(extraneous_token_error(token, index))
Ok(token) -> Error(tokenizer.to_error(token, index))
_ -> {
case whole_digit, fractional_digit {
Some(whole), Some(fractional) ->
Expand Down Expand Up @@ -82,7 +82,7 @@ pub fn parse_int(input: String) -> Result(Int, ParseError) {
use #(_, tokens, index) <- result.try(post_whitespace_result)

case tokens |> list.first {
Ok(token) -> Error(tokenizer.error_for_token(token, index))
Ok(token) -> Error(tokenizer.to_error(token, index))
_ -> {
case leading_whitespace, digit {
Some(_), Some(digit) | None, Some(digit) ->
Expand Down Expand Up @@ -208,27 +208,6 @@ fn parse_digit(
}
}

// TODO: Move this to some place that makes more sense
fn extraneous_token_error(token: Token, index) -> ParseError {
case token {
Digit(digit) -> {
let digit = digit |> int.to_string
InvalidDigitPosition(digit, index)
}
Sign(sign) -> {
let sign = case sign {
True -> "+"
False -> "-"
}
InvalidSignPosition(sign, index)
}
Underscore -> InvalidUnderscorePosition(index)
Unknown(character) -> UnknownCharacter(character, index)
Whitespace(whitespace) -> UnknownCharacter(whitespace, index)
DecimalPoint -> InvalidDecimalPosition(index)
}
}

fn form_float(
is_positive: Bool,
whole_digit: Int,
Expand Down
2 changes: 1 addition & 1 deletion src/lenient_parse/internal/tokenizer.gleam
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ fn do_tokenize(characters: List(String), acc: List(Token)) -> List(Token) {
}
}

pub fn error_for_token(token: Token, index) -> ParseError {
pub fn to_error(token: Token, index) -> ParseError {
case token {
Digit(digit) -> {
let digit = digit |> int.to_string
Expand Down

0 comments on commit 6403150

Please sign in to comment.