fix hints, now all cli tests pass

This commit is contained in:
Joe Walker 2010-12-02 12:43:11 +00:00
commit f8af72dd07
2 changed files with 25 additions and 13 deletions

View file

@ -44,9 +44,10 @@ var oop = require('pilot/oop').oop;
var EventEmitter = require('pilot/event_emitter').EventEmitter; var EventEmitter = require('pilot/event_emitter').EventEmitter;
//var keyboard = require('keyboard/keyboard'); //var keyboard = require('keyboard/keyboard');
var Status = require('pilot/types').Status;
var canon = require('pilot/canon');
var types = require('pilot/types'); var types = require('pilot/types');
var Status = require('pilot/types').Status;
var Conversion = require('pilot/types').Conversion;
var canon = require('pilot/canon');
/** /**
@ -662,7 +663,14 @@ Requisition.prototype = {
* Collect the statuses from the Assignments * Collect the statuses from the Assignments
*/ */
getHints: function() { getHints: function() {
var hints = [];
Object.keys(this._assignments).map(function(name) {
var hint = this._assignments[name].getHint();
if (hint) {
hints.push(hint);
}
}, this);
return hints;
}, },
/** /**
@ -736,8 +744,7 @@ Assignment.prototype = {
this.arg.setText(text); this.arg.setText(text);
} }
this.value = value; this.value = value;
this.status = Status.VALID; this.conversion = new Conversion(value, Status.VALID, '', []);
this.message = '';
//this._dispatchEvent('change', { assignment: this }); //this._dispatchEvent('change', { assignment: this });
}, },
@ -750,20 +757,26 @@ Assignment.prototype = {
if (this.arg === arg) { if (this.arg === arg) {
return; return;
} }
var conversion = this.param.type.parse(arg.text);
this.arg = arg; this.arg = arg;
this.value = conversion.value; this.conversion = this.param.type.parse(arg.text);
this.status = conversion.status; this.value = this.conversion.value;
this.message = conversion.message;
//this._dispatchEvent('change', { assignment: this }); //this._dispatchEvent('change', { assignment: this });
}, },
getHint: function() {
if (this.conversion.status === Status.VALID &&
this.conversion.message === '') {
return undefined;
}
return new ConversionHint(this.conversion, this.arg);
},
/** /**
* Report on the status of the last parse() conversion. * Report on the status of the last parse() conversion.
* @see types.Conversion * @see types.Conversion
*/ */
status: undefined, conversion: undefined
message: undefined
}; };
oop.implement(Assignment, EventEmitter); oop.implement(Assignment, EventEmitter);
exports.Assignment = Assignment; exports.Assignment = Assignment;

View file

@ -169,11 +169,10 @@ exports.testInput = function() {
test.verifyEqual('set', input.requisition.command.name); test.verifyEqual('set', input.requisition.command.name);
input.parse('set h'); input.parse('set h');
console.log(input);
test.verifyEqual(1, input.hints.length); test.verifyEqual(1, input.hints.length);
test.verifyEqual(Status.INCOMPLETE, input.hints[0].status); test.verifyEqual(Status.INCOMPLETE, input.hints[0].status);
test.verifyEqual('set', input.requisition.command.name); test.verifyEqual('set', input.requisition.command.name);
test.verifyEqual('h', input.requisition.getAssignment('setting').text); test.verifyEqual('h', input.requisition.getAssignment('setting').arg.text);
test.verifyEqual(undefined, input.requisition.getAssignment('setting').value); test.verifyEqual(undefined, input.requisition.getAssignment('setting').value);
return "testInput Completed"; return "testInput Completed";