From e75184af5f4dc8d61424c2baafe2c6e838f7f45c Mon Sep 17 00:00:00 2001 From: Iban Eguia Moraza Date: Thu, 7 Jan 2021 17:14:21 +0100 Subject: [PATCH] Added syntax highlighting for numbers, identifiers and template literals --- boa_cli/src/helper.rs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/boa_cli/src/helper.rs b/boa_cli/src/helper.rs index 8806e33f90b..0e24b98121b 100644 --- a/boa_cli/src/helper.rs +++ b/boa_cli/src/helper.rs @@ -23,6 +23,16 @@ const UNDEFINED_COLOR: Color = Color::TrueColor { g: 100, b: 100, }; +const NUMBER_COLOR: Color = Color::TrueColor { + r: 26, + g: 214, + b: 175, +}; +const IDENTIFIER_COLOR: Color = Color::TrueColor { + r: 26, + g: 160, + b: 214, +}; #[derive(Completer, Helper, Hinter)] pub(crate) struct RLHelper { @@ -124,10 +134,12 @@ impl Highlighter for LineHighlighter { let reg = Regex::new( r#"(?x) - (?P[$A-z_]+[$A-z_0-9]*) | + (?P\b[$A-z_]+[$A-z_0-9]*\b) | (?P"([^"\\]|\\.)*") | (?P'([^'\\]|\\.)*') | - (?P[+\-/*%~^!&|=<>;:])"#, + (?P`([^`\\]|\\.)*`) | + (?P[+\-/*%~^!&|=<>;:]) | + (?P\b0[bB][01]+|0[xX][0-9a-fA-F]+|[0-9]+\.[0-9]*|[0-9]*\.[0-9]+|[0-9]+\b)"#, ) .unwrap(); @@ -142,14 +154,18 @@ impl Highlighter for LineHighlighter { identifier if KEYWORDS.contains(identifier) => { cap.as_str().color(KEYWORD_COLOR).bold().to_string() } - _ => cap.as_str().to_string(), + _ => cap.as_str().color(IDENTIFIER_COLOR).to_string(), } } else if let Some(cap) = caps.name("string_double_quote") { cap.as_str().color(STRING_COLOR).to_string() } else if let Some(cap) = caps.name("string_single_quote") { cap.as_str().color(STRING_COLOR).to_string() + } else if let Some(cap) = caps.name("template_literal") { + cap.as_str().color(STRING_COLOR).to_string() } else if let Some(cap) = caps.name("op") { cap.as_str().color(OPERATOR_COLOR).to_string() + } else if let Some(cap) = caps.name("number") { + cap.as_str().color(NUMBER_COLOR).to_string() } else { caps[0].to_string() }