aboutsummaryrefslogtreecommitdiff
path: root/src/command/commands.js
blob: 333eb9858a78f4140bd201f39e1740a5748f3a49 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
function execute(output, command) {
	var notImplemented = function(name) {
		output.error('"' + name + '"' + ' is not implemented.');
	};
	var args = command.trim().split(' ');

	try {
		var closure = eval(args[0]);

		if ( typeof closure === 'function' ) {
			args.shift();
			closure(output, args);
		} else {
			notImplemented(args[0]);
		}
	} catch (exception) {
		if ( exception instanceof ReferenceError ) {
			notImplemented(args[0]);
		} else {
			output.error(exception);
		}
	}
}

function exec(output, args) {
	try {
		var result = eval(args.join(' '));

		switch ( typeof result ) {
			case 'string': {
				output.log(result);
				break;
			}
			case 'number': {
				output.log(result);
				break;
			}
			case 'object': {
				output.log(JSON.stringify(result));
				break;
			}
		}
	} catch (exception) {
		output.error(exception);
	}
}

function ls(output) {
	terminalList.iterate(function(item) {
		if ( item.terminal !== null ) {
			output.log(item.index + ': ' + item.terminal.program);
		}
	});
}

function set(output, args) {
	switch ( args.length ) {
		case 0: {
			Object.keys(settings).filter(
				function(element) {
					return element                  !== 'objectName'
					    && typeof settings[element] !== 'function';
				}
			).forEach(output.log);
			break;
		}
		case 1: {
			Object.keys(settings[args[0]]).filter(
				function(element) {
					return element                           !== 'objectName'
					    && element                           !== 'category'
					    && typeof settings[args[0]][element] !== 'function';
				}
			).forEach(output.log);
			break;
		}
		case 2: {
			output.log(settings.read(args[0], args[1]));
			break;
		}
		case 3: {
			settings.set(args[0], args[1], args[2]);
			break;
		}
		default: {
			output.error('Wrong count of arguments.');
			break;
		}
	}
}

function jump(output, index) {
	terminalList.selectItem(index);
}

function kill(output, index) {
	terminalList.get(index).reset();
}

function next() {
	terminalList.selectNext();
}

function prev() {
	terminalList.selectPrev();
}

function q() {
	Qt.quit();
}