আমি এই পদ্ধতিটি তৈরি করতে সাহায্য করতে পারি। এটি কোনও বড় বিষয় নয় তবে এটি কাজ করে:
def colorize(text, color = "default", bgColor = "default")
colors = {"default" => "38","black" => "30","red" => "31","green" => "32","brown" => "33", "blue" => "34", "purple" => "35",
"cyan" => "36", "gray" => "37", "dark gray" => "1;30", "light red" => "1;31", "light green" => "1;32", "yellow" => "1;33",
"light blue" => "1;34", "light purple" => "1;35", "light cyan" => "1;36", "white" => "1;37"}
bgColors = {"default" => "0", "black" => "40", "red" => "41", "green" => "42", "brown" => "43", "blue" => "44",
"purple" => "45", "cyan" => "46", "gray" => "47", "dark gray" => "100", "light red" => "101", "light green" => "102",
"yellow" => "103", "light blue" => "104", "light purple" => "105", "light cyan" => "106", "white" => "107"}
color_code = colors[color]
bgColor_code = bgColors[bgColor]
return "\033[#{bgColor_code};#{color_code}m#{text}\033[0m"
end
এটি কীভাবে ব্যবহার করবেন তা এখানে:
puts "#{colorize("Hello World")}"
puts "#{colorize("Hello World", "yellow")}"
puts "#{colorize("Hello World", "white","light red")}"
সম্ভাব্য উন্নতিগুলি হতে পারে:
colors
এবং bgColors
প্রতিটি সময় পদ্ধতি বলা হয় সংজ্ঞায়িত করা হচ্ছে এবং তারা পরিবর্তন করবেন না।
- অন্যান্য অপশন মত যোগ
bold
, underline
,dim
, ইত্যাদি
এই পদ্ধতি জন্য কাজ করে না p
, যেমন p
একটি করে inspect
তার যুক্তি। উদাহরণ স্বরূপ:
p "#{colorize("Hello World")}"
"\ ই [0; 38 মিঃ হেলো ওয়ার্ল্ড \ ই [0 মি" প্রদর্শন করবে
আমি এটা পরীক্ষিত puts
, print
এবং লগার মণি, এবং এটি কাজ করে জরিমানা।
আমি এটিকে উন্নত করেছি colors
এবং ক্লাস করেছি তাই bgColors
ক্লাস ধ্রুবক এবংcolorize
এটি একটি শ্রেণি পদ্ধতি:
সম্পাদনা: উন্নত কোড শৈলী, শ্রেণি পরিবর্তকের পরিবর্তে সংজ্ঞায়িত ধ্রুবক, স্ট্রিংয়ের পরিবর্তে প্রতীক ব্যবহার করে, আরও কিছু বিকল্প যুক্ত করা যেমন বোল্ড, ইটালিকস ইত্যাদি
class Colorizator
COLOURS = { default: '38', black: '30', red: '31', green: '32', brown: '33', blue: '34', purple: '35',
cyan: '36', gray: '37', dark_gray: '1;30', light_red: '1;31', light_green: '1;32', yellow: '1;33',
light_blue: '1;34', light_purple: '1;35', light_cyan: '1;36', white: '1;37' }.freeze
BG_COLOURS = { default: '0', black: '40', red: '41', green: '42', brown: '43', blue: '44',
purple: '45', cyan: '46', gray: '47', dark_gray: '100', light_red: '101', light_green: '102',
yellow: '103', light_blue: '104', light_purple: '105', light_cyan: '106', white: '107' }.freeze
FONT_OPTIONS = { bold: '1', dim: '2', italic: '3', underline: '4', reverse: '7', hidden: '8' }.freeze
def self.colorize(text, colour = :default, bg_colour = :default, **options)
colour_code = COLOURS[colour]
bg_colour_code = BG_COLOURS[bg_colour]
font_options = options.select { |k, v| v && FONT_OPTIONS.key?(k) }.keys
font_options = font_options.map { |e| FONT_OPTIONS[e] }.join(';').squeeze
return "\e[#{bg_colour_code};#{font_options};#{colour_code}m#{text}\e[0m".squeeze(';')
end
end
আপনি এটি করে এটি ব্যবহার করতে পারেন:
Colorizator.colorize "Hello World", :gray, :white
Colorizator.colorize "Hello World", :light_blue, bold: true
Colorizator.colorize "Hello World", :light_blue, :white, bold: true, underline: true