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
			| 
											2 years ago
										 | 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(); | ||
|  |         }) | ||
|  |     ; | ||
|  | } |