function print(){
console.log.apply(console , arguments)
} var step
,_lstStp
,_onConfirmInput
,_secret var action,step_keys
,step_index = function confirmDo(input){
if (!_onConfirmInput || ! _onConfirmInput[input] ) return print(_lstStp + ' 输入未响应') _onConfirmInput[input]()
} function toConfirm(tip , onY , onN){
_lstStp = step
step = '_confirm'
print(tip , '确认 y ,取消 n')
if ('function' != typeof onY)
_onConfirmInput = onY
else
_onConfirmInput = {
'y' : onY
,'n' :onN
}
} var stdin = process.openStdin()
process.stdin.resume()
process.stdin.setEncoding('utf8')
process.stdin.setRawMode(false) var userInput = ''
process.stdin.on("data", function(input) {
///console.log('input:' ,input ,'user:' , userInput)
if (!_secret) {
userInput = input
onInput()
return
}
input = input + ""
function onInput(){
userInput = userInput.toString().trim()
if (step in action)
action[step](userInput)
else
print('enter:' ,userInput)
userInput = ''
}
switch (input) {
case "\n": case "\r": case "\u0004":
//process.stdin.setRawMode(false)
print('\n')
onInput()
break
case "\u0003":
// Ctrl C
print('Cancelled')
process.exit()
break
default:
if (_secret) {
process.stdout.write('*')
userInput += input
}
//process.stdout.write(_secret ? '*' : input)
break
}
}) exports.print = print
exports.toConfirm = toConfirm exports.next = function(secret ){
process.stdin.setRawMode(secret)
step_index++
step = step_keys[step_index]
if (step){
action[step] && action[step]()
_secret = !!secret
}else{
process.stdin.resume() }
} exports.init = function (actMap , firstStep){
action = actMap
action._confirm = confirmDo
step_keys = Object.keys(action)
step = step_keys[step_index]
}
var prom = require('./prompt.js')
var action = {
'hPath' : hPath
,'hPort': hPort
,'hDomain' : hDomain
}
prom.init(action) function hDomain(domain){
........................ }
function hPort(port){
...........
prom.next() } function hPath(to){
...........
prom.next() }
prompt.print('sth.')
hPath()

node 命令行输入控件 prompt.js的更多相关文章

  1. JS数量输入控件

    JS数量输入控件 很早看到kissy首页 有数量输入控件,就随便看了下功能 感觉也不怎么难 所以也就试着自己也做了一个, 当然基本的功能和他们的一样,只是用了自己的编码思想来解决这么一个问题.特此给大 ...

  2. node命令行工具—cf-cli

    音乐分享: 钢心 - <龙王> 初喜<冠军>后喜<龙王> (PS:听一次钢心乐队的演出后采访才知道 “龙王”隐喻的是一起喝酒的老铁....) ——————————— ...

  3. 十分钟用 Node 命令行工具打造 react-cli 脚手架

    如果你有以下想法: 每次新开项目需要copy一堆文件/文件夹,太烦!想要快速建立工程 用了vue-cli.react-app,羡慕!想要自己做一个 你只需花十分钟时间,做一个Node命令行工具,打造属 ...

  4. WebBrowser无法显示招商银行password输入控件的问题

    本文由CharlesSimonyi发表于CSDN博客:http://blog.csdn.net/charlessimonyi/article/details/30479131转载请注明出处 之前就看到 ...

  5. 深入浅出ExtJS 第四章 表单与输入控件

    4.1 制作表单 var form = new Ext.form.FormPanel({ title:'form', defaultType:'textfield', buttonAlign:'cen ...

  6. ExtJS4.2学习(17)表单基本输入控件Ext.form.Field(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-12-11/189.html --------------- ...

  7. 国籍控件(js源码)

    国籍控件(js源码) 一直苦于没有好的国籍控件可以用,于是抽空写了一个国籍控件,现分享给大家. 主要功能和界面介绍 国籍控件主要支持中文.英文过滤以及键盘上下事件. 源码介绍 国籍控件核心是两个文件, ...

  8. Kettle文本文件输出和输入控件使用中,换行符导致的问题处理

    1.如下图通过输入控件从数据库读取数据然后生成TXT文本文件,TXT文件生成原则是每一条数据生成一行数据,第二条数据换行保存 2.如下图所示,使用文本文件输入控件读入上图生成的文件,文件读入原则是按行 ...

  9. 第三部分:Android 应用程序接口指南---第二节:UI---第二章 输入控件

    第2章 输入控件 输入控件是应用程序中用户接口的一种交互式组件.Android提供了大量的可供人们在UI中使用的控件,比如按钮.文本区域.(带滑块的)进度条.复选框.缩放按钮以及切换按钮等等. 在UI ...

随机推荐

  1. TCP打洞技术

    //转http://iamgyg.blog.163.com/blog/static/3822325720118202419740/ 建立穿越NAT设备的p2p的TCP连接仅仅比UDP复杂一点点,TCP ...

  2. 这里是指推送通知跟NSNotification有区别:

    1.NSNotification是系统内部发出通知,一般用于内部事件的监听,或者状态的改变等等,是不可见的2.本地通知与远程通知是可见的,主要用于告知用户或者发送一些App的内容更新,推送一些相关的消 ...

  3. Excel—— [导入到数据库] or 将数据 [导入到Excel]

    将Excel导入到数据库实现如下: 前台代码: @model IEnumerable<Model.Student> @{ Layout = null; } <!DOCTYPE htm ...

  4. 清北集训Day3T1(转换)

    这题可能是我与正解里的最近的一次了,可以还是sb的把正解叉了. 正解其实比较显然:因为$f(x)$只有81个取值,所以我们可以枚举$f(x)$,然后计算$x$,再判断$x$是否可以转化为$f(x)$ ...

  5. 自动刷github提交记录

    前言 进入自己github主页会看到自己的提交记录,如果某天没有提交记录,那天的小方框就显示灰色.强迫症的我,每次进来看着就感觉不爽, 想着自己每天记得提交点东西,争取像阮一峰大神一样,每天都有提交记 ...

  6. asp访问数据库原理以及代码

    ActiveX Data Objects (ADO) 是一项容易使用并且可扩展的将数据库访问添加到 Web 页的技术.可以使用 ADO 去编写紧凑简明的脚本以便连接到 Open Database Co ...

  7. POJ 1328 Radar Installation 【贪心 区间选点】

    解题思路:给出n个岛屿,n个岛屿的坐标分别为(a1,b1),(a2,b2)-----(an,bn),雷达的覆盖半径为r 求所有的岛屿都被覆盖所需要的最少的雷达数目. 首先将岛屿坐标进行处理,因为雷达的 ...

  8. Unity中 Animator 与Animation 区别

    ①Animation和Animator 虽然都是控制动画的播放,但是它们的用法和相关语法都是大有不同的.Animation 控制一个动画的播放,而Animator是多个动画之间相互切换,并且Anima ...

  9. 3ds Max制作欧式风格的墙壁路灯效果

    在这篇文章中,我将解释我创建我的形象元宵节的步骤.我只是在寻找一个很好的参考图像在互联网上的东西,我觉得我想要的模型,这个形象.我发现了一个巨大的灯笼形象,但在白天的图片拍摄.我想改变我的形象和显示的 ...

  10. 使用短信猫发送短信java代码

    短信猫简单配置:https://www.cnblogs.com/Big-Boss/p/9699880.html 发送短信: package utils; import org.smslib.AGate ...