2 YUI 3.13.0 (build 508226d)
3 Copyright 2013 Yahoo! Inc. All rights reserved.
4 Licensed under the BSD License.
5 http://yuilibrary.com/license/
8 YUI.add('autocomplete-filters-accentfold', function (Y, NAME) {
11 Provides pre-built accent-folding result matching filters for AutoComplete.
13 These filters are similar to the ones provided by the `autocomplete-filters`
14 module, but use accent-aware comparisons. For example, "resume" and "résumé"
15 will be considered equal when using the accent-folding filters.
18 @submodule autocomplete-filters-accentfold
22 @class AutoCompleteFilters
26 var AccentFold = Y.Text.AccentFold,
27 WordBreak = Y.Text.WordBreak,
31 Y.mix(Y.namespace('AutoCompleteFilters'), {
33 Accent folding version of `charMatch()`.
36 @param {String} query Query to match
37 @param {Array} results Results to filter
38 @return {Array} Filtered results
41 charMatchFold: function (query, results) {
42 if (!query) { return results; }
44 var queryChars = YArray.unique(AccentFold.fold(query).split(''));
46 return YArray.filter(results, function (result) {
47 var text = AccentFold.fold(result.text);
49 return YArray.every(queryChars, function (chr) {
50 return text.indexOf(chr) !== -1;
56 Accent folding version of `phraseMatch()`.
58 @method phraseMatchFold
59 @param {String} query Query to match
60 @param {Array} results Results to filter
61 @return {Array} Filtered results
64 phraseMatchFold: function (query, results) {
65 if (!query) { return results; }
67 query = AccentFold.fold(query);
69 return YArray.filter(results, function (result) {
70 return AccentFold.fold(result.text).indexOf(query) !== -1;
75 Accent folding version of `startsWith()`.
77 @method startsWithFold
78 @param {String} query Query to match
79 @param {Array} results Results to filter
80 @return {Array} Filtered results
83 startsWithFold: function (query, results) {
84 if (!query) { return results; }
86 query = AccentFold.fold(query);
88 return YArray.filter(results, function (result) {
89 return AccentFold.fold(result.text).indexOf(query) === 0;
94 Accent folding version of `subWordMatch()`.
96 @method subWordMatchFold
97 @param {String} query Query to match
98 @param {Array} results Results to filter
99 @return {Array} Filtered results
102 subWordMatchFold: function (query, results) {
103 if (!query) { return results; }
105 var queryWords = WordBreak.getUniqueWords(AccentFold.fold(query));
107 return YArray.filter(results, function (result) {
108 var resultText = AccentFold.fold(result.text);
110 return YArray.every(queryWords, function (queryWord) {
111 return resultText.indexOf(queryWord) !== -1;
117 Accent folding version of `wordMatch()`.
119 @method wordMatchFold
120 @param {String} query Query to match
121 @param {Array} results Results to filter
122 @return {Array} Filtered results
125 wordMatchFold: function (query, results) {
126 if (!query) { return results; }
128 var queryWords = WordBreak.getUniqueWords(AccentFold.fold(query));
130 return YArray.filter(results, function (result) {
131 // Convert resultWords array to a hash for fast lookup.
132 var resultWords = YArray.hash(WordBreak.getUniqueWords(
133 AccentFold.fold(result.text)));
135 return YArray.every(queryWords, function (word) {
136 return YObject.owns(resultWords, word);
143 }, '3.13.0', {"requires": ["array-extras", "text-accentfold", "text-wordbreak"]});