Featured image of post Figlet ASCII графика

Figlet ASCII графика

Делаем красивые заглавные комментарии

Бомберман отсюда.

Введение

1
2
3
4
5
6
7
#  ┬ ┬┬─┐┬  ┬  ┌─┐    #  ┳━┓┳━┓┏┓┓┳━┓┳━┓┳━┓┓━┓┳━┓┓━┓
#  │─┤├─ │  │  │ │    #  ┃ ┃┃━┫ ┃ ┃━┫┃━┃┃━┫┗━┓┣━ ┗━┓
#  ┘ ┴┴─┘┘─┘┘─┘┘─┘    #  ┇━┛┛ ┇ ┇ ┛ ┇┇━┛┛ ┇━━┛┻━┛━━┛

#  ┳━┓┓ ┳┓━┓  ┳━┓┏━┓┏━┓     #  ┌┐┐┬─┐┌┐┐┐ ┬┌─┐┬─┐┬┌ 
#  ┃━┫┃┃┃┗━┓  ┣━ ┃  ┏━┛     #  │││├─  │ ││││ ││┬┘├┴┐
#  ┛ ┇┗┻┇━━┛  ┻━┛┗━┛┗━━     #  ┘└┘┴─┘ ┘ └┴┘┘─┘┘└┘┘ ┘

Вот такого рода надписи я вставляю в исходные коды чтобы визуально разделить на куски. В Terraform, к примеру.

Установка

Устанавливаем figlet как угодно для своего дистрибутива.
Качаем дополнительные шрифты.

1
2
curl -Lo- 'https://github.com/vlasov-y/figlet-fonts/archive/refs/tags/v1.1.tar.gz' | \
sudo tar -C "$(figlet -I2)" --strip-components 1 -xpzvf -

Просмотр всех шрифтов

1
2
3
4
find "$(figlet -I2)" -type f -name '*.*f' | while read -r i; do 
  echo "> $i"
  figlet -f "$i" "$(basename "$i")"
done | less

Функция для .bashrc

Вот тут внимательно. В подавляющем большинстве шрифтов используются знаки, которые у ваших коллег, которые тот же код из Git стянут, либо вообще не отобразятся, либо будут показаны не правильно, прямоугольниками. Я методом проб и ошибок нашёл для себя универсальный и красивый шрифт - Rusto. Есть ещё RustoFat, и он мне даже больше нравиться, но он уже проблемный 😢

1
2
3
4
5
6
7
#  ┬─┐┬ ┐┐─┐┌┐┐┌─┐
#  │┬┘│ │└─┐ │ │ │
#  ┘└┘┘─┘──┘ ┘ ┘─┘

#  ┳━┓┳ ┓┓━┓┏┓┓┏━┓┳━┓┳━┓┏┓┓
#  ┃┳┛┃ ┃┗━┓ ┃ ┃ ┃┣━ ┃━┫ ┃ 
#  ┇┗┛┇━┛━━┛ ┇ ┛━┛┇  ┛ ┇ ┇ 

Надписи выше, я получил уже используя свою функцию, по этому у Вас Rusto будет немного отличаться. Добавьте эту функцию к себе в .bashrc или .zshrc и можно будет пользоваться. Кроме того, нужно будет поставить xsel.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
rusto () {
  figlet -f rusto "$*" | sed "s@^@${P:-#  }@g; s@┆@┘@g" | tee /tmp/tt | xsel -i -b
  cat /tmp/tt
  rm -f /tmp/tt
}

rustofat () {
  figlet -f rustofat "$*" | sed "s@^@${P:-#  }@g" | tee /tmp/tt | xsel -i -b
  cat /tmp/tt
  rm -f /tmp/tt
}

Что тут творится? Выполняя команду в консоли rusto или rustofat текст, который будет передан как аргументы к командам, будет преобразован, написан на экране и сразу скопирован в буфер обмена. И да, ещё символ заменяется на , чтобы Rusto был полностью безпроблемным. Также, дописывается # к началу каждой строки, чтобы можно было сразу в исходники вставлять. Решётку можно заменить указав переменную P.

1
2
3
4
5
6
7
8
9
❯ rusto hello world
#  ┬ ┬┬─┐┬  ┬  ┌─┐  ┐ ┬┌─┐┬─┐┬  ┬─┐
#  │─┤├─ │  │  │ │  ││││ ││┬┘│  │ │
#  ┘ ┴┴─┘┘─┘┘─┘┘─┘  └┴┘┘─┘┘└┘┘─┘┘─┘

P='//  ' rustofat changed comment char
//  ┏━┓┳ ┳┳━┓┏┓┓┏━┓┳━┓┳━┓  ┏━┓┏━┓┏┏┓┏┏┓┳━┓┏┓┓┏┓┓  ┏━┓┳ ┳┳━┓┳━┓
//  ┃  ┃━┫┃━┫┃┃┃┃ ┳┣━ ┃ ┃  ┃  ┃ ┃┃┃┃┃┃┃┣━ ┃┃┃ ┃   ┃  ┃━┫┃━┫┃┳┛
//  ┗━┛┇ ┻┛ ┇┇┗┛┇━┛┻━┛┇━┛  ┗━┛┛━┛┛ ┇┛ ┇┻━┛┇┗┛ ┇   ┗━┛┇ ┻┛ ┇┇┗┛

Бонус

Форму для дневные отчётов я генерю так.

1
2
3
4
LC_ALL=C.POSIX date '+%d %B' | \
figlet | \
xargs -0 printf '```\n%s```\nNo blocks\nNo questions\nDone\\Doing:\n' | \
xsel -ib

Получается вот такое.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
```
  ___   __         _                                    
 / _ \ / /_       | | __ _ _ __  _   _  __ _ _ __ _   _ 
| | | | '_ \   _  | |/ _` | '_ \| | | |/ _` | '__| | | |
| |_| | (_) | | |_| | (_| | | | | |_| | (_| | |  | |_| |
 \___/ \___/   \___/ \__,_|_| |_|\__,_|\__,_|_|   \__, |
                                                  |___/ 
```
No blocks
No questions
Done\Doing:
- Drinking tee
- Sleeping
- Writing evening report
- Emulating work

Потом дописываю что я делал и сбрасываю в Slack.

Licensed under Apache License, Version 2.0
Обновлено Dec 01, 2023 14:46 +0200
All rights reserved
Создано при помощи Hugo
Тема Stack, дизайн Jimmy