You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							68 lines
						
					
					
						
							1.7 KiB
						
					
					
				
			
		
		
	
	
							68 lines
						
					
					
						
							1.7 KiB
						
					
					
				var Chainsaw = require('chainsaw');
 | 
						|
var Lazy = require('lazy');
 | 
						|
 | 
						|
module.exports = Prompt;
 | 
						|
function Prompt (stream) {
 | 
						|
    var waiting = [];
 | 
						|
    var lines = [];
 | 
						|
    var lazy = Lazy(stream).lines.map(String)
 | 
						|
        .forEach(function (line) {
 | 
						|
            if (waiting.length) {
 | 
						|
                var w = waiting.shift();
 | 
						|
                w(line);
 | 
						|
            }
 | 
						|
            else lines.push(line);
 | 
						|
        })
 | 
						|
    ;
 | 
						|
    
 | 
						|
    var vars = {};
 | 
						|
    return Chainsaw(function (saw) {
 | 
						|
        this.getline = function (f) {
 | 
						|
            var g = function (line) {
 | 
						|
                saw.nest(f, line, vars);
 | 
						|
            };
 | 
						|
            
 | 
						|
            if (lines.length) g(lines.shift());
 | 
						|
            else waiting.push(g);
 | 
						|
        };
 | 
						|
        
 | 
						|
        this.do = function (cb) {
 | 
						|
            saw.nest(cb, vars);
 | 
						|
        };
 | 
						|
    });
 | 
						|
}
 | 
						|
 | 
						|
var util = require('util');
 | 
						|
if (__filename === process.argv[1]) {
 | 
						|
    var stdin = process.openStdin();
 | 
						|
    Prompt(stdin)
 | 
						|
        .do(function () {
 | 
						|
            util.print('x = ');
 | 
						|
        })
 | 
						|
        .getline(function (line, vars) {
 | 
						|
            vars.x = parseInt(line, 10);
 | 
						|
        })
 | 
						|
        .do(function () {
 | 
						|
            util.print('y = ');
 | 
						|
        })
 | 
						|
        .getline(function (line, vars) {
 | 
						|
            vars.y = parseInt(line, 10);
 | 
						|
        })
 | 
						|
        .do(function (vars) {
 | 
						|
            if (vars.x + vars.y < 10) {
 | 
						|
                util.print('z = ');
 | 
						|
                this.getline(function (line) {
 | 
						|
                    vars.z = parseInt(line, 10);
 | 
						|
                })
 | 
						|
            }
 | 
						|
            else {
 | 
						|
                vars.z = 0;
 | 
						|
            }
 | 
						|
        })
 | 
						|
        .do(function (vars) {
 | 
						|
            console.log('x + y + z = ' + (vars.x + vars.y + vars.z));
 | 
						|
            process.exit();
 | 
						|
        })
 | 
						|
    ;
 | 
						|
}
 |