[wip] implement command usecases
This commit is contained in:
parent
0846587baf
commit
c4afd7237b
10 changed files with 291 additions and 49 deletions
89
src/background/controllers/command.js
Normal file
89
src/background/controllers/command.js
Normal file
|
@ -0,0 +1,89 @@
|
|||
import CompletionsInteractor from '../usecases/completions';
|
||||
import CommandInteractor from '../usecases/command';
|
||||
import Completions from '../domains/completions';
|
||||
|
||||
export default class CommandController {
|
||||
constructor() {
|
||||
this.completionsInteractor = new CompletionsInteractor();
|
||||
this.commandIndicator = new CommandInteractor();
|
||||
}
|
||||
|
||||
getCompletions(line) {
|
||||
let trimmed = line.trimStart();
|
||||
let words = trimmed.split(/ +/);
|
||||
let name = words[0];
|
||||
if (words.length === 1) {
|
||||
return this.completionsInteractor.queryConsoleCommand(name);
|
||||
}
|
||||
let keywords = trimmed.slice(name.length).trimStart();
|
||||
switch (words[0]) {
|
||||
case 'o':
|
||||
case 'open':
|
||||
case 't':
|
||||
case 'tabopen':
|
||||
case 'w':
|
||||
case 'winopen':
|
||||
return this.completionsInteractor.queryOpen(name, keywords);
|
||||
case 'b':
|
||||
case 'buffer':
|
||||
return this.completionsInteractor.queryBuffer(name, keywords);
|
||||
case 'bd':
|
||||
case 'bdel':
|
||||
case 'bdelete':
|
||||
case 'bdeletes':
|
||||
return this.completionsInteractor.queryBdelete(name, keywords);
|
||||
case 'bd!':
|
||||
case 'bdel!':
|
||||
case 'bdelete!':
|
||||
case 'bdeletes!':
|
||||
return this.completionsInteractor.queryBdeleteForce(name, keywords);
|
||||
case 'set':
|
||||
return this.completionsInteractor.querySet(name, keywords);
|
||||
}
|
||||
return Promise.resolve(Completions.empty());
|
||||
}
|
||||
|
||||
// eslint-disable-next-line complexity
|
||||
exec(line) {
|
||||
let trimmed = line.trimStart();
|
||||
let words = trimmed.split(/ +/);
|
||||
let name = words[0];
|
||||
let keywords = trimmed.slice(name.length).trimStart();
|
||||
switch (words[0]) {
|
||||
case 'o':
|
||||
case 'open':
|
||||
return this.commandIndicator.open(keywords);
|
||||
case 't':
|
||||
case 'tabopen':
|
||||
return this.commandIndicator.tabopen(keywords);
|
||||
case 'w':
|
||||
case 'winopen':
|
||||
return this.commandIndicator.winopen(keywords);
|
||||
case 'b':
|
||||
case 'buffer':
|
||||
return this.commandIndicator.buffer(keywords);
|
||||
case 'bd':
|
||||
case 'bdel':
|
||||
case 'bdelete':
|
||||
return this.commandIndicator.bdelete(false, keywords);
|
||||
case 'bd!':
|
||||
case 'bdel!':
|
||||
case 'bdelete!':
|
||||
return this.commandIndicator.bdelete(true, keywords);
|
||||
case 'bdeletes':
|
||||
return this.commandIndicator.bdeletes(false, keywords);
|
||||
case 'bdeletes!':
|
||||
return this.commandIndicator.bdeletes(true, keywords);
|
||||
case 'addbookmark':
|
||||
return this.commandIndicator.addbookmark(keywords);
|
||||
case 'q':
|
||||
case 'quit':
|
||||
return this.commandIndicator.quit();
|
||||
case 'qa':
|
||||
case 'quitall':
|
||||
return this.commandIndicator.quitAll();
|
||||
case 'set':
|
||||
return this.commandIndicator.set(keywords);
|
||||
}
|
||||
}
|
||||
}
|
Reference in a new issue