From 50b5c328d79b8c5d3f502409170c987f0c4211f3 Mon Sep 17 00:00:00 2001 From: Ferran Basora Date: Sun, 3 Mar 2019 17:35:25 +0000 Subject: [PATCH] Better parsing --- src/state.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/state.rs b/src/state.rs index ef98328..e48db9f 100644 --- a/src/state.rs +++ b/src/state.rs @@ -1,12 +1,13 @@ use std::collections::HashMap; use regex::Regex; +use std::fmt; const PATTERNS: [(&'static str, &'static str); 11] = [ - ("bash", r"[[:cntrl:]]\[([0-9]{1,2};)?([0-9]{1,2})m"), + ("bash", r"[[:cntrl:]]\[([0-9]{1,2};)?([0-9]{1,2})?m"), ("url", r"((https?://|git@|git://|ssh://|ftp://|file:///)[\w?=%/_.:,;~@!#$&()*+-]*)"), ("diff_a", r"--- a/([^ ]+)"), ("diff_b", r"\+\+\+ b/([^ ]+)"), - ("path", r"[^ ]+/[^ ]+"), + ("path", r"[^ ]+/[^ [[:cntrl:]]]+"), ("color", r"#[0-9a-fA-F]{6}"), ("uid", r"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"), ("sha", r"[0-9a-f]{7,40}"), @@ -23,6 +24,12 @@ pub struct Match<'a> { pub hint: Option } +impl<'a> fmt::Debug for Match<'a> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "Match {{ x: {}, y: {}, text: {}, hint: <{}> }}", self.x, self.y, self.text, self.hint.clone().unwrap_or("".to_string())) + } +} + impl<'a> PartialEq for Match<'a> { fn eq(&self, other: &Match) -> bool { self.x == other.x && self.y == other.y