|
30 | 30 | return typeof item == "string" ? item : item.text; |
31 | 31 | } |
32 | 32 |
|
33 | | - function getItem(list, item) { |
34 | | - if (!list.slice) return list[item]; |
35 | | - for (var i = list.length - 1; i >= 0; i--) if (getText(list[i]) == item) |
36 | | - return list[i]; |
| 33 | + function parseTables(input) { |
| 34 | + var result = {} |
| 35 | + if (Object.prototype.toString.call(input) == "[object Array]") { |
| 36 | + for (var i = input.length - 1; i >= 0; i--) { |
| 37 | + var item = input[i] |
| 38 | + result[getText(item).toUpperCase()] = item |
| 39 | + } |
| 40 | + } else if (input) { |
| 41 | + for (var name in input) |
| 42 | + result[name.toUpperCase()] = input[name] |
| 43 | + } |
| 44 | + return result |
| 45 | + } |
| 46 | + |
| 47 | + function getTable(name) { |
| 48 | + return tables[name.toUpperCase()] |
37 | 49 | } |
38 | 50 |
|
39 | 51 | function shallowClone(object) { |
|
115 | 127 | var alias = false; |
116 | 128 | var aliasTable = table; |
117 | 129 | // Check if table is available. If not, find table by Alias |
118 | | - if (!getItem(tables, table)) { |
| 130 | + if (!getTable(table)) { |
119 | 131 | var oldTable = table; |
120 | 132 | table = findTableByAlias(table, editor); |
121 | 133 | if (table !== oldTable) alias = true; |
122 | 134 | } |
123 | 135 |
|
124 | | - var columns = getItem(tables, table); |
| 136 | + var columns = getTable(table); |
125 | 137 | if (columns && columns.columns) |
126 | 138 | columns = columns.columns; |
127 | 139 |
|
|
184 | 196 | //find valid range |
185 | 197 | var prevItem = 0; |
186 | 198 | var current = convertCurToNumber(editor.getCursor()); |
187 | | - for (var i=0; i< separator.length; i++) { |
| 199 | + for (var i = 0; i < separator.length; i++) { |
188 | 200 | var _v = convertCurToNumber(separator[i]); |
189 | 201 | if (current > prevItem && current <= _v) { |
190 | 202 | validRange = { start: convertNumberToCur(prevItem), end: convertNumberToCur(_v) }; |
|
199 | 211 | var lineText = query[i]; |
200 | 212 | eachWord(lineText, function(word) { |
201 | 213 | var wordUpperCase = word.toUpperCase(); |
202 | | - if (wordUpperCase === aliasUpperCase && getItem(tables, previousWord)) |
| 214 | + if (wordUpperCase === aliasUpperCase && getTable(previousWord)) |
203 | 215 | table = previousWord; |
204 | 216 | if (wordUpperCase !== CONS.ALIAS_KEYWORD) |
205 | 217 | previousWord = word; |
|
210 | 222 | } |
211 | 223 |
|
212 | 224 | CodeMirror.registerHelper("hint", "sql", function(editor, options) { |
213 | | - tables = (options && options.tables) || {}; |
| 225 | + tables = parseTables(options && options.tables) |
214 | 226 | var defaultTableName = options && options.defaultTable; |
215 | 227 | var disableKeywords = options && options.disableKeywords; |
216 | | - defaultTable = defaultTableName && getItem(tables, defaultTableName); |
| 228 | + defaultTable = defaultTableName && getTable(defaultTableName); |
217 | 229 | keywords = keywords || getKeywords(editor); |
218 | 230 |
|
219 | 231 | if (defaultTableName && !defaultTable) |
|
0 commit comments