Skip to content

Commit 4df2c76

Browse files
committed
[sql-hint addon] Clean up table matching, make case-insensitive
Closes codemirror#3847
1 parent 430ee2d commit 4df2c76

File tree

1 file changed

+22
-10
lines changed

1 file changed

+22
-10
lines changed

addon/hint/sql-hint.js

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,22 @@
3030
return typeof item == "string" ? item : item.text;
3131
}
3232

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()]
3749
}
3850

3951
function shallowClone(object) {
@@ -115,13 +127,13 @@
115127
var alias = false;
116128
var aliasTable = table;
117129
// Check if table is available. If not, find table by Alias
118-
if (!getItem(tables, table)) {
130+
if (!getTable(table)) {
119131
var oldTable = table;
120132
table = findTableByAlias(table, editor);
121133
if (table !== oldTable) alias = true;
122134
}
123135

124-
var columns = getItem(tables, table);
136+
var columns = getTable(table);
125137
if (columns && columns.columns)
126138
columns = columns.columns;
127139

@@ -184,7 +196,7 @@
184196
//find valid range
185197
var prevItem = 0;
186198
var current = convertCurToNumber(editor.getCursor());
187-
for (var i=0; i< separator.length; i++) {
199+
for (var i = 0; i < separator.length; i++) {
188200
var _v = convertCurToNumber(separator[i]);
189201
if (current > prevItem && current <= _v) {
190202
validRange = { start: convertNumberToCur(prevItem), end: convertNumberToCur(_v) };
@@ -199,7 +211,7 @@
199211
var lineText = query[i];
200212
eachWord(lineText, function(word) {
201213
var wordUpperCase = word.toUpperCase();
202-
if (wordUpperCase === aliasUpperCase && getItem(tables, previousWord))
214+
if (wordUpperCase === aliasUpperCase && getTable(previousWord))
203215
table = previousWord;
204216
if (wordUpperCase !== CONS.ALIAS_KEYWORD)
205217
previousWord = word;
@@ -210,10 +222,10 @@
210222
}
211223

212224
CodeMirror.registerHelper("hint", "sql", function(editor, options) {
213-
tables = (options && options.tables) || {};
225+
tables = parseTables(options && options.tables)
214226
var defaultTableName = options && options.defaultTable;
215227
var disableKeywords = options && options.disableKeywords;
216-
defaultTable = defaultTableName && getItem(tables, defaultTableName);
228+
defaultTable = defaultTableName && getTable(defaultTableName);
217229
keywords = keywords || getKeywords(editor);
218230

219231
if (defaultTableName && !defaultTable)

0 commit comments

Comments
 (0)