From 650ad8703649a61cec913b3bfce5365b53c74d18 Mon Sep 17 00:00:00 2001 From: Anders Olsson Date: Fri, 25 Sep 2020 07:41:28 +0200 Subject: [PATCH] Sort on length of match --- txtlang/src/lib.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/txtlang/src/lib.rs b/txtlang/src/lib.rs index cde95b4..fa9f619 100644 --- a/txtlang/src/lib.rs +++ b/txtlang/src/lib.rs @@ -1,3 +1,4 @@ +use std::cmp::Reverse; use std::str; use bstr::ByteSlice; @@ -67,6 +68,8 @@ pub fn scan(input: impl AsRef<[u8]>) -> Vec { index += 1; } + result.sort_by_key(|mat| Reverse(mat.end - mat.start)); + result } @@ -90,4 +93,23 @@ mod tests { fn test_bug_001() { assert_eq!(scan("ampersand"), vec![]); } + + #[test] + fn test_sort_by_length() { + assert_eq!( + scan("Ottoman Turkish"), + vec![ + Match { + language: Language::Ota, + start: 0, + end: 15 + }, + Match { + language: Language::Tur, + start: 8, + end: 15 + } + ] + ); + } }