|
|
@@ -1,5 +1,5 @@ |
|
|
|
frappe.provide('frappe.search'); |
|
|
|
import { fuzzy_match } from './fuzzy_match.js' |
|
|
|
import { fuzzy_match } from './fuzzy_match.js'; |
|
|
|
|
|
|
|
|
|
|
|
frappe.search.utils = { |
|
|
@@ -535,44 +535,44 @@ frappe.search.utils = { |
|
|
|
}, |
|
|
|
|
|
|
|
fuzzy_search: function(keywords, _item) { |
|
|
|
var match = fuzzy_match(keywords, _item); |
|
|
|
return match[1]; |
|
|
|
var match = fuzzy_match(keywords, _item); |
|
|
|
return match[1]; |
|
|
|
}, |
|
|
|
|
|
|
|
bolden_match_part: function(str, subseq) { |
|
|
|
if(fuzzy_match(subseq, str)[0] === false) { |
|
|
|
return str; |
|
|
|
} |
|
|
|
if(str.indexOf(subseq) == 0) { |
|
|
|
var tail = str.split(subseq)[1]; |
|
|
|
return '<mark>' + subseq + '</mark>' + tail; |
|
|
|
} |
|
|
|
var rendered = ""; |
|
|
|
var str_orig = str; |
|
|
|
var str = str.toLowerCase(); |
|
|
|
var str_len = str.length; |
|
|
|
var subseq = subseq.toLowerCase(); |
|
|
|
|
|
|
|
outer: for(var i = 0, j = 0; i < subseq.length; i++) { |
|
|
|
var sub_ch = subseq.charCodeAt(i); |
|
|
|
while(j < str_len) { |
|
|
|
if(str.charCodeAt(j) === sub_ch) { |
|
|
|
var str_char = str_orig.charAt(j); |
|
|
|
if(str_char === str_char.toLowerCase()) { |
|
|
|
rendered += '<mark>' + subseq.charAt(i) + '</mark>'; |
|
|
|
} else { |
|
|
|
rendered += '<mark>' + subseq.charAt(i).toUpperCase() + '</mark>'; |
|
|
|
} |
|
|
|
j++; |
|
|
|
continue outer; |
|
|
|
} |
|
|
|
rendered += str_orig.charAt(j); |
|
|
|
j++; |
|
|
|
} |
|
|
|
return str_orig; |
|
|
|
} |
|
|
|
rendered += str_orig.slice(j); |
|
|
|
return rendered; |
|
|
|
if(str.indexOf(subseq) == 0) { |
|
|
|
var tail = str.split(subseq)[1]; |
|
|
|
return '<mark>' + subseq + '</mark>' + tail; |
|
|
|
} |
|
|
|
var rendered = ""; |
|
|
|
var str_orig = str; |
|
|
|
var str = str.toLowerCase(); |
|
|
|
var str_len = str.length; |
|
|
|
var subseq = subseq.toLowerCase(); |
|
|
|
|
|
|
|
outer: for(var i = 0, j = 0; i < subseq.length; i++) { |
|
|
|
var sub_ch = subseq.charCodeAt(i); |
|
|
|
while(j < str_len) { |
|
|
|
if(str.charCodeAt(j) === sub_ch) { |
|
|
|
var str_char = str_orig.charAt(j); |
|
|
|
if(str_char === str_char.toLowerCase()) { |
|
|
|
rendered += '<mark>' + subseq.charAt(i) + '</mark>'; |
|
|
|
} else { |
|
|
|
rendered += '<mark>' + subseq.charAt(i).toUpperCase() + '</mark>'; |
|
|
|
} |
|
|
|
j++; |
|
|
|
continue outer; |
|
|
|
} |
|
|
|
rendered += str_orig.charAt(j); |
|
|
|
j++; |
|
|
|
} |
|
|
|
return str_orig; |
|
|
|
} |
|
|
|
rendered += str_orig.slice(j); |
|
|
|
return rendered; |
|
|
|
}, |
|
|
|
|
|
|
|
get_executables(keywords) { |
|
|
|