دیروز با موضوعی آشنا شدم به اسم ANSI Colors یا رنگ های ANSI که برام جالب بود. این مقاله رو نوشتم که شما هم آشنا بشین.
در جاوااسکریپت وقتی میخوایم متنی رو داخل کنسول بنویسیم از دستور console.log استفاده میکنیم.
console.log("I'm just the default text :(");
و نتیجه ای که میبینیم یک متن سیاه روی بک گراند سفیده
اما به لطف چیزی به اسم ANSI escape sequesnces ما میتونیم کنترل بیشتری روی خروجی داشته باشیم و مشخص کنیم چطوری دیده بشه.
در واقع ANSI escape sequesnces یک مجموعه از کدهای استاندارد هستند که به برنامه نویس اجازه میدن که به خروجی کنسول یا برنامه های متن پایه ( text based ) استایل بده. استفاده از این ANSI requences خیلی راحت و بانمکه.
این مجموعه کدهای استاندارد باید با یک الگوی مشخص ( مجموعه کاراکترهای مشخص ) شروع میشن. به این الگو میگن escape code. در این مقاله از الگویی استفاده میکنیم که در همه زبان های رایج برنامه نویسی مثل جاوااسکریپت (Javascript)، پایتون (Python) و جاوا (Java) پشتیبانی میشه.
\u001b
بریم اولین نمونه از این کدهای دستوری رو ببینیم:
خروجی این چند خط رو با هم ببینیم:
دقت کنین که همه متن ها شامل escape code و style code و متن اصلی هستند:
\u001b[ + style code (XXm) + output text
در ANSI هشت کد رنگ اصلی داریم :
سیاه = 30
قرمز = 31
سبز = 32
زرد = 33
آبی = 34
سرخابی = 35
فیروزه ای = 36
سفید = 37
مثال زیر نمونه خوبی برای استفاده این کدهاست:
const RED = "\u001b[31m";
const BLUE = "\u001b[34m";
console.log(RED + "I'm red!");
console.log(BLUE + "Or am I blue?");
لیست کد رنگ های پس زمینه به شرح زیر هستند:
پس زمینه سیاه = 40
پس زمینه قرمز = 41
پس زمینه سبز = 42
پس زمینه زرد = 43
پس زمینه آبی = 44
پس زمینه سرخابی = 45
پس زمینه فیروزه ای = 46
پس زمینه سفید = 47
کد رنگ های پس زمینه بین ; و m قرار میگیرند و میتونن با رنگ متن یا بدون رنگ متن تنظیم بشن.
text color + ; + background color + m
مثال های زیر نمونه های خوبی هستند:
و نتیجه خروجی ها رو ببینید:
کدهای رنگ اضافه با دو الگوی قابل استفاده هستند. الگوی اول کد رنگ و الگوی دوم RGB هست.
الگوی اول با کد رنگ:
برای رنگ متن از الگوی زیر استفاده میکنیم:
"\u001b[38;5;<color code>m + output text"
برای رنگ پس زمینه هم از الگوی زیر استفاده میکنیم:
"\u001b[48;5;<color code>m + output text"
عکس زیر لیست کد رنگ هاست:
الگوی دوم الگوی RGB هست:
برای رنگ متن از الگوی زیر استفاده میکنیم:
"\u001b[38;2;<R code>;<G code>;<B code>m + output text"
و برای رنگ پس زمین از الگوی زیر استفاده میکنیم:
"\u001b[48;2;<R code>;<G code>;<B code> + output text"
در بخش بعدی میبینیم که چطور از این الگوها استفاده میکنیم.
میتونیم داخل یک متن از رنگ های مختلفی استفاده کنیم. به مثال زیر توجه کنین:
نتیجه میشه خروجی زیر:
برای برگشتن رنگ متن به رنگ پیش فرض از کد زیر استفاده میکنیم:
[0m
نمونه استفاده ش رو در کد زیر نوشتم:
و خروجی زیر رو میبینیم:
نکته مهم: در جاوااسکریپت ، موقع اجرای هر console.log خود به خود همه چیز بر اساس رنگ پیش فرض اجرا میشه و نیازی به کد ریست نیست:
const WHITE_CYAN = "\u001b[37;46m";
console.log(WHITE_CYAN + "I am colorful");
// Does not have the same color as above, even with no manual reset
console.log("But I am not");
ولی در پایتون کنسول خود به خود ریست نمیشه و باید حتما دستور ریست اجرا بشه:
WHITE_CYAN = "\u001b[37;46m"
print(WHITE_CYAN + "I am colorful")
# Has the same color as above, since it was not manually reset
print("And so am I")
سه کد دیگر که به عنوان ANSI Decoration معروف هستند عبارتند از:
Bold: \u001b[1m
Italicized: \u001b[3m
Underline: \u001b[4m
حتما این موارد رو آزمایش کنید و خروجی بگیرید تا بیشتر به یادتون بمونه. من شخصا پکیج logger پروژه ام رو با این موارد آپدیت کردم.
امیدوارم از این مقاله لذت ببرید و براتون مفید باشه.
اگر دوست دارید میتونید از طریق صفحه لینکدین با من در ارتباط باشید :)
متن مقاله اصلی رو میتونید اینجا مطالعه کنید.
موفق باشید :)