node 命令行输入控件 prompt.js
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的更多相关文章
- JS数量输入控件
JS数量输入控件 很早看到kissy首页 有数量输入控件,就随便看了下功能 感觉也不怎么难 所以也就试着自己也做了一个, 当然基本的功能和他们的一样,只是用了自己的编码思想来解决这么一个问题.特此给大 ...
- node命令行工具—cf-cli
音乐分享: 钢心 - <龙王> 初喜<冠军>后喜<龙王> (PS:听一次钢心乐队的演出后采访才知道 “龙王”隐喻的是一起喝酒的老铁....) ——————————— ...
- 十分钟用 Node 命令行工具打造 react-cli 脚手架
如果你有以下想法: 每次新开项目需要copy一堆文件/文件夹,太烦!想要快速建立工程 用了vue-cli.react-app,羡慕!想要自己做一个 你只需花十分钟时间,做一个Node命令行工具,打造属 ...
- WebBrowser无法显示招商银行password输入控件的问题
本文由CharlesSimonyi发表于CSDN博客:http://blog.csdn.net/charlessimonyi/article/details/30479131转载请注明出处 之前就看到 ...
- 深入浅出ExtJS 第四章 表单与输入控件
4.1 制作表单 var form = new Ext.form.FormPanel({ title:'form', defaultType:'textfield', buttonAlign:'cen ...
- ExtJS4.2学习(17)表单基本输入控件Ext.form.Field(转)
鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-12-11/189.html --------------- ...
- 国籍控件(js源码)
国籍控件(js源码) 一直苦于没有好的国籍控件可以用,于是抽空写了一个国籍控件,现分享给大家. 主要功能和界面介绍 国籍控件主要支持中文.英文过滤以及键盘上下事件. 源码介绍 国籍控件核心是两个文件, ...
- Kettle文本文件输出和输入控件使用中,换行符导致的问题处理
1.如下图通过输入控件从数据库读取数据然后生成TXT文本文件,TXT文件生成原则是每一条数据生成一行数据,第二条数据换行保存 2.如下图所示,使用文本文件输入控件读入上图生成的文件,文件读入原则是按行 ...
- 第三部分:Android 应用程序接口指南---第二节:UI---第二章 输入控件
第2章 输入控件 输入控件是应用程序中用户接口的一种交互式组件.Android提供了大量的可供人们在UI中使用的控件,比如按钮.文本区域.(带滑块的)进度条.复选框.缩放按钮以及切换按钮等等. 在UI ...
随机推荐
- 機器學習基石 机器学习基石 (Machine Learining Foundations) 作业2 Q16-18 C++实现
大家好,我是Mac Jiang,今天和大家分享Coursera-NTU-機器學習基石(Machine Learning Foundations)-作业2 Q16-18的C++实现.尽管有非常多大神已经 ...
- css sprite的实现
css sprite 为什么使用css sprite? 网页上的非常多静态小图片在载入时须要大量http请求,添加了响应时间.(哈哈.雅虎34条优化法则的第一条啊) css的background-po ...
- Java 后台性能优化简要
业务系统性能优化的前提时观察和诊断.观察工具例如以下:前端优化工具:YSlow页面响应时间:Firebug方法对应时间:btraceGC日志分析:JVM 启动參数数据库优化:慢查询系统资源调用:监控 ...
- js 转化为几天前,几小时前,几分钟前...
转换标准时间为时间戳: function getDateTimeStamp(dateStr){ return Date.parse(dateStr.replace(/-/gi,"/" ...
- Flask上下文管理机制
前引 在了解flask上下文管理机制之前,先来一波必知必会的知识点. 面向对象双下方法 首先,先来聊一聊面向对象中的一些特殊的双下划线方法,比如__call__.__getattr__系列.__get ...
- Tomcat 初探(二) server.xml 配置
前言 在上一篇文章中,我们在示例中演示了网站的发布,其中涉及到了 server.xml 的修改,本文中我会给大家详细解释一下 server.xml 文件中的节点及其属性的作用,本片文章参考并摘抄了他人 ...
- WPF动态控件生成查找不到问题
2012 08 10 遇到此类问题,已经找到解决方案 记录以备后用 动态往界面添加控件 在页面未显示的情况时,虽然对控件增加了id name等属性但是使用 TextBox txtOtherNati ...
- [转]java多线程并发去调用一个类的静态方法安全性探讨
文章转自:https://blog.csdn.net/weibin_6388/article/details/50750035 这篇文章主要讲多线程对静态方法访问的数据安全性 总结如下: 1,java ...
- 高并发之后端优化(PHP)
页面静态化 使用模板引擎 可以使用Smarty的缓存机制生成静态HTML缓存文件 $smarty->cachedir=$ROOT·"/cache"://缓存目录 $smart ...
- Edge浏览器+微软小娜