Projects STRLCPY cfonts Commits 349cf1ae
🤬
  • ■ ■ ■ ■ ■
    nodejs/README.md
    skipped 160 lines
    161 161   
    162 162  ## Release History
    163 163   
     164 +* 3.1.1 - Fixed #58 gradient color bug, added `gray` to gradient colors
    164 165  * 3.1.0 - Added support for -V flag fallback
    165 166  * 3.0.0 - Added rust library port, aligned APIs, added hex background colors, fixed minor alignment bugs, updated license from GPLv2 to GPLv3
    166 167  * 2.10.1 - bumped dependencies
    skipped 67 lines
  • ■ ■ ■ ■
    nodejs/package.json
    1 1  {
    2 2   "name": "cfonts",
    3 3   "description": "Sexy ANSI fonts for the console",
    4  - "version": "3.1.0",
     4 + "version": "3.1.1",
    5 5   "homepage": "https://github.com/dominikwilkowski/cfonts",
    6 6   "author": {
    7 7   "name": "Dominik Wilkowski",
    skipped 127 lines
  • ■ ■ ■ ■ ■ ■
    nodejs/src/Color.js
    skipped 381 lines
    382 382   (code >= 132 && code <= 135) ||
    383 383   (code >= 139 && code <= 141) ||
    384 384   (code >= 145 && code <= 147) ||
    385  - (code >= 196 && code <= 171) ||
     385 + (code >= 169 && code <= 171) ||
    386 386   (code >= 175 && code <= 177)
    387 387   ) {
    388 388   ansi_16_code = 35;
    skipped 4 lines
    393 393   if (
    394 394   (code >= 164 && code <= 165) ||
    395 395   (code >= 182 && code <= 183) ||
    396  - (code >= 200 && code <= 200) ||
     396 + (code >= 200 && code <= 201) ||
    397 397   (code >= 218 && code <= 219)
    398 398   ) {
    399 399   ansi_16_code = 95;
    skipped 228 lines
  • ■ ■ ■ ■ ■ ■
    nodejs/src/constants.js
    skipped 133 lines
    134 134   magenta: 'magenta',
    135 135   cyan: 'cyan',
    136 136   white: 'white',
     137 + gray: 'gray',
     138 + grey: 'grey',
    137 139  };
    138 140   
    139 141  const GRADIENTS = {
    skipped 180 lines
  • ■ ■ ■ ■ ■
    nodejs/test/unit/Color.spec.js
    skipped 204 lines
    205 205   expect(inspect(ansi_2562ansi_16(240))).toEqual(inspect('\x1B[90m'));
    206 206   expect(inspect(ansi_2562ansi_16(247))).toEqual(inspect('\x1B[37m'));
    207 207   
     208 + for (let i = 0; i <= 255; i++) {
     209 + expect(`${inspect(ansi_2562ansi_16(i)) !== "'\\x1B[undefinedm'"}${i}`).toEqual(`true${i}`);
     210 + expect(`${inspect(ansi_2562ansi_16(i)) !== "'\\x1B[NaNdm'"}${i}`).toEqual(`true${i}`);
     211 + }
     212 + 
    208 213   expect(inspect(ansi_2562ansi_16(52, true))).toEqual(inspect('\x1B[41m'));
    209 214  });
    210 215   
    skipped 258 lines
  • ■ ■ ■ ■
    rust/Cargo.lock
    skipped 45 lines
    46 46   
    47 47  [[package]]
    48 48  name = "cfonts"
    49  -version = "1.0.4"
     49 +version = "1.1.0"
    50 50  dependencies = [
    51 51   "assert_cmd",
    52 52   "enable-ansi-support",
    skipped 353 lines
  • ■ ■ ■ ■
    rust/Cargo.toml
    1 1  [package]
    2 2  name = "cfonts"
    3  -version = "1.0.4"
     3 +version = "1.1.0"
    4 4  edition = "2021"
    5 5  authors = ["Dominik Wilkowski <[email protected]>"]
    6 6  license = "GPL-3.0-or-later"
    skipped 24 lines
  • ■ ■ ■ ■ ■
    rust/README.md
    skipped 150 lines
    151 151   
    152 152  ## Release History
    153 153   
     154 +* 1.1.0 - Added `yellow` to the gradient colors
    154 155  * 1.0.4 - Fixed NO_COLOR not being respected in help, fixed color conversion rgb to ansi_256
    155 156  * 1.0.3 - Fixed NO_COLOR support when run without FORCE_COLOR
    156 157  * 1.0.2 - Fixed help and version flags in first position
    skipped 10 lines
  • ■ ■ ■ ■ ■
    rust/src/args.rs
    skipped 409 lines
    410 410   "red" => Ok(String::from("#ff0000")),
    411 411   "green" => Ok(String::from("#00ff00")),
    412 412   "blue" => Ok(String::from("#0000ff")),
     413 + "yellow" => Ok(String::from("#ffff00")),
    413 414   "magenta" => Ok(String::from("#ff00ff")),
    414 415   "cyan" => Ok(String::from("#00ffff")),
    415 416   "white" => Ok(String::from("#ffffff")),
    skipped 3 lines
    419 420   // parsing hex round trip to make sure it's in a good format
    420 421   Ok(rgb2hex(&hex2rgb(unknown, &options), &options))
    421 422   } else {
    422  - Err(format!("The gradient color \"{}\" is not supported.\nAllowed options are: black, red, green, blue, magenta, cyan, white, gray, grey", color(unknown, Colors::Green)))
     423 + Err(format!("The gradient color \"{}\" is not supported.\nAllowed options are: black, red, green, blue, yellow, magenta, cyan, white, gray, grey", color(unknown, Colors::Green)))
    423 424   }
    424 425   }
    425 426   }).collect::<Result<Vec<String>,String>>()?;
    skipped 105 lines
  • ■ ■ ■ ■ ■ ■
    rust/src/cli.rs
    1 1  //! The contents of this module is all about cli specific functionality
    2 2  use std::env;
     3 +use std::fmt::Write as _;
    3 4   
    4 5  use crate::color::{color, get_term_color_support, TermColorSupport};
    5 6  use crate::config::{Align, BgColors, Colors, Env, Fonts, OptionType, Options, CLIOPTIONS};
    skipped 55 lines
    61 62   output += "This is a tool for sexy fonts in the console. Give your cli some love.\n";
    62 63   output += "\n";
    63 64   output += "Usage: cfonts \"<value>\" [option1] <input1> [option2] <input1>,<input2> [option3]\n";
    64  - output +=
    65  - &format!("Example: {}$ cfonts \"sexy font\" -f chrome -a center -c red,green,gray{}\n", bold_start, bold_end);
     65 + let _ =
     66 + writeln!(output, "Example: {}$ cfonts \"sexy font\" -f chrome -a center -c red,green,gray{}", bold_start, bold_end);
    66 67   output += "\n";
    67 68   output += "Options:\n";
    68 69   
    69 70   for option in CLIOPTIONS {
    70  - output += &format!("\n{}{}, {}", bold_start, option.name, option.shortcut);
     71 + let _ = write!(output, "\n{}{}, {}", bold_start, option.name, option.shortcut);
    71 72   if !option.fallback_shortcut.is_empty() {
    72  - output += &format!(", {}", option.fallback_shortcut);
     73 + let _ = write!(output, ", {}", option.fallback_shortcut);
    73 74   }
    74  - output += &format!("{}\n", bold_end);
    75  - output += &format!("{}\n", option.description);
    76  - output += &format!("{}${} cfonts {}", bold_start, bold_end, option.example);
     75 + let _ = writeln!(output, "{}", bold_end);
     76 + let _ = writeln!(output, "{}", option.description);
     77 + let _ = write!(output, "{}${} cfonts {}", bold_start, bold_end, option.example);
    77 78   match option.kind {
    78 79   OptionType::Font => {
    79 80   output += &color(&format!(" [ {} ]", Fonts::list()), Colors::Green).to_string();
    skipped 21 lines
  • ■ ■ ■ ■ ■ ■
    rust/tests/chars_test.rs
    skipped 306 lines
    307 307   ];
    308 308   options.colors = vec![Colors::Red, Colors::Blue];
    309 309   output = vec![
    310  - String::from("\u{1b}[34mgreen\u{1b}[39m \u{1b}[31mred\u{1b}[39m blue \u{1b}[31mred\u{1b}[39m nothing"),
     310 + String::from("\x1B[34mgreen\x1B[39m \x1B[31mred\x1B[39m blue \x1B[31mred\x1B[39m nothing"),
    311 311   String::from("color"),
    312 312   String::from("nothing"),
    313  - String::from("\u{1b}[31mred\u{1b}[39m blue"),
     313 + String::from("\x1B[31mred\x1B[39m blue"),
    314 314   ];
    315 315   assert_eq!(paint_letter(&letter, 4, &options), output);
    316 316   
    skipped 154 lines
  • ■ ■ ■ ■ ■ ■
    rust/tests/color_test.rs
    skipped 466 lines
    467 467   });
    468 468   
    469 469   temp_env::with_var("FORCE_COLOR", Some("1"), || {
    470  - assert_eq!(
    471  - color(" testing ", Colors::Rgb(Rgb::Val(243, 79, 168))),
    472  - String::from("\u{1b}[91m testing \u{1b}[39m")
    473  - );
     470 + assert_eq!(color(" testing ", Colors::Rgb(Rgb::Val(243, 79, 168))), String::from("\x1B[91m testing \x1B[39m"));
    474 471   });
    475 472   
    476 473   temp_env::with_var("FORCE_COLOR", Some("2"), || {
    477 474   assert_eq!(
    478 475   color(" testing ", Colors::Rgb(Rgb::Val(243, 79, 168))),
    479  - String::from("\u{1b}[38;5;211m testing \u{1b}[39m")
     476 + String::from("\x1B[38;5;211m testing \x1B[39m")
    480 477   );
    481 478   });
    482 479   
    483 480   temp_env::with_var("FORCE_COLOR", Some("3"), || {
    484 481   assert_eq!(
    485 482   color(" testing ", Colors::Rgb(Rgb::Val(243, 79, 168))),
    486  - String::from("\u{1b}[38;2;243;79;168m testing \u{1b}[39m")
     483 + String::from("\x1B[38;2;243;79;168m testing \x1B[39m")
    487 484   );
    488 485   });
    489 486   }
    skipped 7 lines
    497 494   temp_env::with_var("FORCE_COLOR", Some("1"), || {
    498 495   assert_eq!(
    499 496   bg_color(" testing ", BgColors::Rgb(Rgb::Val(243, 79, 168))),
    500  - String::from("\u{1b}[101m testing \u{1b}[49m")
     497 + String::from("\x1B[101m testing \x1B[49m")
    501 498   );
    502 499   });
    503 500   
    504 501   temp_env::with_var("FORCE_COLOR", Some("2"), || {
    505 502   assert_eq!(
    506 503   bg_color(" testing ", BgColors::Rgb(Rgb::Val(243, 79, 168))),
    507  - String::from("\u{1b}[48;5;211m testing \u{1b}[49m")
     504 + String::from("\x1B[48;5;211m testing \x1B[49m")
    508 505   );
    509 506   });
    510 507   
    511 508   temp_env::with_var("FORCE_COLOR", Some("3"), || {
    512 509   assert_eq!(
    513 510   bg_color(" testing ", BgColors::Rgb(Rgb::Val(243, 79, 168))),
    514  - String::from("\u{1b}[48;2;243;79;168m testing \u{1b}[49m")
     511 + String::from("\x1B[48;2;243;79;168m testing \x1B[49m")
    515 512   );
    516 513   });
    517 514   }
    skipped 5 lines
    523 520   });
    524 521   
    525 522   temp_env::with_vars(vec![("FORCE_COLOR", Some("1")), ("NO_COLOR", Some(""))], || {
    526  - assert_eq!(
    527  - color(" testing ", Colors::Rgb(Rgb::Val(243, 79, 168))),
    528  - String::from("\u{1b}[91m testing \u{1b}[39m")
    529  - );
     523 + assert_eq!(color(" testing ", Colors::Rgb(Rgb::Val(243, 79, 168))), String::from("\x1B[91m testing \x1B[39m"));
    530 524   });
    531 525   
    532 526   temp_env::with_vars(vec![("FORCE_COLOR", Some("2")), ("NO_COLOR", Some(""))], || {
    533 527   assert_eq!(
    534 528   color(" testing ", Colors::Rgb(Rgb::Val(243, 79, 168))),
    535  - String::from("\u{1b}[38;5;211m testing \u{1b}[39m")
     529 + String::from("\x1B[38;5;211m testing \x1B[39m")
    536 530   );
    537 531   });
    538 532   
    539 533   temp_env::with_vars(vec![("FORCE_COLOR", Some("3")), ("NO_COLOR", Some(""))], || {
    540 534   assert_eq!(
    541 535   color(" testing ", Colors::Rgb(Rgb::Val(243, 79, 168))),
    542  - String::from("\u{1b}[38;2;243;79;168m testing \u{1b}[39m")
     536 + String::from("\x1B[38;2;243;79;168m testing \x1B[39m")
    543 537   );
    544 538   });
    545 539   }
    skipped 7 lines
    553 547   temp_env::with_vars(vec![("FORCE_COLOR", Some("1")), ("NO_COLOR", Some(""))], || {
    554 548   assert_eq!(
    555 549   bg_color(" testing ", BgColors::Rgb(Rgb::Val(243, 79, 168))),
    556  - String::from("\u{1b}[101m testing \u{1b}[49m")
     550 + String::from("\x1B[101m testing \x1B[49m")
    557 551   );
    558 552   });
    559 553   
    560 554   temp_env::with_vars(vec![("FORCE_COLOR", Some("2")), ("NO_COLOR", Some(""))], || {
    561 555   assert_eq!(
    562 556   bg_color(" testing ", BgColors::Rgb(Rgb::Val(243, 79, 168))),
    563  - String::from("\u{1b}[48;5;211m testing \u{1b}[49m")
     557 + String::from("\x1B[48;5;211m testing \x1B[49m")
    564 558   );
    565 559   });
    566 560   
    567 561   temp_env::with_vars(vec![("FORCE_COLOR", Some("3")), ("NO_COLOR", Some(""))], || {
    568 562   assert_eq!(
    569 563   bg_color(" testing ", BgColors::Rgb(Rgb::Val(243, 79, 168))),
    570  - String::from("\u{1b}[48;2;243;79;168m testing \u{1b}[49m")
     564 + String::from("\x1B[48;2;243;79;168m testing \x1B[49m")
    571 565   );
    572 566   });
    573 567   }
    skipped 2 lines
  • ■ ■ ■ ■ ■ ■
    rust/tests/debug_test.rs
    skipped 36 lines
    37 37   
    38 38   d("test", 1, Dt::Head, &options, &mut output);
    39 39   let mut stdout = String::from_utf8(output.clone()).expect("Input not UTF-8");
    40  - assert_eq!(stdout, "\u{1b}[43m\n \u{1b}[30mtest\u{1b}[39m \u{1b}[49m\n");
     40 + assert_eq!(stdout, "\x1B[43m\n \x1B[30mtest\x1B[39m \x1B[49m\n");
    41 41   
    42 42   d("test", 1, Dt::Log, &options, &mut output);
    43 43   stdout = String::from_utf8(output.clone()).expect("Input not UTF-8");
    44  - assert_eq!(stdout, "\u{1b}[43m\n \u{1b}[30mtest\u{1b}[39m \u{1b}[49m\n \u{1b}[33mtest\u{1b}[39m\n");
     44 + assert_eq!(stdout, "\x1B[43m\n \x1B[30mtest\x1B[39m \x1B[49m\n \x1B[33mtest\x1B[39m\n");
    45 45   
    46 46   d("test", 1, Dt::Error, &options, &mut output);
    47 47   stdout = String::from_utf8(output.clone()).expect("Input not UTF-8");
    48  - assert_eq!(stdout, "\u{1b}[43m\n \u{1b}[30mtest\u{1b}[39m \u{1b}[49m\n \u{1b}[33mtest\u{1b}[39m\n\u{1b}[41m\u{1b}[37m ERROR \u{1b}[39m\u{1b}[49m \u{1b}[31mtest\u{1b}[39m\n");
     48 + assert_eq!(stdout, "\x1B[43m\n \x1B[30mtest\x1B[39m \x1B[49m\n \x1B[33mtest\x1B[39m\n\x1B[41m\x1B[37m ERROR \x1B[39m\x1B[49m \x1B[31mtest\x1B[39m\n");
    49 49   });
    50 50   }
    51 51   
    skipped 17 lines
    69 69   
    70 70   d("test", 1, Dt::Log, &options, &mut output);
    71 71   stdout = String::from_utf8(output.clone()).expect("Input not UTF-8");
    72  - assert_eq!(stdout, " \u{1b}[33mtest\u{1b}[39m\n");
     72 + assert_eq!(stdout, " \x1B[33mtest\x1B[39m\n");
    73 73   output = Vec::new();
    74 74   
    75 75   options.debug_level = 2;
    skipped 4 lines
    80 80   
    81 81   d("test", 2, Dt::Log, &options, &mut output);
    82 82   stdout = String::from_utf8(output.clone()).expect("Input not UTF-8");
    83  - assert_eq!(stdout, " \u{1b}[33mtest\u{1b}[39m\n");
     83 + assert_eq!(stdout, " \x1B[33mtest\x1B[39m\n");
    84 84   output = Vec::new();
    85 85   
    86 86   d("test", 1, Dt::Log, &options, &mut output);
    87 87   stdout = String::from_utf8(output.clone()).expect("Input not UTF-8");
    88  - assert_eq!(stdout, " \u{1b}[33mtest\u{1b}[39m\n");
     88 + assert_eq!(stdout, " \x1B[33mtest\x1B[39m\n");
    89 89   output = Vec::new();
    90 90   
    91 91   options.debug_level = 3;
    92 92   d("test", 3, Dt::Log, &options, &mut output);
    93 93   stdout = String::from_utf8(output.clone()).expect("Input not UTF-8");
    94  - assert_eq!(stdout, " \u{1b}[33mtest\u{1b}[39m\n");
     94 + assert_eq!(stdout, " \x1B[33mtest\x1B[39m\n");
    95 95   output = Vec::new();
    96 96   
    97 97   d("test", 2, Dt::Log, &options, &mut output);
    98 98   stdout = String::from_utf8(output.clone()).expect("Input not UTF-8");
    99  - assert_eq!(stdout, " \u{1b}[33mtest\u{1b}[39m\n");
     99 + assert_eq!(stdout, " \x1B[33mtest\x1B[39m\n");
    100 100   output = Vec::new();
    101 101   
    102 102   d("test", 1, Dt::Log, &options, &mut output);
    103 103   stdout = String::from_utf8(output.clone()).expect("Input not UTF-8");
    104  - assert_eq!(stdout, " \u{1b}[33mtest\u{1b}[39m\n");
     104 + assert_eq!(stdout, " \x1B[33mtest\x1B[39m\n");
    105 105   });
    106 106   }
    107 107  }
    skipped 1 lines
  • ■ ■ ■ ■ ■ ■
    rust/tests/end-to-end_test.rs
    skipped 263 lines
    264 264   no_color: true,
    265 265   },
    266 266   Test {
     267 + name: String::from("Color output for black with FORCE_COLOR 1"),
     268 + args: vec![
     269 + "test".to_string(),
     270 + "-g".to_string(),
     271 + "black,black".to_string(),
     272 + "-f".to_string(),
     273 + "console".to_string(),
     274 + ],
     275 + fixture: concat!(
     276 + "\n\n",
     277 + "\x1B[0mt\x1B[39m\x1B[0me\x1B[39m\x1B[0ms\x1B[39m\x1B[0mt\x1B[39m\n",
     278 + "\n\n"
     279 + )
     280 + .to_string(),
     281 + force_color: String::from("1"),
     282 + no_color: false,
     283 + },
     284 + Test {
     285 + name: String::from("Color output for red with FORCE_COLOR 1"),
     286 + args: vec![
     287 + "test".to_string(),
     288 + "-g".to_string(),
     289 + "red,red".to_string(),
     290 + "-f".to_string(),
     291 + "console".to_string(),
     292 + ],
     293 + fixture: concat!(
     294 + "\n\n",
     295 + "\x1B[91mt\x1B[39m\x1B[94me\x1B[39m\x1B[92ms\x1B[39m\x1B[91mt\x1B[39m\n",
     296 + "\n\n"
     297 + )
     298 + .to_string(),
     299 + force_color: String::from("1"),
     300 + no_color: false,
     301 + },
     302 + Test {
     303 + name: String::from("Color output for green with FORCE_COLOR 1"),
     304 + args: vec![
     305 + "test".to_string(),
     306 + "-g".to_string(),
     307 + "green,green".to_string(),
     308 + "-f".to_string(),
     309 + "console".to_string(),
     310 + ],
     311 + fixture: concat!(
     312 + "\n\n",
     313 + "\x1B[92mt\x1B[39m\x1B[91me\x1B[39m\x1B[94ms\x1B[39m\x1B[92mt\x1B[39m\n",
     314 + "\n\n"
     315 + )
     316 + .to_string(),
     317 + force_color: String::from("1"),
     318 + no_color: false,
     319 + },
     320 + Test {
     321 + name: String::from("Color output for yellow with FORCE_COLOR 1"),
     322 + args: vec![
     323 + "test".to_string(),
     324 + "-g".to_string(),
     325 + "yellow,yellow".to_string(),
     326 + "-f".to_string(),
     327 + "console".to_string(),
     328 + ],
     329 + fixture: concat!(
     330 + "\n\n",
     331 + "\x1B[93mt\x1B[39m\x1B[95me\x1B[39m\x1B[96ms\x1B[39m\x1B[93mt\x1B[39m\n",
     332 + "\n\n"
     333 + )
     334 + .to_string(),
     335 + force_color: String::from("1"),
     336 + no_color: false,
     337 + },
     338 + Test {
     339 + name: String::from("Color output for blue with FORCE_COLOR 1"),
     340 + args: vec![
     341 + "test".to_string(),
     342 + "-g".to_string(),
     343 + "blue,blue".to_string(),
     344 + "-f".to_string(),
     345 + "console".to_string(),
     346 + ],
     347 + fixture: concat!(
     348 + "\n\n",
     349 + "\x1B[94mt\x1B[39m\x1B[92me\x1B[39m\x1B[91ms\x1B[39m\x1B[94mt\x1B[39m\n",
     350 + "\n\n"
     351 + )
     352 + .to_string(),
     353 + force_color: String::from("1"),
     354 + no_color: false,
     355 + },
     356 + Test {
     357 + name: String::from("Color output for magenta with FORCE_COLOR 1"),
     358 + args: vec![
     359 + "test".to_string(),
     360 + "-g".to_string(),
     361 + "magenta,magenta".to_string(),
     362 + "-f".to_string(),
     363 + "console".to_string(),
     364 + ],
     365 + fixture: concat!(
     366 + "\n\n",
     367 + "\x1B[95mt\x1B[39m\x1B[96me\x1B[39m\x1B[93ms\x1B[39m\x1B[95mt\x1B[39m\n",
     368 + "\n\n"
     369 + )
     370 + .to_string(),
     371 + force_color: String::from("1"),
     372 + no_color: false,
     373 + },
     374 + Test {
     375 + name: String::from("Color output for cyan with FORCE_COLOR 1"),
     376 + args: vec![
     377 + "test".to_string(),
     378 + "-g".to_string(),
     379 + "cyan,cyan".to_string(),
     380 + "-f".to_string(),
     381 + "console".to_string(),
     382 + ],
     383 + fixture: concat!(
     384 + "\n\n",
     385 + "\x1B[96mt\x1B[39m\x1B[93me\x1B[39m\x1B[95ms\x1B[39m\x1B[96mt\x1B[39m\n",
     386 + "\n\n"
     387 + )
     388 + .to_string(),
     389 + force_color: String::from("1"),
     390 + no_color: false,
     391 + },
     392 + Test {
     393 + name: String::from("Color output for white with FORCE_COLOR 1"),
     394 + args: vec![
     395 + "test".to_string(),
     396 + "-g".to_string(),
     397 + "white,white".to_string(),
     398 + "-f".to_string(),
     399 + "console".to_string(),
     400 + ],
     401 + fixture: concat!(
     402 + "\n\n",
     403 + "\x1B[97mt\x1B[39m\x1B[97me\x1B[39m\x1B[97ms\x1B[39m\x1B[97mt\x1B[39m\n",
     404 + "\n\n"
     405 + )
     406 + .to_string(),
     407 + force_color: String::from("1"),
     408 + no_color: false,
     409 + },
     410 + Test {
     411 + name: String::from("Color output for gray with FORCE_COLOR 1"),
     412 + args: vec![
     413 + "test".to_string(),
     414 + "-g".to_string(),
     415 + "gray,gray".to_string(),
     416 + "-f".to_string(),
     417 + "console".to_string(),
     418 + ],
     419 + fixture: concat!(
     420 + "\n\n",
     421 + "\x1B[90mt\x1B[39m\x1B[90me\x1B[39m\x1B[90ms\x1B[39m\x1B[90mt\x1B[39m\n",
     422 + "\n\n"
     423 + )
     424 + .to_string(),
     425 + force_color: String::from("1"),
     426 + no_color: false,
     427 + },
     428 + Test {
     429 + name: String::from("Color output for grey with FORCE_COLOR 1"),
     430 + args: vec![
     431 + "test".to_string(),
     432 + "-g".to_string(),
     433 + "grey,grey".to_string(),
     434 + "-f".to_string(),
     435 + "console".to_string(),
     436 + ],
     437 + fixture: concat!(
     438 + "\n\n",
     439 + "\x1B[90mt\x1B[39m\x1B[90me\x1B[39m\x1B[90ms\x1B[39m\x1B[90mt\x1B[39m\n",
     440 + "\n\n"
     441 + )
     442 + .to_string(),
     443 + force_color: String::from("1"),
     444 + no_color: false,
     445 + },
     446 + Test {
    267 447   name: String::from("Align center"),
    268 448   args: vec!["test".to_string(), "-a".to_string() ,"center".to_string()],
    269 449   fixture: concat!("\n\n",
    skipped 381 lines
    651 831   name: String::from("Font test: \"console\" - with color"),
    652 832   args: vec![supported_characters.clone(), "--font".to_string(), "console".to_string(), "-c".to_string(), "red".to_string()],
    653 833   fixture: concat!("\n\n",
    654  - "\u{1b}[31ma\u{1b}[39m\u{1b}[31mb\u{1b}[39m\u{1b}[31mc\u{1b}[39m\u{1b}[31md\u{1b}[39m\u{1b}[31me\u{1b}[39m\u{1b}[31mf\u{1b}[39m\u{1b}[31mg\u{1b}[39m\u{1b}[31mh\u{1b}[39m\u{1b}[31mi\u{1b}[39m\u{1b}[31mj\u{1b}[39m\u{1b}[31mk\u{1b}[39m\u{1b}[31ml\u{1b}[39m\u{1b}[31mm\u{1b}[39m\u{1b}[31mn\u{1b}[39m\u{1b}[31mo\u{1b}[39m\u{1b}[31mp\u{1b}[39m\u{1b}[31mq\u{1b}[39m\u{1b}[31mr\u{1b}[39m\u{1b}[31ms\u{1b}[39m\u{1b}[31mt\u{1b}[39m\u{1b}[31mu\u{1b}[39m\u{1b}[31mv\u{1b}[39m\u{1b}[31mw\u{1b}[39m\u{1b}[31mx\u{1b}[39m\u{1b}[31my\u{1b}[39m\u{1b}[31mz\u{1b}[39m\u{1b}[31m0\u{1b}[39m\u{1b}[31m1\u{1b}[39m\u{1b}[31m2\u{1b}[39m\u{1b}[31m3\u{1b}[39m\u{1b}[31m4\u{1b}[39m\u{1b}[31m5\u{1b}[39m\u{1b}[31m6\u{1b}[39m\u{1b}[31m7\u{1b}[39m\u{1b}[31m8\u{1b}[39m\u{1b}[31m9\u{1b}[39m\u{1b}[31m!\u{1b}[39m\u{1b}[31m?\u{1b}[39m\u{1b}[31m.\u{1b}[39m\u{1b}[31m+\u{1b}[39m\u{1b}[31m-\u{1b}[39m\u{1b}[31m_\u{1b}[39m\u{1b}[31m=\u{1b}[39m\u{1b}[31m@\u{1b}[39m\u{1b}[31m#\u{1b}[39m\u{1b}[31m$\u{1b}[39m\u{1b}[31m%\u{1b}[39m\u{1b}[31m&\u{1b}[39m\u{1b}[31m(\u{1b}[39m\u{1b}[31m)\u{1b}[39m\u{1b}[31m/\u{1b}[39m\u{1b}[31m:\u{1b}[39m\u{1b}[31m;\u{1b}[39m\u{1b}[31m,\u{1b}[39m\u{1b}[31m'\u{1b}[39m\u{1b}[31m\"\u{1b}[39m\n",
     834 + "\x1B[31ma\x1B[39m\x1B[31mb\x1B[39m\x1B[31mc\x1B[39m\x1B[31md\x1B[39m\x1B[31me\x1B[39m\x1B[31mf\x1B[39m\x1B[31mg\x1B[39m\x1B[31mh\x1B[39m\x1B[31mi\x1B[39m\x1B[31mj\x1B[39m\x1B[31mk\x1B[39m\x1B[31ml\x1B[39m\x1B[31mm\x1B[39m\x1B[31mn\x1B[39m\x1B[31mo\x1B[39m\x1B[31mp\x1B[39m\x1B[31mq\x1B[39m\x1B[31mr\x1B[39m\x1B[31ms\x1B[39m\x1B[31mt\x1B[39m\x1B[31mu\x1B[39m\x1B[31mv\x1B[39m\x1B[31mw\x1B[39m\x1B[31mx\x1B[39m\x1B[31my\x1B[39m\x1B[31mz\x1B[39m\x1B[31m0\x1B[39m\x1B[31m1\x1B[39m\x1B[31m2\x1B[39m\x1B[31m3\x1B[39m\x1B[31m4\x1B[39m\x1B[31m5\x1B[39m\x1B[31m6\x1B[39m\x1B[31m7\x1B[39m\x1B[31m8\x1B[39m\x1B[31m9\x1B[39m\x1B[31m!\x1B[39m\x1B[31m?\x1B[39m\x1B[31m.\x1B[39m\x1B[31m+\x1B[39m\x1B[31m-\x1B[39m\x1B[31m_\x1B[39m\x1B[31m=\x1B[39m\x1B[31m@\x1B[39m\x1B[31m#\x1B[39m\x1B[31m$\x1B[39m\x1B[31m%\x1B[39m\x1B[31m&\x1B[39m\x1B[31m(\x1B[39m\x1B[31m)\x1B[39m\x1B[31m/\x1B[39m\x1B[31m:\x1B[39m\x1B[31m;\x1B[39m\x1B[31m,\x1B[39m\x1B[31m'\x1B[39m\x1B[31m\"\x1B[39m\n",
    655 835   "\n\n").to_string(),
    656 836   force_color: String::from(""),
    657 837   no_color: false,
    skipped 1295 lines
Please wait...
Page is in error, reload to recover