-
Notifications
You must be signed in to change notification settings - Fork 0
/
console.js
113 lines (91 loc) · 2.96 KB
/
console.js
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
111
112
113
angular.module('conApp', [])
.controller('conCtrl', function($scope) {
$scope.currentLine = "";
var lineCounter = 0;
$scope.lines = [
{ id: 0, txt: "Welcome to Console version 0.0.1" }
];
setLines = function(newLines) {
$scope.lines = newLines;
};
writeLine = function(text) {
$scope.lines.push({ id: lineCounter++, txt: text });
};
update = function() {
$scope.$apply();
}
loadNewCommand = function(source) {
var file = source.target.files[0];
if (!file) {
return -1;
}
var reader = new FileReader();
reader.onLoad = function(source) {
var contents = source.target.result;
return addNewCommand(contents);
}
reader.readAsText(file);
};
addNewCommand = function(comObj) {
if (comObj.command != null && comObj.func != null && comObj.help != null) {
commands.push(comObj);
return 1;
}
return 0;
}
previousLine = function() {
return $scope.lines[$scope.lines.length - 1];
}
$scope.currentUser = {
name: '',
password: '--',
access: [
'none'
]
};
setCurrentUser = function(user) {
$scope.currentUser = user;
}
getCurrentUser = function() {
return $scope.currentUser;
}
$scope.enter = function() {
writeLine($scope.currentUser.name + "> " + $scope.currentLine);
var list = $scope.currentLine.split(' ');
var flags = [];
var flagsToRemove = [];
var start, end;
for (var arg of list) {
if (arg.charAt(0) == '"') {
start = list.indexOf(arg);
} else if (arg.charAt(0) == '-') {
flags.push(arg.replace('-', ''));
flagsToRemove.push(list.indexOf(arg));
} else if (arg.charAt(arg.length - 1) == '"') {
end = list.indexOf(arg);
var quoted = list.slice(start, end + 1);
var quote = quoted.join(' ');
quote = quote.replace(new RegExp('"', 'g'), '');
list.splice(start, end - start + 1, quote);
}
}
for (var i = flagsToRemove.length - 1; i >= 0; i--) {
list.splice(flagsToRemove[i], 1);
}
var validCom = false
for (var com of commands) {
if (com.command == list[0]) {
var args = list.slice(1, list.length + 1);
com.func(args, flags);
validCom = true;
}
}
if (!validCom) {
writeLine('Unrecognised command. Use "help -e" for a full list of commands');
}
$scope.currentLine = "";
};
});
$('bod').click( function () {
$('inputLine').focus();
});