diff --git a/vlib/term/colors.v b/vlib/term/colors.v index 9a8f1ae158..9a99f6b570 100644 --- a/vlib/term/colors.v +++ b/vlib/term/colors.v @@ -6,38 +6,12 @@ module term import os -// Calling this functions enables color terminal output on windows -// Maybe implement a way to auto run an init function when a module -// is imported on a certain os. for example to run this? -pub fn enable_term_color_win() { - $if windows { - mode_wanted := os.ENABLE_PROCESSED_OUTPUT | os.ENABLE_VIRTUAL_TERMINAL_PROCESSING - mut mode_current := 0 - h_output := C.GetStdHandle(os.STD_OUTPUT_HANDLE) - if h_output == os.INVALID_HANDLE_VALUE { - panic('term.enable_term_color_win(): error getting output handle.') - } - if !C.GetConsoleMode(h_output, &mode_current) { - panic('term.enable_term_color_win(): error getting console mode.') - } - if mode_wanted == mode_current { - return - } - if !C.SetConsoleMode(h_output, mode_wanted) { - panic('term.enable_term_color_win(): error setting console mode.') - } - } - $else { - println('term.enable_term_color_win() should only be called on windows.') - } +fn _format(msg, open, close string) string { + return '\x1b[' + open + 'm' + msg + '\x1b[' + close + 'm' } pub fn format(msg, open, close string) string { - $if windows { - enable_term_color_win() - } - - return '\x1b[' + open + 'm' + msg + '\x1b[' + close + 'm' + return _format(msg, open, close) } pub fn bg_black(msg string) string { diff --git a/vlib/term/colors_win.v b/vlib/term/colors_win.v new file mode 100644 index 0000000000..2bba13da69 --- /dev/null +++ b/vlib/term/colors_win.v @@ -0,0 +1,33 @@ +// Copyright (c) 2019 Alexander Medvednikov. All rights reserved. +// Use of this source code is governed by an MIT license +// that can be found in the LICENSE file. + +module term + +import os + +// Calling this functions enables color terminal output on windows +// Maybe implement a way to auto run an init function when a module +// is imported on a certain os. for example to run this? +pub fn enable_term_color_win() { + mode_wanted := os.ENABLE_PROCESSED_OUTPUT | os.ENABLE_VIRTUAL_TERMINAL_PROCESSING + mut mode_current := 0 + h_output := C.GetStdHandle(os.STD_OUTPUT_HANDLE) + if h_output == os.INVALID_HANDLE_VALUE { + panic('term.enable_term_color_win(): error getting output handle.') + } + if !C.GetConsoleMode(h_output, &mode_current) { + panic('term.enable_term_color_win(): error getting console mode.') + } + if mode_wanted == mode_current { + return + } + if !C.SetConsoleMode(h_output, mode_wanted) { + panic('term.enable_term_color_win(): error setting console mode.') + } +} + +pub fn format(msg, open, close string) string { + enable_term_color_win() + return _format(msg, open, close) +}