Skip to content

Commit 8dda584

Browse files
authored
Clean up overuse of pipes (#95)
1 parent a17696e commit 8dda584

15 files changed

+81
-74
lines changed

src/lenient_parse/internal/build.gleam

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pub fn float_value(
1818
) -> Result(Float, ParseError) {
1919
let #(whole_digits, fractional_digits) =
2020
scale.deques(whole_digits, fractional_digits, scale_factor)
21-
let exponent = fractional_digits |> deque.length
21+
let exponent = deque.length(fractional_digits)
2222
let #(digits, _) = scale.deques(whole_digits, fractional_digits, exponent)
2323

2424
// `bigi.undigits` documentation says it can fail if:
@@ -29,8 +29,8 @@ pub fn float_value(
2929
// parser has already raised an error.
3030
// Therefore, the error case here should be unreachable. If not, there is a
3131
// bug in the prior code.
32-
let digits_list = digits |> deque.to_list
33-
case digits_list |> bigi.undigits(base_10) {
32+
let digits_list = deque.to_list(digits)
33+
case bigi.undigits(digits_list, base_10) {
3434
Error(_) -> panic as "unreachable"
3535
Ok(coefficient) -> {
3636
let sign =
@@ -47,15 +47,15 @@ pub fn float_value(
4747
exponent: bigi.from_int(-exponent),
4848
)
4949

50-
case decimal |> pilkku.to_float {
50+
case pilkku.to_float(decimal) {
5151
// `pilkku.to_float` returns 0.0 for both 0.0 and -0.0
5252
Ok(float_value) if float_value == 0.0 && !is_positive -> Ok(-0.0)
5353
Ok(float_value) -> Ok(float_value)
5454
Error(_) -> {
5555
let float_string =
5656
float_string(
57-
whole_digits: whole_digits |> deque.to_list,
58-
fractional_digits: fractional_digits |> deque.to_list,
57+
whole_digits: deque.to_list(whole_digits),
58+
fractional_digits: deque.to_list(fractional_digits),
5959
is_positive: is_positive,
6060
)
6161
Error(OutOfFloatRange(float_string))
@@ -78,11 +78,11 @@ pub fn integer_value(
7878
// parser has already raised an error.
7979
// Therefore, the error case here should be unreachable. If not, there is a
8080
// bug in the prior code.
81-
let digits_list = digits |> deque.to_list
82-
case digits_list |> bigi.undigits(base) {
81+
let digits_list = deque.to_list(digits)
82+
case bigi.undigits(digits_list, base) {
8383
Error(_) -> panic as "unreachable"
8484
Ok(big_int) ->
85-
case big_int |> bigi.to_int {
85+
case bigi.to_int(big_int) {
8686
Ok(value) -> {
8787
let value = case is_positive {
8888
True -> value
@@ -91,7 +91,7 @@ pub fn integer_value(
9191
Ok(value)
9292
}
9393
Error(_) -> {
94-
let integer_string = digits_list |> integer_string(is_positive)
94+
let integer_string = integer_string(digits_list, is_positive)
9595
Error(OutOfIntRange(integer_string))
9696
}
9797
}

src/lenient_parse/internal/parser.gleam

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ pub fn parse_float_tokens(
7070
parse_data,
7171
)
7272

73-
let parse_data = case exponent_digits |> deque.is_empty {
73+
let parse_data = case deque.is_empty(exponent_digits) {
7474
True ->
7575
Error(InvalidExponentSymbolPosition(next_index - 1, exponent_symbol))
7676
False -> Ok(ParseData(exponent_digits, next_index, tokens))
@@ -79,7 +79,7 @@ pub fn parse_float_tokens(
7979
parse_data,
8080
)
8181

82-
let exponent_digit = exponent_digits |> digits_to_int
82+
let exponent_digit = digits_to_int(exponent_digits)
8383
let exponent = case exponent_digit_is_positive {
8484
True -> exponent_digit
8585
False -> -exponent_digit
@@ -155,7 +155,7 @@ pub fn parse_int_tokens(
155155
)
156156

157157
let parse_data =
158-
parse_digits(tokens, next_index, base, prefix_data |> option.is_some)
158+
parse_digits(tokens, next_index, base, option.is_some(prefix_data))
159159
use ParseData(digits, next_index, tokens) <- result.try(parse_data)
160160

161161
let parse_data = parse_whitespace(tokens, next_index)
@@ -167,7 +167,7 @@ pub fn parse_int_tokens(
167167
}
168168
use _ <- result.try(remaining_token_result)
169169

170-
case leading_whitespace, prefix_data, digits |> deque.is_empty {
170+
case leading_whitespace, prefix_data, deque.is_empty(digits) {
171171
None, None, True -> Error(EmptyString)
172172
_, Some(#(index_range, prefix)), True ->
173173
Error(BasePrefixOnly(index_range, prefix))
@@ -232,7 +232,7 @@ fn parse_base_prefix(
232232
case tokens {
233233
[Unknown(index, character), ..] -> Error(UnknownCharacter(index, character))
234234
[Digit(index, "0", _), ..rest] -> {
235-
let lookahead = rest |> list.first
235+
let lookahead = list.first(rest)
236236

237237
case lookahead {
238238
Ok(Digit(_, specifier, _))
@@ -266,7 +266,7 @@ fn base_prefix_data(
266266
ParseData(
267267
data: Some(#(#(index, index + 2), "0" <> specifier, base)),
268268
next_index: index + 2,
269-
tokens: tokens |> list.drop(1),
269+
tokens: list.drop(tokens, 1),
270270
)
271271
}
272272

@@ -327,7 +327,7 @@ fn parse_digits_loop(
327327
[Whitespace(index, data), ..] if at_beginning ->
328328
Error(UnknownCharacter(index, data.character))
329329
[Underscore(index), ..rest] -> {
330-
let lookahead = rest |> list.first
330+
let lookahead = list.first(rest)
331331
let at_end = case lookahead {
332332
Ok(Digit(_, _, _)) -> False
333333
_ -> True
@@ -364,7 +364,7 @@ fn parse_digits_loop(
364364
tokens: rest,
365365
index:,
366366
base:,
367-
acc: acc |> deque.push_back(value),
367+
acc: deque.push_back(acc, value),
368368
at_beginning: False,
369369
has_base_prefix:,
370370
)

src/lenient_parse/internal/pilkku/pilkku.gleam

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ fn decimal_to_float(sign: BigInt, num: BigInt, den: BigInt, exp: BigInt) {
181181
},
182182
)
183183

184-
let exp = bigi.add(exp, bigi.from_int(1023)) |> bigi.bitwise_shift_left(52)
184+
let exp = exp |> bigi.add(bigi.from_int(1023)) |> bigi.bitwise_shift_left(52)
185185

186186
use coef <- result.try(
187187
case

src/lenient_parse/internal/scale.gleam

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ pub fn deques(
1212
order.Eq -> #(whole_digits, fractional_digits)
1313
order.Gt -> {
1414
let #(digit, fractional_digits) =
15-
deque.pop_front(fractional_digits)
15+
fractional_digits
16+
|> deque.pop_front
1617
|> result.unwrap(#(0, fractional_digits))
1718
deques(
1819
deque.push_back(whole_digits, digit),
@@ -22,7 +23,8 @@ pub fn deques(
2223
}
2324
order.Lt -> {
2425
let #(digit, whole_digits) =
25-
deque.pop_back(whole_digits)
26+
whole_digits
27+
|> deque.pop_back
2628
|> result.unwrap(#(0, whole_digits))
2729
deques(
2830
whole_digits,

src/lenient_parse/internal/tokenizer.gleam

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ fn tokenize_float_loop(
2929
acc acc: List(Token),
3030
) -> List(Token) {
3131
case characters {
32-
[] -> acc |> list.reverse
32+
[] -> list.reverse(acc)
3333
[first, ..rest] -> {
3434
let token = case first {
3535
"." -> DecimalPoint(index)
@@ -74,7 +74,7 @@ fn tokenize_int_loop(
7474
acc acc: List(Token),
7575
) -> List(Token) {
7676
case characters {
77-
[] -> acc |> list.reverse
77+
[] -> list.reverse(acc)
7878
[first, ..rest] -> {
7979
let token =
8080
common_token(
@@ -108,7 +108,7 @@ fn common_token(
108108
"+" -> Sign(index, "+", True)
109109
"_" -> Underscore(index)
110110
_ -> {
111-
case whitespace_character_dict |> dict.get(character) {
111+
case dict.get(whitespace_character_dict, character) {
112112
Ok(whitespace_data) -> Whitespace(index, data: whitespace_data)
113113
Error(_) -> {
114114
case character_to_value(character) {

test/build_test.gleam

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,16 @@ pub fn build_float_explicit_0_whole_test() {
6767
// ------------------ int
6868

6969
pub fn build_int_empty_test() {
70-
build.integer_value(digits: deque.from_list([]), base: 10, is_positive: True)
70+
[]
71+
|> deque.from_list
72+
|> build.integer_value(base: 10, is_positive: True)
7173
|> expect.to_equal(Ok(0))
7274
}
7375

7476
pub fn build_int_explicit_0_test() {
75-
build.integer_value(digits: deque.from_list([0]), base: 10, is_positive: True)
77+
[0]
78+
|> deque.from_list()
79+
|> build.integer_value(base: 10, is_positive: True)
7680
|> expect.to_equal(Ok(0))
7781
}
7882

test/data.gleam

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,18 @@ import python/python_parse
77
import test_data.{type FloatTestData, type IntegerTestData}
88

99
pub fn float_test_data() -> List(FloatTestData) {
10-
[valid_float_data.data(), invalid_float_data.data()]
10+
[
11+
valid_float_data.data(),
12+
invalid_float_data.data(),
13+
]
1114
|> list.flatten
1215
}
1316

1417
pub fn integer_test_data() -> List(IntegerTestData) {
15-
[valid_integer_data.data(), invalid_integer_data.data()]
18+
[
19+
valid_integer_data.data(),
20+
invalid_integer_data.data(),
21+
]
1622
|> list.flatten
1723
}
1824

@@ -29,7 +35,7 @@ pub fn python_processed_float_data() {
2935
|> list.map(python_parse.to_floats)
3036
|> list.flatten
3137

32-
float_test_data |> list.zip(processed_values)
38+
list.zip(float_test_data, processed_values)
3339
}
3440

3541
pub fn python_processed_integer_data() {
@@ -41,5 +47,5 @@ pub fn python_processed_integer_data() {
4147
|> list.map(python_parse.to_ints)
4248
|> list.flatten
4349

44-
integer_test_data |> list.zip(processed_values)
50+
list.zip(integer_test_data, processed_values)
4551
}

test/data/float/invalid_float_data.gleam

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ fn float_test_data(
2121
expected_program_output expected_program_output: Result(Float, ParseError),
2222
python_error_function python_error_function: fn(String) -> PythonError,
2323
) -> FloatTestData {
24-
let printable_text = input |> helpers.to_printable_text
24+
let printable_text = helpers.to_printable_text(input)
2525

2626
FloatTestData(
2727
input:,

test/data/integer/invalid_integer_data.gleam

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import test_data.{type IntegerTestData, IntegerTestData}
1818
fn invalid_literal_for_int_error(input: String, base: Int) -> PythonError {
1919
let message =
2020
"invalid literal for int() with base "
21-
<> base |> int.to_string
21+
<> int.to_string(base)
2222
<> ": '"
2323
<> input
2424
<> "'"
@@ -36,7 +36,7 @@ fn integer_test_data(
3636
expected_program_output expected_program_output: Result(Int, ParseError),
3737
python_error_function python_error_function: fn(String, Int) -> PythonError,
3838
) -> IntegerTestData {
39-
let printable_text = input |> helpers.to_printable_text
39+
let printable_text = helpers.to_printable_text(input)
4040

4141
IntegerTestData(
4242
input:,

test/helpers.gleam

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import lenient_parse/parse_error.{
1111

1212
pub fn to_printable_text(text: String) -> String {
1313
to_printable_text_loop(
14-
characters: text |> string.to_graphemes,
14+
characters: string.to_graphemes(text),
1515
whitespace_character_dict: whitespace.character_dict(),
1616
acc: "",
1717
)
@@ -28,7 +28,7 @@ fn to_printable_text_loop(
2828
case characters {
2929
[] -> acc
3030
[first, ..rest] -> {
31-
let printable = case whitespace_character_dict |> dict.get(first) {
31+
let printable = case dict.get(whitespace_character_dict, first) {
3232
Ok(whitespace_data) -> whitespace_data.printable
3333
Error(_) -> first
3434
}
@@ -47,43 +47,40 @@ pub fn error_to_string(error: ParseError) -> String {
4747
EmptyString -> "empty string"
4848
WhitespaceOnlyString -> "whitespace only string"
4949
InvalidUnderscorePosition(index) ->
50-
"underscore at invalid position: " <> index |> int.to_string
50+
"underscore at invalid position: " <> int.to_string(index)
5151
InvalidDecimalPosition(index) ->
52-
"decimal at invalid position: " <> index |> int.to_string
52+
"decimal at invalid position: " <> int.to_string(index)
5353
InvalidSignPosition(index, sign) ->
54-
"sign \"" <> sign <> "\" at invalid position: " <> index |> int.to_string
54+
"sign \"" <> sign <> "\" at invalid position: " <> int.to_string(index)
5555
InvalidDigitPosition(index, digit) ->
56-
"digit \""
57-
<> digit
58-
<> "\" at invalid position: "
59-
<> index |> int.to_string
56+
"digit \"" <> digit <> "\" at invalid position: " <> int.to_string(index)
6057
BasePrefixOnly(#(start_index, end_index), prefix) ->
6158
"inferred base prefix only: "
6259
<> prefix
6360
<> " at index range: "
64-
<> start_index |> int.to_string
61+
<> int.to_string(start_index)
6562
<> ".."
66-
<> end_index |> int.to_string
63+
<> int.to_string(end_index)
6764
OutOfBaseRange(index, character, value, base) ->
6865
"digit character \""
6966
<> character
7067
<> "\" ("
71-
<> value |> int.to_string
68+
<> int.to_string(value)
7269
<> ") at position "
73-
<> index |> int.to_string
70+
<> int.to_string(value)
7471
<> " is out of range for base: "
75-
<> base |> int.to_string
72+
<> int.to_string(base)
7673
InvalidExponentSymbolPosition(index, exponent_symbol) ->
7774
"exponent symbol \""
7875
<> exponent_symbol
7976
<> "\" at invalid position: "
80-
<> index |> int.to_string
77+
<> int.to_string(index)
8178
UnknownCharacter(index, character) ->
8279
"unknown character \""
8380
<> character
8481
<> "\" at index: "
85-
<> index |> int.to_string
86-
InvalidBaseValue(base) -> "invalid base value: " <> base |> int.to_string
82+
<> int.to_string(index)
83+
InvalidBaseValue(base) -> "invalid base value: " <> int.to_string(base)
8784
OutOfIntRange(integer_string) ->
8885
"integer value \""
8986
<> integer_string

0 commit comments

Comments
 (0)