3
Copyright 2012 Yahoo! Inc. All rights reserved.
4
Licensed under the BSD License.
5
http://yuilibrary.com/license/
7
YUI.add('autocomplete-highlighters', function(Y) {
10
Provides pre-built result highlighters for AutoComplete.
13
@submodule autocomplete-highlighters
14
@class AutoCompleteHighlighters
19
Highlight = Y.Highlight,
21
Highlighters = Y.mix(Y.namespace('AutoCompleteHighlighters'), {
22
// -- Public Methods -------------------------------------------------------
25
Highlights any individual query character that occurs anywhere in a result.
29
@param {String} query Query to match
30
@param {Array} results Results to highlight
31
@return {Array} Highlighted results
34
charMatch: function (query, results, caseSensitive) {
35
// The caseSensitive parameter is only intended for use by
36
// charMatchCase(). It's intentionally undocumented.
38
var queryChars = YArray.unique((caseSensitive ? query :
39
query.toLowerCase()).split(''));
41
return YArray.map(results, function (result) {
42
return Highlight.all(result.text, queryChars, {
43
caseSensitive: caseSensitive
49
Case-sensitive version of `charMatch()`.
52
@param {String} query Query to match
53
@param {Array} results Results to highlight
54
@return {Array} Highlighted results
57
charMatchCase: function (query, results) {
58
return Highlighters.charMatch(query, results, true);
62
Highlights the complete query as a phrase anywhere within a result. Case-
66
@param {String} query Query to match
67
@param {Array} results Results to highlight
68
@return {Array} Highlighted results
71
phraseMatch: function (query, results, caseSensitive) {
72
// The caseSensitive parameter is only intended for use by
73
// phraseMatchCase(). It's intentionally undocumented.
75
return YArray.map(results, function (result) {
76
return Highlight.all(result.text, [query], {
77
caseSensitive: caseSensitive
83
Case-sensitive version of `phraseMatch()`.
85
@method phraseMatchCase
86
@param {String} query Query to match
87
@param {Array} results Results to highlight
88
@return {Array} Highlighted results
91
phraseMatchCase: function (query, results) {
92
return Highlighters.phraseMatch(query, results, true);
96
Highlights the complete query as a phrase at the beginning of a result.
100
@param {String} query Query to match
101
@param {Array} results Results to highlight
102
@return {Array} Highlighted results
105
startsWith: function (query, results, caseSensitive) {
106
// The caseSensitive parameter is only intended for use by
107
// startsWithCase(). It's intentionally undocumented.
109
return YArray.map(results, function (result) {
110
return Highlight.all(result.text, [query], {
111
caseSensitive: caseSensitive,
118
Case-sensitive version of `startsWith()`.
120
@method startsWithCase
121
@param {String} query Query to match
122
@param {Array} results Results to highlight
123
@return {Array} Highlighted results
126
startsWithCase: function (query, results) {
127
return Highlighters.startsWith(query, results, true);
131
Highlights portions of results in which words from the query match either
132
whole words or parts of words in the result. Non-word characters like
133
whitespace and certain punctuation are ignored. Case-insensitive.
136
@param {String} query Query to match
137
@param {Array} results Results to highlight
138
@return {Array} Highlighted results
141
subWordMatch: function (query, results, caseSensitive) {
142
// The caseSensitive parameter is only intended for use by
143
// subWordMatchCase(). It's intentionally undocumented.
145
var queryWords = Y.Text.WordBreak.getUniqueWords(query, {
146
ignoreCase: !caseSensitive
149
return YArray.map(results, function (result) {
150
return Highlight.all(result.text, queryWords, {
151
caseSensitive: caseSensitive
157
Case-sensitive version of `subWordMatch()`.
159
@method subWordMatchCase
160
@param {String} query Query to match
161
@param {Array} results Results to highlight
162
@return {Array} Highlighted results
165
subWordMatchCase: function (query, results) {
166
return Highlighters.subWordMatch(query, results, true);
170
Highlights individual words in results that are also in the query. Non-word
171
characters like punctuation are ignored. Case-insensitive.
174
@param {String} query Query to match
175
@param {Array} results Results to highlight
176
@return {Array} Highlighted results
179
wordMatch: function (query, results, caseSensitive) {
180
// The caseSensitive parameter is only intended for use by
181
// wordMatchCase(). It's intentionally undocumented.
183
return YArray.map(results, function (result) {
184
return Highlight.words(result.text, query, {
185
caseSensitive: caseSensitive
191
Case-sensitive version of `wordMatch()`.
193
@method wordMatchCase
194
@param {String} query Query to match
195
@param {Array} results Results to highlight
196
@return {Array} Highlighted results
199
wordMatchCase: function (query, results) {
200
return Highlighters.wordMatch(query, results, true);
205
}, '3.5.1' ,{requires:['array-extras', 'highlight-base']});