Version 3.18.1
Show:

File: autocomplete/js/autocomplete-highlighters-accentfold.js

            /**
            Provides pre-built accent-folding result highlighters for AutoComplete.
            
            These highlighters are similar to the ones provided by the `autocomplete-
            highlighters` module, but use accent-aware comparisons. For example, "resume"
            and "résumé" will be considered equal when using the accent-folding
            highlighters.
            
            @module autocomplete
            @submodule autocomplete-highlighters-accentfold
            **/
            
            /**
            @class AutoCompleteHighlighters
            @static
            **/
            
            var Highlight = Y.Highlight,
                YArray    = Y.Array;
            
            Y.mix(Y.namespace('AutoCompleteHighlighters'), {
                /**
                Accent-folding version of `charMatch()`.
            
                @method charMatchFold
                @param {String} query Query to match
                @param {Array} results Results to highlight
                @return {Array} Highlighted results
                @static
                **/
                charMatchFold: function (query, results) {
                    var queryChars = YArray.unique(query.split(''));
            
                    return YArray.map(results, function (result) {
                        return Highlight.allFold(result.text, queryChars);
                    });
                },
            
                /**
                Accent-folding version of `phraseMatch()`.
            
                @method phraseMatchFold
                @param {String} query Query to match
                @param {Array} results Results to highlight
                @return {Array} Highlighted results
                @static
                **/
                phraseMatchFold: function (query, results) {
                    return YArray.map(results, function (result) {
                        return Highlight.allFold(result.text, [query]);
                    });
                },
            
                /**
                Accent-folding version of `startsWith()`.
            
                @method startsWithFold
                @param {String} query Query to match
                @param {Array} results Results to highlight
                @return {Array} Highlighted results
                @static
                **/
                startsWithFold: function (query, results) {
                    return YArray.map(results, function (result) {
                        return Highlight.allFold(result.text, [query], {
                            startsWith: true
                        });
                    });
                },
            
                /**
                Accent-folding version of `subWordMatch()`.
            
                @method subWordMatchFold
                @param {String} query Query to match
                @param {Array} results Results to highlight
                @return {Array} Highlighted results
                @static
                **/
                subWordMatchFold: function (query, results) {
                    var queryWords = Y.Text.WordBreak.getUniqueWords(query);
            
                    return YArray.map(results, function (result) {
                        return Highlight.allFold(result.text, queryWords);
                    });
                },
            
                /**
                Accent-folding version of `wordMatch()`.
            
                @method wordMatchFold
                @param {String} query Query to match
                @param {Array} results Results to highlight
                @return {Array} Highlighted results
                @static
                **/
                wordMatchFold: function (query, results) {
                    return YArray.map(results, function (result) {
                        return Highlight.wordsFold(result.text, query);
                    });
                }
            });