Upstream version 9.37.197.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / devtools / front_end / common / CompletionDictionary.js
1 /*
2  * Copyright (C) 2013 Google Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *
8  *     * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *     * Redistributions in binary form must reproduce the above
11  * copyright notice, this list of conditions and the following disclaimer
12  * in the documentation and/or other materials provided with the
13  * distribution.
14  *     * Neither the name of Google Inc. nor the names of its
15  * contributors may be used to endorse or promote products derived from
16  * this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 /**
32  * @interface
33  */
34 WebInspector.CompletionDictionary = function() { }
35
36 WebInspector.CompletionDictionary.prototype = {
37     /**
38      * @param {string} word
39      */
40     addWord: function(word) { },
41
42     /**
43      * @param {string} word
44      */
45     removeWord: function(word) { },
46
47     /**
48      * @param {string} word
49      * @return {boolean}
50      */
51     hasWord: function(word) { },
52
53     /**
54      * @param {string} prefix
55      * @return {!Array.<string>}
56      */
57     wordsWithPrefix: function(prefix) { },
58
59     /**
60      * @param {string} word
61      * @return {number}
62      */
63     wordCount: function(word) { },
64
65     reset: function() { }
66 }
67
68 /**
69  * @constructor
70  * @implements {WebInspector.CompletionDictionary}
71  */
72 WebInspector.SampleCompletionDictionary = function() {
73     this._words = {};
74 }
75
76 WebInspector.SampleCompletionDictionary.prototype = {
77     /**
78      * @param {string} word
79      */
80     addWord: function(word)
81     {
82         if (!this._words[word])
83             this._words[word] = 1;
84         else
85             ++this._words[word];
86     },
87
88     /**
89      * @param {string} word
90      */
91     removeWord: function(word)
92     {
93         if (!this._words[word])
94             return;
95         if (this._words[word] === 1)
96             delete this._words[word];
97         else
98             --this._words[word];
99     },
100
101     /**
102      * @param {string} prefix
103      * @return {!Array.<string>}
104      */
105     wordsWithPrefix: function(prefix)
106     {
107         var words = [];
108         for(var i in this._words) {
109             if (i.startsWith(prefix))
110                 words.push(i);
111         }
112         return words;
113     },
114
115     /**
116      * @param {string} word
117      * @return {boolean}
118      */
119     hasWord: function(word)
120     {
121         return !!this._words[word];
122     },
123
124     /**
125      * @param {string} word
126      * @return {number}
127      */
128     wordCount: function(word)
129     {
130         return this._words[word] ? this._words[word] : 0;
131     },
132
133     reset: function()
134     {
135         this._words = {};
136     }
137 }