()
| 254 | ]; |
| 255 | |
| 256 | var Vim = function() { |
| 257 | var alphabetRegex = /[A-Za-z]/; |
| 258 | var numberRegex = /[\d]/; |
| 259 | var whiteSpaceRegex = /\s/; |
| 260 | var wordRegexp = [(/\w/), (/[^\w\s]/)], bigWordRegexp = [(/\S/)]; |
| 261 | function makeKeyRange(start, size) { |
| 262 | var keys = []; |
| 263 | for (var i = start; i < start + size; i++) { |
| 264 | keys.push(String.fromCharCode(i)); |
| 265 | } |
| 266 | return keys; |
| 267 | } |
| 268 | var upperCaseAlphabet = makeKeyRange(65, 26); |
| 269 | var lowerCaseAlphabet = makeKeyRange(97, 26); |
| 270 | var numbers = makeKeyRange(48, 10); |
| 271 | var SPECIAL_SYMBOLS = '~`!@#$%^&*()_-+=[{}]\\|/?.,<>:;\"\''; |
| 272 | var specialSymbols = SPECIAL_SYMBOLS.split(''); |
| 273 | var specialKeys = ['Left', 'Right', 'Up', 'Down', 'Space', 'Backspace', |
| 274 | 'Esc', 'Home', 'End', 'PageUp', 'PageDown', 'Enter']; |
| 275 | var validMarks = upperCaseAlphabet.concat(lowerCaseAlphabet).concat( |
| 276 | numbers).concat(['<', '>']); |
| 277 | var validRegisters = upperCaseAlphabet.concat(lowerCaseAlphabet).concat( |
| 278 | numbers).concat('-\"'.split('')); |
| 279 | |
| 280 | function isAlphabet(k) { |
| 281 | return alphabetRegex.test(k); |
| 282 | } |
| 283 | function isLine(cm, line) { |
| 284 | return line >= cm.firstLine() && line <= cm.lastLine(); |
| 285 | } |
| 286 | function isLowerCase(k) { |
| 287 | return (/^[a-z]$/).test(k); |
| 288 | } |
| 289 | function isMatchableSymbol(k) { |
| 290 | return '()[]{}'.indexOf(k) != -1; |
| 291 | } |
| 292 | function isNumber(k) { |
| 293 | return numberRegex.test(k); |
| 294 | } |
| 295 | function isUpperCase(k) { |
| 296 | return (/^[A-Z]$/).test(k); |
| 297 | } |
| 298 | function isAlphanumeric(k) { |
| 299 | return (/^[\w]$/).test(k); |
| 300 | } |
| 301 | function isWhiteSpace(k) { |
| 302 | return whiteSpaceRegex.test(k); |
| 303 | } |
| 304 | function isWhiteSpaceString(k) { |
| 305 | return (/^\s*$/).test(k); |
| 306 | } |
| 307 | function inRangeInclusive(x, start, end) { |
| 308 | return x >= start && x <= end; |
| 309 | } |
| 310 | function inArray(val, arr) { |
| 311 | for (var i = 0; i < arr.length; i++) { |
| 312 | if (arr[i] == val) { |
| 313 | return true; |
no test coverage detected