# vec_dict_ansi
[](https://hex.pm/packages/vec_dict_ansi)
[](https://hexdocs.pm/vec_dict_ansi/)
Converts [vec-dict](https://hexdocs.pm/vec_dict/index.html) to [ANSI string](https://wikipedia.org/wiki/ANSI_escape_code) for the [Gleam programming language](https://gleam.run).
## Installation
```sh
gleam add vec_dict_ansi
```
```gleam
import gleam/dict
import gleam/int
import gleam/result
import vec/dict/vec2i_dict
import vec/dict/vec_dict_ansi
import vec/vec2.{Vec2}
import vec/vec2i
pub fn main() {
let qr =
vec2i_dict.from_string(
""
<> " \n"
<> " ####### #### ####### \n"
<> " # # ## # # \n"
<> " # ### # # # # # ### # \n"
<> " # ### # # # # ### # \n"
<> " # ### # # # # ### # \n"
<> " # # ## # # # \n"
<> " ####### # # # ####### \n"
<> " ## \n"
<> " # ##### # ##### \n"
<> " # ## #### ## # \n"
<> " # ## # ## ## ## \n"
<> " ### #### ###### \n"
<> " ### ## # # ## # \n"
<> " ## ### ### # \n"
<> " ####### ### # ### \n"
<> " # # ### ##### \n"
<> " # ### # # ## # # \n"
<> " # ### # # ####### # \n"
<> " # ### # ## # ## ## \n"
<> " # # # #### ## \n"
<> " ####### ## # # # \n"
<> " \n",
)
assert qr
|> dict.map_values(fn(_key, _value) { "[]" })
|> vec_dict_ansi.custom(vec2i.zero, Vec2(22, 22))
== " \n"
<> " [][][][][][][] [][][][] [][][][][][][] \n"
<> " [] [] [][] [] [] \n"
<> " [] [][][] [] [] [] [] [] [][][] [] \n"
<> " [] [][][] [] [] [] [] [][][] [] \n"
<> " [] [][][] [] [] [] [] [][][] [] \n"
<> " [] [] [][] [] [] [] \n"
<> " [][][][][][][] [] [] [] [][][][][][][] \n"
<> " [][] \n"
<> " [] [][][][][] [] [][][][][] \n"
<> " [] [][] [][][][] [][] [] \n"
<> " [] [][] [] [][] [][] [][] \n"
<> " [][][] [][][][] [][][][][][] \n"
<> " [][][] [][] [] [] [][] [] \n"
<> " [][] [][][] [][][] [] \n"
<> " [][][][][][][] [][][] [] [][][] \n"
<> " [] [] [][][] [][][][][] \n"
<> " [] [][][] [] [] [][] [] [] \n"
<> " [] [][][] [] [] [][][][][][][] [] \n"
<> " [] [][][] [] [][] [] [][] [][] \n"
<> " [] [] [] [][][][] [][] \n"
<> " [][][][][][][] [][] [] [] [] \n"
<> " "
let qr_colors = qr |> dict.map_values(fn(_key, _value) { -1 })
assert qr_colors
|> vec_dict_ansi.half_blocks(vec2i.zero, Vec2(22, 22))
== " ▄▄▄▄▄▄▄ ▄▄▄▄ ▄▄▄▄▄▄▄ \n"
<> " █ ▄▄▄ █ ▄ ▄▀█ █ ▄▄▄ █ \n"
<> " █ ███ █ █ ▀▄ █ ███ █ \n"
<> " █▄▄▄▄▄█ █▀▄▀▄ █▄▄▄▄▄█ \n"
<> " ▄ ▄▄▄▄▄ ▀▀ ▄ ▄▄▄▄▄ \n"
<> " ▀▄▀█▄ ▄ ▄█▀██ ▀▀▄▄▀ \n"
<> " ▄▄█▀▀▄▄ ▄ ▀▀█▀▄█▀▀▀█▀ \n"
<> " ▄▄▄▄▄▄▄ ▀█▄▄▀▀█ ▀██▄▀ \n"
<> " █ ▄▄▄ █ █▀█▄ ▀█▀▀▀▄ \n"
<> " █ ███ █ █▄▀▀█▀██▀▄█ \n"
<> " █▄▄▄▄▄█ ▄█ ▀█▀▀ ▄▀▀▄ \n"
<> " "
assert qr_colors
|> vec_dict_ansi.brailles(vec2i.zero, Vec2(22, 22))
== "⢰⢒⣒⢲⢀⢒⢶⢰⢒⣒⢲⠀\n"
<> "⢸⣘⣛⣸⢸⢄⢕⢸⣘⣛⣸⠀\n"
<> "⠰⡰⣖⢒⠈⣡⢦⡔⠲⢖⡠⠀\n"
<> "⢐⣚⣉⣒⠰⣌⡹⢵⠫⣭⡫⠀\n"
<> "⢸⢰⣶⢸⢸⡹⢦⢤⡽⣩⠑⠀\n"
<> "⠘⠒⠒⠚⠐⠃⠙⠉⠐⠉⠂⠀"
}
```
ANSI Color supports:
```gleam
import gleam/dict
import gleam/int
import gleam/io
import gleam/result
import vec/dict/vec2i_dict
import vec/dict/vec_dict_ansi
import vec/vec2.{Vec2}
import vec/vec2i
pub fn main() {
vec2i_dict.from_string(
""
<> "C 111111111111111111111\n"
<> "CC 11111111111111111111\n"
<> "DCC 3333333333333333333\n"
<> "DDCC 333333333333333333\n"
<> "FDDCC BBBBBBBBBBBBBBBBB\n"
<> "FFDDCC BBBBBBBBBBBBBBBB\n"
<> "FFDDCC AAAAAAAAAAAAAAAA\n"
<> "FDDCC AAAAAAAAAAAAAAAAA\n"
<> "DDCC CCCCCCCCCCCCCCCCCC\n"
<> "DCC CCCCCCCCCCCCCCCCCCC\n"
<> "CC 55555555555555555555\n"
<> "C 555555555555555555555\n",
)
|> dict.map_values(fn(_position, value) {
value |> int.base_parse(16) |> result.unwrap(-1)
})
|> vec_dict_ansi.half_blocks(vec2i.zero, Vec2(23, 11))
|> io.println
}
```

Further documentation can be found at <https://hexdocs.pm/vec_dict_ansi>.