|
18 | 18 | QUERY_DIV: ";", |
19 | 19 | ALIAS_KEYWORD: "AS" |
20 | 20 | }; |
21 | | - var Pos = CodeMirror.Pos; |
| 21 | + var Pos = CodeMirror.Pos, cmpPos = CodeMirror.cmpPos; |
22 | 22 |
|
23 | 23 | function isArray(val) { return Object.prototype.toString.call(val) == "[object Array]" } |
24 | 24 |
|
|
178 | 178 | } |
179 | 179 | } |
180 | 180 |
|
181 | | - function convertCurToNumber(cur) { |
182 | | - // max characters of a line is 999,999. |
183 | | - return cur.line + cur.ch / Math.pow(10, 6); |
184 | | - } |
185 | | - |
186 | | - function convertNumberToCur(num) { |
187 | | - return Pos(Math.floor(num), +num.toFixed(6).toString().split('.').pop()); |
188 | | - } |
189 | | - |
190 | 181 | function findTableByAlias(alias, editor) { |
191 | 182 | var doc = editor.doc; |
192 | 183 | var fullQuery = doc.getValue(); |
|
209 | 200 | separator.push(Pos(editor.lastLine(), editor.getLineHandle(editor.lastLine()).text.length)); |
210 | 201 |
|
211 | 202 | //find valid range |
212 | | - var prevItem = 0; |
213 | | - var current = convertCurToNumber(editor.getCursor()); |
| 203 | + var prevItem = null; |
| 204 | + var current = editor.getCursor() |
214 | 205 | for (var i = 0; i < separator.length; i++) { |
215 | | - var _v = convertCurToNumber(separator[i]); |
216 | | - if (current > prevItem && current <= _v) { |
217 | | - validRange = { start: convertNumberToCur(prevItem), end: convertNumberToCur(_v) }; |
| 206 | + if ((prevItem == null || cmpPos(current, prevItem) > 0) && cmpPos(current, separator[i]) <= 0) { |
| 207 | + validRange = {start: prevItem, end: separator[i]}; |
218 | 208 | break; |
219 | 209 | } |
220 | | - prevItem = _v; |
| 210 | + prevItem = separator[i]; |
221 | 211 | } |
222 | 212 |
|
223 | 213 | var query = doc.getRange(validRange.start, validRange.end, false); |
|
0 commit comments