Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 14 additions & 9 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ var repeating = require('repeating');
var cliBoxes = require('cli-boxes');

var border = cliBoxes.round;
var topOffset = 4;
var leftOffset = 17;
var defaultGreeting =
'\n _-----_ ' +
Expand All @@ -23,14 +22,6 @@ var defaultGreeting =
'\n __' + chalk.yellow('\'.___.\'') + '__ ' +
'\n ´ ' + chalk.red('` |') + '° ' + chalk.red('´ Y') + ' ` ';

// A total line with 45 characters consists of:
// 28 chars for the top frame of the speech bubble → `╭──────────────────────────╮`
// 17 chars for the yeoman character »column« → ` /___A___\ /`
var TOTAL_CHARACTERS_PER_LINE = 45;

// The speech bubble will overflow the Yeoman character if the message is too long.
var MAX_MESSAGE_LINES_BEFORE_OVERFLOW = 7;

module.exports = function (message, options) {
message = (message || 'Welcome to Yeoman, ladies and gentlemen!').trim();
options = options || {};
Expand All @@ -56,12 +47,26 @@ module.exports = function (message, options) {
var styledIndexes = {};
var completedString = '';
var regExNewLine;
var topOffset = 4;

// Amount of characters of the yeoman character »column« → ` /___A___\ /`
var YEOMAN_CHARACTER_WIDTH = 17;

// Amount of characters of the default top frame of the speech bubble → `╭──────────────────────────╮`
var DEFAULT_TOP_FRAME_WIDTH = 28;

// Amount of characters of a total line
var TOTAL_CHARACTERS_PER_LINE = YEOMAN_CHARACTER_WIDTH + DEFAULT_TOP_FRAME_WIDTH;

// The speech bubble will overflow the Yeoman character if the message is too long.
var MAX_MESSAGE_LINES_BEFORE_OVERFLOW = 7;

if (options.maxLength) {
maxLength = stripAnsi(message).toLowerCase().split(' ').sort()[0].length;

if (maxLength < options.maxLength) {
maxLength = options.maxLength;
TOTAL_CHARACTERS_PER_LINE = maxLength + YEOMAN_CHARACTER_WIDTH + topOffset;
}
}

Expand Down
2 changes: 1 addition & 1 deletion test/fixture/ansi.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
"╭──────────────────────────╮\n _-----_ \u001b[0m│\u001b[0m \u001b[0m\u001b[31m\u001b[47mH\u001b[31m\u001b[47mi\u001b[0m \u001b[0m│\u001b[0m\n | | \u001b[0m╰──────────────────────────╯\n |\u001b[31m--(o)--\u001b[39m| \n `---------´ \n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
"\n _-----_ \n | | \n |\u001b[31m--(o)--\u001b[39m| ╭──────────────────────────╮\n `---------´ \u001b[0m│\u001b[0m \u001b[0m\u001b[31m\u001b[47mH\u001b[31m\u001b[47mi\u001b[0m \u001b[0m│\u001b[0m\n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \u001b[0m╰──────────────────────────╯\n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
2 changes: 1 addition & 1 deletion test/fixture/correctly-formatted-two-lines.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
"\n _-----_ ╭──────────────────────────╮\n | | \u001b[0m│\u001b[0m \u001b[0mWelcome to Yeoman,\u001b[0m \u001b[0m│\u001b[0m\n |\u001b[31m--(o)--\u001b[39m| \u001b[0m│\u001b[0m \u001b[0mladies and gentlemen!\u001b[0m \u001b[0m│\u001b[0m\n `---------´ \u001b[0m╰──────────────────────────╯\n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
"\n _-----_ \n | | ╭──────────────────────────╮\n |\u001b[31m--(o)--\u001b[39m| \u001b[0m│\u001b[0m \u001b[0mWelcome to Yeoman,\u001b[0m \u001b[0m│\u001b[0m\n `---------´ \u001b[0m│\u001b[0m \u001b[0mladies and gentlemen!\u001b[0m \u001b[0m│\u001b[0m\n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \u001b[0m╰──────────────────────────╯\n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
2 changes: 1 addition & 1 deletion test/fixture/correctly-formatted.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
"\n _-----_ \n | | ╭──────────────────────────╮\n |\u001b[31m--(o)--\u001b[39m| \u001b[0m│\u001b[0m \u001b[0mHi\u001b[0m \u001b[0m│\u001b[0m\n `---------´ \u001b[0m╰──────────────────────────╯\n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
"\n _-----_ \n | | \n |\u001b[31m--(o)--\u001b[39m| ╭──────────────────────────╮\n `---------´ \u001b[0m│\u001b[0m \u001b[0mHi\u001b[0m \u001b[0m│\u001b[0m\n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \u001b[0m╰──────────────────────────╯\n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
2 changes: 1 addition & 1 deletion test/fixture/half-ansi.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
"╭──────────────────────────╮\n _-----_ \u001b[0m│\u001b[0m \u001b[0m\u001b[31m\u001b[47mH\u001b[31m\u001b[47mi\u001b[49m\u001b[39m \u001b[49m\u001b[39mt\u001b[49m\u001b[39mh\u001b[49m\u001b[39me\u001b[49m\u001b[39mr\u001b[49m\u001b[39me\u001b[49m\u001b[39m,\u001b[49m\u001b[39m \u001b[49m\u001b[39ms\u001b[49m\u001b[39mi\u001b[49m\u001b[39mr\u001b[49m\u001b[39m!\u001b[0m \u001b[0m│\u001b[0m\n | | \u001b[0m╰──────────────────────────╯\n |\u001b[31m--(o)--\u001b[39m| \n `---------´ \n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
"\n _-----_ \n | | \n |\u001b[31m--(o)--\u001b[39m| ╭──────────────────────────╮\n `---------´ \u001b[0m│\u001b[0m \u001b[0m\u001b[31m\u001b[47mH\u001b[31m\u001b[47mi\u001b[49m\u001b[39m \u001b[49m\u001b[39mt\u001b[49m\u001b[39mh\u001b[49m\u001b[39me\u001b[49m\u001b[39mr\u001b[49m\u001b[39me\u001b[49m\u001b[39m,\u001b[49m\u001b[39m \u001b[49m\u001b[39ms\u001b[49m\u001b[39mi\u001b[49m\u001b[39mr\u001b[49m\u001b[39m!\u001b[0m \u001b[0m│\u001b[0m\n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \u001b[0m╰──────────────────────────╯\n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
2 changes: 1 addition & 1 deletion test/fixture/handle-fullwidth.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
"\n _-----_ \n | | \n |\u001b[31m--(o)--\u001b[39m| \n `---------´ \n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
"\n _-----_ \n | | \n |\u001b[31m--(o)--\u001b[39m| ╭──────────────────────────╮\n `---------´ \u001b[0m│\u001b[0m \u001b[0m项目可以更新了\u001b[0m \u001b[0m│\u001b[0m\n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \u001b[0m╰──────────────────────────╯\n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
2 changes: 1 addition & 1 deletion test/fixture/handle-new-line.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
" \u001b[0m│\u001b[0m \u001b[0m\u001b[0m \u001b[0m│\u001b[0m\n _-----_ \u001b[0m│\u001b[0m \u001b[0mfourth line\u001b[0m \u001b[0m│\u001b[0m\n | | \u001b[0m╰──────────────────────────╯\n |\u001b[31m--(o)--\u001b[39m| \n `---------´ \n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
"\n _-----_ ╭──────────────────────────╮\n | | \u001b[0m│\u001b[0m \u001b[0mfirst line\u001b[0m \u001b[0m│\u001b[0m\n |\u001b[31m--(o)--\u001b[39m| \u001b[0m│\u001b[0m \u001b[0msecond line\u001b[0m \u001b[0m│\u001b[0m\n `---------´ \u001b[0m│\u001b[0m \u001b[0m\u001b[0m \u001b[0m│\u001b[0m\n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \u001b[0m│\u001b[0m \u001b[0mfourth line\u001b[0m \u001b[0m│\u001b[0m\n /___A___\\ /\u001b[0m╰──────────────────────────╯\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
2 changes: 1 addition & 1 deletion test/fixture/length-customization.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
"\n _-----_ ╭──────────╮\n | | \u001b[0m│\u001b[0m \u001b[0mHi\u001b[0m \u001b[0m│\u001b[0m\n |\u001b[31m--(o)--\u001b[39m| \u001b[0m╰──────────\n `---------´ \n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
"\n _-----_ \n | | \n |\u001b[31m--(o)--\u001b[39m| ──────────\n `---------´ \u001b[0m│\u001b[0m \u001b[0mHi\u001b[0m \u001b[0m│\u001b[0m\n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \u001b[0m╰──────────╯\n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
2 changes: 1 addition & 1 deletion test/fixture/long-words.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
" \u001b[0m╰──────────────────────────\n _-----_ \n | | \n |\u001b[31m--(o)--\u001b[39m| \n `---------´ \n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
"\n _-----_ ──────────────────────────\n | | \u001b[0m│\u001b[0m \u001b[0miloveunicornsiloveunicor\u001b[0m \u001b[0m│\u001b[0m\n |\u001b[31m--(o)--\u001b[39m| \u001b[0m│\u001b[0m \u001b[0mnsiloveunicornsiloveunic\u001b[0m \u001b[0m│\u001b[0m\n `---------´ \u001b[0m│\u001b[0m \u001b[0mornsiloveunicornsiloveun\u001b[0m \u001b[0m│\u001b[0m\n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \u001b[0m│\u001b[0m \u001b[0micorns\u001b[0m \u001b[0m│\u001b[0m\n /___A___\\ /\u001b[0m╰──────────────────────────╯\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
2 changes: 1 addition & 1 deletion test/fixture/overflow.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
" \u001b[0m│\u001b[0m \u001b[0min owner’s\u001b[0m \u001b[0m│\u001b[0m\n \u001b[0m│\u001b[0m \u001b[0mface like\u001b[0m \u001b[0m│\u001b[0m\n \u001b[0m│\u001b[0m \u001b[0mcamera\u001b[0m \u001b[0m│\u001b[0m\n _-----_ \u001b[0m│\u001b[0m \u001b[0mlens. Cough\u001b[0m \u001b[0m│\u001b[0m\n | | \u001b[0m│\u001b[0m \u001b[0mfurball.\u001b[0m \u001b[0m│\u001b[0m\n |\u001b[31m--(o)--\u001b[39m| \u001b[0m╰─────────────╯\n `---------´ \n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
"\n ╭─────────────╮\n \u001b[0m│\u001b[0m \u001b[0mLie on your\u001b[0m \u001b[0m│\u001b[0m\n _-----_ \u001b[0m│\u001b[0m \u001b[0mbelly and\u001b[0m \u001b[0m│\u001b[0m\n | | \u001b[0m│\u001b[0m \u001b[0mpurr when\u001b[0m \u001b[0m│\u001b[0m\n |\u001b[31m--(o)--\u001b[39m| \u001b[0m│\u001b[0m \u001b[0myou are\u001b[0m \u001b[0m│\u001b[0m\n `---------´ \u001b[0m│\u001b[0m \u001b[0masleep\u001b[0m \u001b[0m│\u001b[0m\n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \u001b[0m│\u001b[0m \u001b[0mshove bum\u001b[0m \u001b[0m│\u001b[0m\n /___A___\\ /\u001b[0m│\u001b[0m \u001b[0min owner’s\u001b[0m \u001b[0m│\u001b[0m\n \u001b[33m| ~ |\u001b[39m \u001b[0m│\u001b[0m \u001b[0mface like\u001b[0m \u001b[0m│\u001b[0m\n __\u001b[33m'.___.'\u001b[39m__ \u001b[0m│\u001b[0m \u001b[0mcamera\u001b[0m \u001b[0m│\u001b[0m\n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \u001b[0m│\u001b[0m \u001b[0mlens. Cough\u001b[0m \u001b[0m│\u001b[0m\n \u001b[0m│\u001b[0m \u001b[0mfurball.\u001b[0m \u001b[0m│\u001b[0m\n \u001b[0m╰─────────────╯\n"
2 changes: 1 addition & 1 deletion test/fixture/override-maxLength.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
"╭────────╮\n _-----_ \u001b[0m│\u001b[0m \u001b[0mHello,\u001b[0m \u001b[0m│\u001b[0m\n | | \u001b[0m│\u001b[0m \u001b[0mbuddy!\u001b[0m \u001b[0m│\u001b[0m\n |\u001b[31m--(o)--\u001b[39m| \u001b[0m╰────────╯\n `---------´ \n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
"\n _-----_ \n | | ╭────────╮\n |\u001b[31m--(o)--\u001b[39m| \u001b[0m│\u001b[0m \u001b[0mHello,\u001b[0m \u001b[0m│\u001b[0m\n `---------´ \u001b[0m│\u001b[0m \u001b[0mbuddy!\u001b[0m \u001b[0m│\u001b[0m\n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \u001b[0m╰────────╯\n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
2 changes: 1 addition & 1 deletion test/fixture/wrap-ansi-styles.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
" \u001b[0m│\u001b[0m \u001b[0m\u001b[31m\u001b[47mH\u001b[31m\u001b[47mi\u001b[49m\u001b[39m \u001b[49m\u001b[39mt\u001b[49m\u001b[39mh\u001b[49m\u001b[39me\u001b[49m\u001b[39mr\u001b[49m\u001b[39me\u001b[49m\u001b[39m,\u001b[49m\u001b[39m \u001b[49m\u001b[39ms\u001b[49m\u001b[39mi\u001b[49m\u001b[39mr\u001b[49m\u001b[39m!\u001b[49m\u001b[39m \u001b[44m\u001b[37my\u001b[44m\u001b[37mo\u001b[44m\u001b[37mu\u001b[44m\u001b[37m \u001b[44m\u001b[37ma\u001b[44m\u001b[37mr\u001b[44m\u001b[37me\u001b[0m \u001b[0m│\u001b[0m\n _-----_ \u001b[0m│\u001b[0m \u001b[0m\u001b[44m\u001b[37ml\u001b[44m\u001b[37mo\u001b[44m\u001b[37mo\u001b[44m\u001b[37mk\u001b[44m\u001b[37mi\u001b[44m\u001b[37mn\u001b[44m\u001b[37mg\u001b[39m\u001b[49m \u001b[39m\u001b[49ms\u001b[39m\u001b[49mw\u001b[39m\u001b[49me\u001b[39m\u001b[49ml\u001b[39m\u001b[49ml\u001b[39m\u001b[49m \u001b[39m\u001b[49mt\u001b[39m\u001b[49mo\u001b[39m\u001b[49md\u001b[39m\u001b[49ma\u001b[39m\u001b[49my\u001b[39m\u001b[49m!\u001b[0m \u001b[0m│\u001b[0m\n | | \u001b[0m╰──────────────────────────╯\n |\u001b[31m--(o)--\u001b[39m| \n `---------´ \n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
"\n _-----_ \n | | ╭──────────────────────────╮\n |\u001b[31m--(o)--\u001b[39m| \u001b[0m│\u001b[0m \u001b[0m\u001b[31m\u001b[47mH\u001b[31m\u001b[47mi\u001b[49m\u001b[39m \u001b[49m\u001b[39mt\u001b[49m\u001b[39mh\u001b[49m\u001b[39me\u001b[49m\u001b[39mr\u001b[49m\u001b[39me\u001b[49m\u001b[39m,\u001b[49m\u001b[39m \u001b[49m\u001b[39ms\u001b[49m\u001b[39mi\u001b[49m\u001b[39mr\u001b[49m\u001b[39m!\u001b[49m\u001b[39m \u001b[44m\u001b[37my\u001b[44m\u001b[37mo\u001b[44m\u001b[37mu\u001b[44m\u001b[37m \u001b[44m\u001b[37ma\u001b[44m\u001b[37mr\u001b[44m\u001b[37me\u001b[0m \u001b[0m│\u001b[0m\n `---------´ \u001b[0m│\u001b[0m \u001b[0m\u001b[44m\u001b[37ml\u001b[44m\u001b[37mo\u001b[44m\u001b[37mo\u001b[44m\u001b[37mk\u001b[44m\u001b[37mi\u001b[44m\u001b[37mn\u001b[44m\u001b[37mg\u001b[39m\u001b[49m \u001b[39m\u001b[49ms\u001b[39m\u001b[49mw\u001b[39m\u001b[49me\u001b[39m\u001b[49ml\u001b[39m\u001b[49ml\u001b[39m\u001b[49m \u001b[39m\u001b[49mt\u001b[39m\u001b[49mo\u001b[39m\u001b[49md\u001b[39m\u001b[49ma\u001b[39m\u001b[49my\u001b[39m\u001b[49m!\u001b[0m \u001b[0m│\u001b[0m\n \u001b[33m(\u001b[39m _\u001b[33m´U`\u001b[39m_ \u001b[33m)\u001b[39m \u001b[0m╰──────────────────────────╯\n /___A___\\ /\n \u001b[33m| ~ |\u001b[39m \n __\u001b[33m'.___.'\u001b[39m__ \n ´ \u001b[31m` |\u001b[39m° \u001b[31m´ Y\u001b[39m ` \n"
Loading