From ac21b6e9d8030600806fa0f2f39ffdc98bfc078e Mon Sep 17 00:00:00 2001 From: Quinton Miller Date: Sat, 12 Aug 2023 21:21:10 +0800 Subject: [PATCH] Add more `Colorize::Mode` flags --- spec/std/colorize_spec.cr | 5 +++++ src/colorize.cr | 29 ++++++++++++++++++++++------- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/spec/std/colorize_spec.cr b/spec/std/colorize_spec.cr index 5b21c589af11..c318cfaa8dbc 100644 --- a/spec/std/colorize_spec.cr +++ b/spec/std/colorize_spec.cr @@ -86,10 +86,15 @@ describe "colorize" do colorize("hello").bold.to_s.should eq("\e[1mhello\e[0m") colorize("hello").bright.to_s.should eq("\e[1mhello\e[0m") colorize("hello").dim.to_s.should eq("\e[2mhello\e[0m") + colorize("hello").italic.to_s.should eq("\e[3mhello\e[0m") colorize("hello").underline.to_s.should eq("\e[4mhello\e[0m") colorize("hello").blink.to_s.should eq("\e[5mhello\e[0m") + colorize("hello").blink_fast.to_s.should eq("\e[6mhello\e[0m") colorize("hello").reverse.to_s.should eq("\e[7mhello\e[0m") colorize("hello").hidden.to_s.should eq("\e[8mhello\e[0m") + colorize("hello").strikethrough.to_s.should eq("\e[9mhello\e[0m") + colorize("hello").double_underline.to_s.should eq("\e[21mhello\e[0m") + colorize("hello").overline.to_s.should eq("\e[53mhello\e[0m") end it "colorizes mode combination" do diff --git a/src/colorize.cr b/src/colorize.cr index 4fee40faf616..48975c8a451f 100644 --- a/src/colorize.cr +++ b/src/colorize.cr @@ -285,7 +285,7 @@ module Colorize Bright = 1 # Dims the text color. Dim - # Underlines the text. + # Draws a line below the text. Underline # Makes the text blink slowly. Blink @@ -293,16 +293,31 @@ module Colorize Reverse # Makes the text invisible. Hidden + # Italicizes the text. + Italic + # Makes the text blink quickly. + BlinkFast + # Crosses out the text. + Strikethrough + # Draws two lines below the text. + DoubleUnderline + # Draws a line above the text. + Overline end end private def each_code(mode : Colorize::Mode, &) - yield '1' if mode.bold? - yield '2' if mode.dim? - yield '4' if mode.underline? - yield '5' if mode.blink? - yield '7' if mode.reverse? - yield '8' if mode.hidden? + yield "1" if mode.bold? + yield "2" if mode.dim? + yield "3" if mode.italic? + yield "4" if mode.underline? + yield "5" if mode.blink? + yield "6" if mode.blink_fast? + yield "7" if mode.reverse? + yield "8" if mode.hidden? + yield "9" if mode.strikethrough? + yield "21" if mode.double_underline? + yield "53" if mode.overline? end # A colorized object. Colors and text decorations can be modified.