เติมแต่งสีสันให้กับข้อความใน Ruby

เริ่มต้นปี 2564 กันด้วยบทความเบาๆ ก่อนแล้วกัน โดยวันนี้จะมาพูดถึงการเติมแต่งสีสันให้กับข้อความที่เราพ่นออกทาง terminal หรือ console ซึ่งการเพิ่มสีสันให้กับข้อความก็อาจจะทำให้เรามองเห็นได้ง่ายขึ้น หรือสนุกกับการอ่าน log ก็เป็นได้

วิธีการที่จะเพิ่มสีสันให้กับข้อความก็ง่ายๆ เพียงใช้ Gem ซึ่งจะแนะนำด้วยกัน 2 ตัว คือ Colorize gem และ Rainbow gem โดยทั้งสองตัวมีความสามารถที่คล้ายคลึงกัน แต่ถ้าดูในเรื่องการอัพเดตก็คงต้องเลือก Rainbow เพราะ Colorize นั้นดูแล้วไม่ได้รับการอัพเตดมามากว่า 2 ปีแล้ว

Rainbow

สำหรับวิธีการใช้งาน Rainbow นั้นสามารถทำได้ 2 วิธี คือ

  1. เรียกผ่าน Presentation Object

     require "rainbow"
    
     puts Rainbow("Hello World").green.underline
    
  2. ใช้ Refinement เพื่อเพิ่มความสามารถให้กับ String

     require "rainbow/refinement"
     using Rainbow
    
     puts "Hello World".blue.underline
    

จากโค้ดข้างต้นจะให้ผลลัพท์เหมือนกันดังแสดงในรูปด้านล่าง

rainbow_1 Colorizing 1

นอกจากสีที่เป็น ANSI แล้ว เรายังสามารถใช้สีที่เป็น RGB ได้ด้วย ไม่ว่าจะใช้เป็น Hex String หรือ Decimal

puts Rainbow("Blue Green Color").color("15b5b0") # .color(21, 181, 176)

rainbow_2 Colorizing 2

เพิ่มความ advance ให้กับการแสดงผลอีกหน่อย โดยการแสดงข้อความแบบไล่สี

colors = ['009292', 'f65156', '88070b', 'ffce13'] # Color from https://www.canva.com/colors/color-palettes/fluorescent-fruit/
i = -1
puts "What a Wonderful World".chars.map { |char| i += 1; Rainbow(char).color(colors[i % colors.size]) }.join

rainbow_2 Colorizing 3

References