mirror of
https://github.com/TECHNOFAB11/tmux-copyrat.git
synced 2025-12-12 16:10:07 +01:00
feat: match ISO datetimes
This commit is contained in:
parent
8cc42dbe44
commit
7ce0e95c8c
3 changed files with 35 additions and 3 deletions
|
|
@ -81,8 +81,10 @@ setup_pattern_binding "p" "--pattern-name path"
|
||||||
setup_pattern_binding "u" "--pattern-name url"
|
setup_pattern_binding "u" "--pattern-name url"
|
||||||
# prefix + t + m searches for Markdown URLs [...](matched.url)
|
# prefix + t + m searches for Markdown URLs [...](matched.url)
|
||||||
setup_pattern_binding "m" "--pattern-name markdown-url"
|
setup_pattern_binding "m" "--pattern-name markdown-url"
|
||||||
# prefix + t + h searches for SHA1/2 (hashes)
|
# prefix + t + h searches for SHA1/2 short or long hashes
|
||||||
setup_pattern_binding "h" "--pattern-name sha"
|
setup_pattern_binding "h" "--pattern-name sha"
|
||||||
|
# prefix + t + d searches for dates or datetimes
|
||||||
|
setup_pattern_binding "d" "--pattern-name datetime"
|
||||||
# prefix + t + e searches for email addresses (see https://www.regular-expressions.info/email.html)
|
# prefix + t + e searches for email addresses (see https://www.regular-expressions.info/email.html)
|
||||||
setup_pattern_binding "e" "--pattern-name email"
|
setup_pattern_binding "e" "--pattern-name email"
|
||||||
# prefix + t + D searches for docker shas
|
# prefix + t + D searches for docker shas
|
||||||
|
|
@ -93,7 +95,7 @@ setup_pattern_binding "c" "--pattern-name hexcolor"
|
||||||
setup_pattern_binding "U" "--pattern-name uuid"
|
setup_pattern_binding "U" "--pattern-name uuid"
|
||||||
# prefix + t + v searches for version numbers
|
# prefix + t + v searches for version numbers
|
||||||
setup_pattern_binding "v" "--pattern-name version"
|
setup_pattern_binding "v" "--pattern-name version"
|
||||||
# prefix + t + d searches for any string of 4+ digits
|
# prefix + t + G searches for any string of 4+ digits
|
||||||
setup_pattern_binding "G" "--pattern-name digits"
|
setup_pattern_binding "G" "--pattern-name digits"
|
||||||
# prefix + t + m searches for hex numbers: 0xbedead
|
# prefix + t + m searches for hex numbers: 0xbedead
|
||||||
setup_pattern_binding "P" "--pattern-name pointer-address"
|
setup_pattern_binding "P" "--pattern-name pointer-address"
|
||||||
|
|
|
||||||
|
|
@ -547,6 +547,32 @@ mod tests {
|
||||||
assert_eq!(spans.get(0).unwrap().text, "src/main.rs");
|
assert_eq!(spans.get(0).unwrap().text, "src/main.rs");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn match_datetime() {
|
||||||
|
let buffer = "12 days ago = 2021-03-04T12:23:34 text";
|
||||||
|
let lines = buffer.split('\n').collect::<Vec<_>>();
|
||||||
|
let use_all_patterns = true;
|
||||||
|
let named_pat = vec![];
|
||||||
|
let custom = vec![];
|
||||||
|
let alphabet = Alphabet("abcd".to_string());
|
||||||
|
let reverse = false;
|
||||||
|
let unique_hint = false;
|
||||||
|
let spans = Model::new(
|
||||||
|
&lines,
|
||||||
|
&alphabet,
|
||||||
|
use_all_patterns,
|
||||||
|
&named_pat,
|
||||||
|
&custom,
|
||||||
|
reverse,
|
||||||
|
unique_hint,
|
||||||
|
)
|
||||||
|
.spans;
|
||||||
|
|
||||||
|
assert_eq!(spans.len(), 1);
|
||||||
|
assert_eq!(spans.get(0).unwrap().pattern, "datetime");
|
||||||
|
assert_eq!(spans.get(0).unwrap().text, "2021-03-04T12:23:34");
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn priority_between_regexes() {
|
fn priority_between_regexes() {
|
||||||
let buffer = "Lorem [link](http://foo.bar) ipsum CUSTOM-52463 lorem ISSUE-123 lorem\nLorem /var/fd70b569/9999.log 52463 lorem\n Lorem 973113 lorem 123e4567-e89b-12d3-a456-426655440000 lorem 8888 lorem\n https://crates.io/23456/fd70b569 lorem";
|
let buffer = "Lorem [link](http://foo.bar) ipsum CUSTOM-52463 lorem ISSUE-123 lorem\nLorem /var/fd70b569/9999.log 52463 lorem\n Lorem 973113 lorem 123e4567-e89b-12d3-a456-426655440000 lorem 8888 lorem\n https://crates.io/23456/fd70b569 lorem";
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ pub(super) const EXCLUDE_PATTERNS: [(&str, &str); 1] =
|
||||||
///
|
///
|
||||||
/// The email address was obtained at https://www.regular-expressions.info/email.html.
|
/// The email address was obtained at https://www.regular-expressions.info/email.html.
|
||||||
/// Others were obtained from Ferran Basora.
|
/// Others were obtained from Ferran Basora.
|
||||||
pub(super) const PATTERNS: [(&str, &str); 16] = [
|
pub(super) const PATTERNS: [(&str, &str); 17] = [
|
||||||
("markdown-url", r"\[[^]]*\]\(([^)]+)\)"),
|
("markdown-url", r"\[[^]]*\]\(([^)]+)\)"),
|
||||||
(
|
(
|
||||||
"url",
|
"url",
|
||||||
|
|
@ -32,6 +32,10 @@ pub(super) const PATTERNS: [(&str, &str); 16] = [
|
||||||
("ipv4", r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"),
|
("ipv4", r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"),
|
||||||
("ipv6", r"[A-f0-9:]+:+[A-f0-9:]+[%\w\d]+"),
|
("ipv6", r"[A-f0-9:]+:+[A-f0-9:]+[%\w\d]+"),
|
||||||
("pointer-address", r"0x[0-9a-fA-F]+"),
|
("pointer-address", r"0x[0-9a-fA-F]+"),
|
||||||
|
(
|
||||||
|
"datetime",
|
||||||
|
r"(\d{4}-?\d{2}-?\d{2}([ T]\d{2}:\d{2}:\d{2}(\.\d{3,9})?)?)",
|
||||||
|
),
|
||||||
("digits", r"[0-9]{4,}"),
|
("digits", r"[0-9]{4,}"),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue