mirror of
https://github.com/BorysLevytskyi/BitwiseCmd.git
synced 2026-01-15 16:32:43 +01:00
Made dependencies to be registered before composition stage
This commit is contained in:
@@ -1,9 +1,8 @@
|
||||
app.compose(function() {
|
||||
app.set('calc', function() {
|
||||
"use strict";
|
||||
|
||||
var should = app.get('should')
|
||||
|
||||
app.set('calc', {
|
||||
var should = app.get('should');
|
||||
return {
|
||||
|
||||
numberOfBits: function (num) {
|
||||
should.bePositiveInteger(num);
|
||||
@@ -24,5 +23,5 @@ app.compose(function() {
|
||||
calcExpression: function (expr) {
|
||||
return eval(expr.string);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -1,8 +1,9 @@
|
||||
app.compose(function() {
|
||||
app.set("formatter", function() {
|
||||
"use strict";
|
||||
|
||||
var should = app.get('should');
|
||||
app.set("formatter", {
|
||||
|
||||
return {
|
||||
toBinaryString: function(num, totalLength) {
|
||||
|
||||
var binaryStr = num.toString(2),
|
||||
@@ -23,5 +24,5 @@ app.compose(function() {
|
||||
|
||||
return formatted.join('');
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
});
|
||||
@@ -1,94 +1,92 @@
|
||||
app.compose(function() {
|
||||
app.set('cmd', function() {
|
||||
"use strict";
|
||||
|
||||
app.set('cmd', function() {
|
||||
var handlers = [];
|
||||
var is = app.get('is');
|
||||
var cmdController = app.controller('cmdController');
|
||||
var handlers = [];
|
||||
var is = app.get('is');
|
||||
var cmdController = app.controller('cmdController');
|
||||
|
||||
return {
|
||||
execute: function(rawInput) {
|
||||
var input = rawInput.trim().toLowerCase();
|
||||
var handler = findHandler(input);
|
||||
return {
|
||||
execute: function(rawInput) {
|
||||
var input = rawInput.trim().toLowerCase();
|
||||
var handler = findHandler(input);
|
||||
|
||||
if(handler != null) {
|
||||
if(app.debugMode) {
|
||||
if(handler != null) {
|
||||
if(app.debugMode) {
|
||||
invokeHandler(input, handler);
|
||||
} else {
|
||||
try {
|
||||
invokeHandler(input, handler);
|
||||
} else {
|
||||
try {
|
||||
invokeHandler(input, handler);
|
||||
} catch (e) {
|
||||
displayCommandError(input, "Error: " + e);
|
||||
}
|
||||
} catch (e) {
|
||||
displayCommandError(input, "Error: " + e);
|
||||
}
|
||||
}
|
||||
else {
|
||||
displayCommandError(input, "Unsupported expression: " + input.trim());
|
||||
}
|
||||
},
|
||||
commands: function(catalog) {
|
||||
for(var key in catalog) {
|
||||
if(catalog.hasOwnProperty(key)) {
|
||||
this.command(key, catalog[key]);
|
||||
}
|
||||
}
|
||||
},
|
||||
command: function(cmd, handler) {
|
||||
var h = createHandler(cmd, handler);
|
||||
if(h == null){
|
||||
console.warn('unexpected set of arguments: ', Array.prototype.splice.call(arguments));
|
||||
return;
|
||||
}
|
||||
|
||||
if(!is.aFunction(h.canHandle)) {
|
||||
console.warn('handler is missing "canHandle" function. registration denied.');
|
||||
return;
|
||||
}
|
||||
|
||||
if(!is.aFunction(h.handle)) {
|
||||
console.warn('handler is missing "handle" function. registration denied.');
|
||||
return;
|
||||
}
|
||||
|
||||
handlers.push(h);
|
||||
},
|
||||
clear: function() {
|
||||
cmdController.clear();
|
||||
}
|
||||
};
|
||||
else {
|
||||
displayCommandError(input, "Unsupported expression: " + input.trim());
|
||||
}
|
||||
},
|
||||
commands: function(catalog) {
|
||||
for(var key in catalog) {
|
||||
if(catalog.hasOwnProperty(key)) {
|
||||
this.command(key, catalog[key]);
|
||||
}
|
||||
}
|
||||
},
|
||||
command: function(cmd, handler) {
|
||||
var h = createHandler(cmd, handler);
|
||||
if(h == null){
|
||||
console.warn('unexpected set of arguments: ', Array.prototype.splice.call(arguments));
|
||||
return;
|
||||
}
|
||||
|
||||
function displayCommandError(input, message) {
|
||||
var error = new app.models.ErrorResult(message);
|
||||
cmdController.display(new app.models.DisplayResult(input, error));
|
||||
if(!is.aFunction(h.canHandle)) {
|
||||
console.warn('handler is missing "canHandle" function. registration denied.');
|
||||
return;
|
||||
}
|
||||
|
||||
if(!is.aFunction(h.handle)) {
|
||||
console.warn('handler is missing "handle" function. registration denied.');
|
||||
return;
|
||||
}
|
||||
|
||||
handlers.push(h);
|
||||
},
|
||||
clear: function() {
|
||||
cmdController.clear();
|
||||
}
|
||||
};
|
||||
|
||||
function displayCommandError(input, message) {
|
||||
var error = new app.models.ErrorResult(message);
|
||||
cmdController.display(new app.models.DisplayResult(input, error));
|
||||
}
|
||||
|
||||
function invokeHandler (input, handler) {
|
||||
var cmdResult = handler.handle(input);
|
||||
if(cmdResult != null) {
|
||||
var r = new app.models.DisplayResult(input, cmdResult);
|
||||
cmdController.display(r);
|
||||
}
|
||||
}
|
||||
|
||||
function createHandler (cmd, handler) {
|
||||
if(is.plainObject(cmd)) {
|
||||
return cmd;
|
||||
}
|
||||
|
||||
function invokeHandler (input, handler) {
|
||||
var cmdResult = handler.handle(input);
|
||||
if(cmdResult != null) {
|
||||
var r = new app.models.DisplayResult(input, cmdResult);
|
||||
cmdController.display(r);
|
||||
}
|
||||
if(is.string(cmd)) {
|
||||
return { canHandle: function (input) { return input === cmd; }, handle: handler };
|
||||
}
|
||||
|
||||
function createHandler (cmd, handler) {
|
||||
if(is.plainObject(cmd)) {
|
||||
return cmd;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
if(is.string(cmd)) {
|
||||
return { canHandle: function (input) { return input === cmd; }, handle: handler };
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function findHandler (input) {
|
||||
var i= 0;
|
||||
for(i;i<handlers.length; i++) {
|
||||
if(handlers[i].canHandle(input)) {
|
||||
return handlers[i];
|
||||
}
|
||||
function findHandler (input) {
|
||||
var i= 0;
|
||||
for(i;i<handlers.length; i++) {
|
||||
if(handlers[i].canHandle(input)) {
|
||||
return handlers[i];
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user