diff --git a/src/trick.gleam b/src/trick.gleam index 525a167..8ba3281 100644 --- a/src/trick.gleam +++ b/src/trick.gleam @@ -278,6 +278,33 @@ pub fn int(value: Int) -> Expression(a) { |> return } +pub fn int_base2(value: Int) -> Expression(a) { + value + |> int.to_base2 + |> doc.from_string + |> doc.prepend(doc.from_string("0b")) + |> Compiled(type_int) + |> return +} + +pub fn int_base8(value: Int) -> Expression(a) { + value + |> int.to_base8 + |> doc.from_string + |> doc.prepend(doc.from_string("0o")) + |> Compiled(type_int) + |> return +} + +pub fn int_base16(value: Int) -> Expression(a) { + value + |> int.to_base16 + |> doc.from_string + |> doc.prepend(doc.from_string("0x")) + |> Compiled(type_int) + |> return +} + pub fn float(value: Float) -> Expression(a) { value |> float.to_string diff --git a/test/trick_test.gleam b/test/trick_test.gleam index 4d01037..7fd9ace 100644 --- a/test/trick_test.gleam +++ b/test/trick_test.gleam @@ -929,3 +929,14 @@ pub fn type_annotation_printing_test() { |> unwrap |> birdie.snap("type_annotation_printing") } + +pub fn int_different_bases_test() { + assert 4762 |> trick.int_base2 |> trick.expression_to_string |> unwrap + == "0b1001010011010" + + assert 4762 |> trick.int_base8 |> trick.expression_to_string |> unwrap + == "0o11232" + + assert 4762 |> trick.int_base16 |> trick.expression_to_string |> unwrap + == "0x129A" +}