Forgive errors to user

js-version
Anton Medvedev 6 years ago
parent a696018fa5
commit 225239bf3d

98
fx.js

@ -95,7 +95,14 @@ module.exports = function start(filename, source) {
input.on('submit', function () {
if (autocomplete.hidden) {
apply()
const code = input.getValue()
if (/^\//.test(code)) {
// Forgive a mistake to the user. This looks like user wanted to search something.
apply('')
applyPattern(code)
} else {
apply(code)
}
} else {
// Autocomplete selected
let code = input.getValue()
@ -118,7 +125,8 @@ module.exports = function start(filename, source) {
input.on('cancel', function () {
if (autocomplete.hidden) {
apply()
const code = input.getValue()
apply(code)
} else {
// Autocomplete not selected
autocomplete.hide()
@ -163,42 +171,7 @@ module.exports = function start(filename, source) {
})
search.on('submit', function (pattern) {
let regex
let m = pattern.match(/^\/(.*)\/([gimuy]*)$/)
if (m) {
try {
regex = new RegExp(m[1], m[2])
} catch (e) {
// Wrong regexp.
}
} else {
m = pattern.match(/^\/(.*)$/)
if (m) {
try {
regex = new RegExp(m[1], 'gi')
} catch (e) {
// Wrong regexp.
}
}
}
highlight = regex
if (highlight) {
findGen = find(json, highlight)
findNext()
} else {
findGen = null
currentPath = null
}
search.hide()
search.setValue('')
box.height = '100%'
box.focus()
program.cursorPos(0, 0)
render()
applyPattern(pattern)
})
search.on('cancel', function () {
@ -365,9 +338,7 @@ module.exports = function start(filename, source) {
return [n, line]
}
function apply() {
const code = input.getValue()
function apply(code) {
if (code && code.length !== 0) {
try {
json = reduce(source, code)
@ -432,7 +403,11 @@ module.exports = function start(filename, source) {
if (code && code.length !== 0) {
try {
const pretender = reduce(source, code)
if (typeof pretender !== 'undefined' && typeof pretender !== 'function') {
if (
typeof pretender !== 'undefined'
&& typeof pretender !== 'function'
&& !(pretender instanceof RegExp)
) {
json = pretender
}
} catch (e) {
@ -447,6 +422,45 @@ module.exports = function start(filename, source) {
render()
}
function applyPattern(pattern) {
let regex
let m = pattern.match(/^\/(.*)\/([gimuy]*)$/)
if (m) {
try {
regex = new RegExp(m[1], m[2])
} catch (e) {
// Wrong regexp.
}
} else {
m = pattern.match(/^\/(.*)$/)
if (m) {
try {
regex = new RegExp(m[1], 'gi')
} catch (e) {
// Wrong regexp.
}
}
}
highlight = regex
if (highlight) {
findGen = find(json, highlight)
findNext()
} else {
findGen = null
currentPath = null
}
search.hide()
search.setValue('')
box.height = '100%'
box.focus()
program.cursorPos(0, 0)
render()
}
function findNext() {
if (!findGen) {
return

Loading…
Cancel
Save