Index: Source/devtools/front_end/components/FilterSuggestionBuilder.js |
diff --git a/Source/devtools/front_end/components/FilterSuggestionBuilder.js b/Source/devtools/front_end/components/FilterSuggestionBuilder.js |
deleted file mode 100644 |
index 42dd81542802edbc377fa294089cd2e2d0b277b1..0000000000000000000000000000000000000000 |
--- a/Source/devtools/front_end/components/FilterSuggestionBuilder.js |
+++ /dev/null |
@@ -1,205 +0,0 @@ |
-/* |
- * Copyright (C) 2013 Google Inc. All rights reserved. |
- * |
- * Redistribution and use in source and binary forms, with or without |
- * modification, are permitted provided that the following conditions are |
- * met: |
- * |
- * * Redistributions of source code must retain the above copyright |
- * notice, this list of conditions and the following disclaimer. |
- * * Redistributions in binary form must reproduce the above |
- * copyright notice, this list of conditions and the following disclaimer |
- * in the documentation and/or other materials provided with the |
- * distribution. |
- * * Neither the name of Google Inc. nor the names of its |
- * contributors may be used to endorse or promote products derived from |
- * this software without specific prior written permission. |
- * |
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- */ |
- |
-/** |
- * @constructor |
- * @implements {WebInspector.TextFilterUI.SuggestionBuilder} |
- * @param {!Array.<string>} keys |
- */ |
-WebInspector.FilterSuggestionBuilder = function(keys) |
-{ |
- this._keys = keys; |
- this._valueSets = {}; |
- this._valueLists = {}; |
-} |
- |
-/** @typedef {{type: string, data: string, negative: boolean}} */ |
-WebInspector.FilterSuggestionBuilder.Filter; |
- |
-WebInspector.FilterSuggestionBuilder.prototype = { |
- /** |
- * @param {!HTMLInputElement} input |
- * @return {?Array.<string>} |
- */ |
- buildSuggestions: function(input) |
- { |
- var text = input.value; |
- var end = input.selectionEnd; |
- if (end != text.length) |
- return null; |
- |
- var start = input.selectionStart; |
- text = text.substring(0, start); |
- var prefixIndex = text.lastIndexOf(" ") + 1; |
- |
- var prefix = text.substring(prefixIndex); |
- if (!prefix) |
- return []; |
- |
- var negative = prefix.startsWith("-"); |
- if (negative) |
- prefix = prefix.substring(1); |
- var modifier = negative ? "-" : ""; |
- var valueDelimiterIndex = prefix.indexOf(":"); |
- |
- var suggestions = []; |
- if (valueDelimiterIndex === -1) { |
- var matcher = new RegExp("^" + prefix.escapeForRegExp(), "i"); |
- for (var j = 0; j < this._keys.length; ++j) { |
- if (this._keys[j].match(matcher)) |
- suggestions.push(modifier + this._keys[j] + ":"); |
- } |
- } else { |
- var key = prefix.substring(0, valueDelimiterIndex); |
- var value = prefix.substring(valueDelimiterIndex + 1); |
- var matcher = new RegExp("^" + value.escapeForRegExp(), "i"); |
- var items = this._values(key); |
- for (var i = 0; i < items.length; ++i) { |
- if (items[i].match(matcher) && (items[i] !== value)) |
- suggestions.push(modifier + key + ":" + items[i]); |
- } |
- } |
- return suggestions; |
- }, |
- |
- /** |
- * @param {!HTMLInputElement} input |
- * @param {string} suggestion |
- * @param {boolean} isIntermediate |
- */ |
- applySuggestion: function(input, suggestion, isIntermediate) |
- { |
- var text = input.value; |
- |
- var start = input.selectionStart; |
- text = text.substring(0, start); |
- var prefixIndex = text.lastIndexOf(" ") + 1; |
- |
- text = text.substring(0, prefixIndex) + suggestion; |
- input.value = text; |
- if (!isIntermediate) |
- start = text.length; |
- input.setSelectionRange(start, text.length); |
- }, |
- |
- /** |
- * @param {!HTMLInputElement} input |
- */ |
- unapplySuggestion: function(input) |
- { |
- var start = input.selectionStart; |
- var end = input.selectionEnd; |
- var text = input.value; |
- if (start !== end && end === text.length) |
- input.value = text.substring(0, start); |
- }, |
- |
- /** |
- * @param {string} key |
- * @return {!Array.<string>} |
- */ |
- _values: function(key) |
- { |
- var result = this._valueLists[key]; |
- if (!result) |
- return []; |
- |
- result.sort(); |
- return result; |
- }, |
- |
- /** |
- * @param {string} key |
- * @param {?string=} value |
- */ |
- addItem: function(key, value) |
- { |
- if (!value) |
- return; |
- |
- var set = this._valueSets[key]; |
- var list = this._valueLists[key]; |
- if (!set) { |
- set = {}; |
- this._valueSets[key] = set; |
- list = []; |
- this._valueLists[key] = list; |
- } |
- |
- if (set[value]) |
- return; |
- |
- set[value] = true; |
- list.push(value); |
- }, |
- |
- /** |
- * @param {string} query |
- * @return {{text: !Array.<string>, filters: !Array.<!WebInspector.FilterSuggestionBuilder.Filter>}} |
- */ |
- parseQuery: function(query) |
- { |
- var filters = []; |
- var text = []; |
- var i = 0; |
- var j = 0; |
- var part; |
- while (true) { |
- var colonIndex = query.indexOf(":", i); |
- if (colonIndex == -1) { |
- part = query.substring(j); |
- if (part) |
- text.push(part); |
- break; |
- } |
- var spaceIndex = query.lastIndexOf(" ", colonIndex); |
- var key = query.substring(spaceIndex + 1, colonIndex); |
- var negative = key.startsWith("-"); |
- if (negative) |
- key = key.substring(1); |
- if (this._keys.indexOf(key) == -1) { |
- i = colonIndex + 1; |
- continue; |
- } |
- part = spaceIndex > j ? query.substring(j, spaceIndex) : ""; |
- if (part) |
- text.push(part); |
- var nextSpace = query.indexOf(" ", colonIndex + 1); |
- if (nextSpace == -1) { |
- filters.push({type: key, data: query.substring(colonIndex + 1), negative: negative}); |
- break; |
- } |
- filters.push({type: key, data: query.substring(colonIndex + 1, nextSpace), negative: negative}); |
- i = nextSpace + 1; |
- j = i; |
- } |
- return {text: text, filters: filters}; |
- } |
-}; |