command as action/reducer
This commit is contained in:
parent
14d13e2c3a
commit
bf890a6d9d
5 changed files with 71 additions and 50 deletions
35
src/actions/command.js
Normal file
35
src/actions/command.js
Normal file
|
@ -0,0 +1,35 @@
|
|||
import actions from '../actions';
|
||||
|
||||
const normalizeUrl = (string) => {
|
||||
try {
|
||||
return new URL(string).href
|
||||
} catch (e) {
|
||||
return 'http://' + string;
|
||||
}
|
||||
}
|
||||
|
||||
export function exec(line) {
|
||||
let name = line.split(' ')[0];
|
||||
let remaining = line.replace(name + ' ', '');
|
||||
|
||||
switch (name) {
|
||||
case 'open':
|
||||
// TODO use search engined and pass keywords to them
|
||||
return {
|
||||
type: actions.COMMAND_OPEN_URL,
|
||||
url: normalizeUrl(remaining)
|
||||
};
|
||||
case 'tabopen':
|
||||
return {
|
||||
type: actions.COMMAND_TABOPEN_URL,
|
||||
url: remaining
|
||||
};
|
||||
case 'b':
|
||||
case 'buffer':
|
||||
return {
|
||||
type: actions.COMMAND_BUFFER,
|
||||
keywords: remaining
|
||||
};
|
||||
}
|
||||
throw new Error(name + ' command is not defined');
|
||||
}
|
|
@ -33,4 +33,8 @@ export default {
|
|||
// User input
|
||||
INPUT_KEY_PRESS: 'input.key,press',
|
||||
INPUT_CLEAR_KEYS: 'input.clear.keys',
|
||||
|
||||
COMMAND_OPEN_URL: 'command.open.url',
|
||||
COMMAND_TABOPEN_URL: 'command.tabopen.url',
|
||||
COMMAND_BUFFER: 'command.buffer',
|
||||
};
|
||||
|
|
Reference in a new issue