NOBUG: Fixed file access permissions
[moodle.git] / lib / yuilib / 3.13.0 / autocomplete-filters-accentfold / autocomplete-filters-accentfold-debug.js
blob64fcff0ab5e4af3f829c2fdebcb661e1a52dc646
1 /*
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/
6 */
8 YUI.add('autocomplete-filters-accentfold', function (Y, NAME) {
10 /**
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.
17 @module autocomplete
18 @submodule autocomplete-filters-accentfold
19 **/
21 /**
22 @class AutoCompleteFilters
23 @static
24 **/
26 var AccentFold = Y.Text.AccentFold,
27     WordBreak  = Y.Text.WordBreak,
28     YArray     = Y.Array,
29     YObject    = Y.Object;
31 Y.mix(Y.namespace('AutoCompleteFilters'), {
32     /**
33     Accent folding version of `charMatch()`.
35     @method charMatchFold
36     @param {String} query Query to match
37     @param {Array} results Results to filter
38     @return {Array} Filtered results
39     @static
40     **/
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;
51             });
52         });
53     },
55     /**
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
62     @static
63     **/
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;
71         });
72     },
74     /**
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
81     @static
82     **/
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;
90         });
91     },
93     /**
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
100     @static
101     **/
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;
112             });
113         });
114     },
116     /**
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
123     @static
124     **/
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);
137             });
138         });
139     }
143 }, '3.13.0', {"requires": ["array-extras", "text-accentfold", "text-wordbreak"]});