mirror of
				https://hub.gitmirror.com/https://github.com/gradle/actions.git
				synced 2025-10-31 10:00:01 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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();
 | |
|         })
 | |
|     ;
 | |
| }
 | 
