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. Methods Collection of Enumerating Com Port in Windows, by C

    According to this stack overflow thread, PJ Naughter has implemented 9 methods to emunerate com port ...

  2. 第6章7节《MonkeyRunner源代码剖析》Monkey原理分析-事件源-事件源概览-注入按键事件实例

    在事件生成并放入到命令队列后,Monkey类的runMonkeyCycles就会去调用相应事件源的getNextEvent来获的事件来运行事件注入,那么这一小节我们通过MonkeyKeyEvent这个 ...

  3. 9.9递归和动态规划(八)——给定数量不限的硬币,币值为25分,10分,5分,1分,计算n分有几种表示法

    /**  * 功能:给定数量不限的硬币.币值为25分,10分.5分.1分,计算n分有几种表示法. */ public static int makeChange(int n){ return make ...

  4. listView 多个item布局

    package kds.szkingdom.wo.android.adapter; import java.util.List; import android.content.Context; imp ...

  5. web前端简单布局

    jquery实现的计算器

  6. 常用相关linux命令

    查看进程netstat -tnlp | egrep "(9097)" lsof -i:9097 ps -ef | grep kafka 观察句柄变化lsof -p $pid | w ...

  7. SpringBoot(七) SpringBoot中的缓存机制

    随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决这一问题非常好的手段之一.Spring 3开始提供了强大的基于注解的缓 ...

  8. CorelDRAW升级计划--如何购买

    了解通过全新 CorelDRAW 2017升级计划更新此图形设计软件所有最新功能的实惠方案.助升级计划,您可以在下一主要产品版本推出时便收到该版本,从而始终使您的产品保持最新.升级计划取代为 X6 和 ...

  9. js浏览器问题

    前段时间做了个项目,里面关于手机移动端下载的问题 开始是判断微信.ios和android系统的下载 因为微信屏蔽点击事件和链接的缘故,需要通过打开新页面来进行下载 ios和android的下载分别为不 ...

  10. 一些特殊ACII码的用法 在控制台中覆盖显示、刷新显示和删除字符

    很好奇怎么实现在控制台中不换行直接显示新的信息把旧的替换掉,于是找到了两个ACII码字符,他们可以帮助实现. 一个是‘\b’字符,这个字符是backspace,即删除上一个字符,于是可以清除以显示的旧 ...