vec_dict_ansi

Package Version Hex Docs

Converts vec-dict to ANSI string for the Gleam programming language.

Installation

gleam add vec_dict_ansi
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:

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
}

pride

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

Search Document