ruby的optparse使用小记
#自定义转换器 1 opts.accept(Hash) do |string|
hash = {}
string.split(',').each do |pair|
key,value = pair.split(/:/)
hash[key] = value
end
hash
end
opts.on('--custom ATTRS',Hash) do |hash|
custom_attributes = hash
end
A command like foo --custom foo:bar,baz:quux will result in custom_attributes getting the value
{ 'foo' => 'bar', 'baz' => 'quux' } .
使用小记
#!/usr/bin/env ruby
require 'optparse'
options = {}
option_parser = OptionParser.new do |opts|
# 创建option -switch
#Option 作为switch,不带argument,用于将 switch 设置成 true 或 false
opts.on("-i", "--iteration") { options[:iteration] = true } # 创建optin -flag
opts.on("-u USER", /^(.+)\.(.+)$/) do |user|
options[:user] = user
end
opts.on("-p PASSWORD", "--uname ppp") do |password, ppp| options[:uname] = ppp
options[:password] = password
end #hash
servers = {dev: '127.0.0.1',
qa: 'qa001.example.com',
prod: 'www.example.com'}
opts.on('--server SERVER', servers) do |address|
options[:address]=address
end #default true or false
opts.on('--[no-]verbose') do |flg|
options[:flg]=flg
end
# Option 作为 flag,带一组用逗号分割的arguments,用于将arguments作为数组解析
opts.on('-a A,B', '--array A,B', Array, 'List of arguments') do |value|
options[:array] = value
end
end option_parser.parse!
puts options.inspect
ruby的optparse使用小记的更多相关文章
- 7.14 Git 工具 - 凭证存储
凭证存储 如果你使用的是 SSH 方式连接远端,并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据. 然而,这对 HTTP 协议来说是不可能的 —— 每一个连接都是需要 ...
- Git 工具 - 凭证存储
凭证存储 如果你使用的是 SSH 方式连接远端,并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据. 然而,这对 HTTP 协议来说是不可能的 —— 每一个连接都是需要 ...
- Ruby学习小记
ruby安装 方法一:使用apt-get安装 可以直接使用两个命令完成Ruby的安装. # sudo apt-get update # sudo apt-get install ruby 或者 # s ...
- Ruby开发小记
基础点 1.log打印 puts "Hello!" 2.拼接字符 value1 = "today" value2 = "#{value1} is Th ...
- ConCurrent in Practice小记 (3)
ConCurrent in Practice小记 (3) 高级同步技巧 Semaphore Semaphore信号量,据说是Dijkstra大神发明的.内部维护一个许可集(Permits Set),用 ...
- ConCurrent in Practice小记 (2)
Java-ConCurrent2.html :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0 ...
- 180行ruby代码搞定游戏2048
最今在玩2048这款小游戏,游戏逻辑简单,很适合我这样的对于游戏新入行的人来实现逻辑.于是选择了最拿手的ruby语言来实现这款小游戏的主要逻辑.还是挺简单的,加起来4小时左右搞定. 上代码: requ ...
- logstash 学习小记
logstash 学习小记 标签(空格分隔): 日志收集 Introduce Logstash is a tool for managing events and logs. You can use ...
- ruby 类库组成
一. 核心类库: 二.标准类库: 文本 base64.rb 处理Base64编码的模块 csv.rb CSV(Comma Separated Values)库 ruby 1.8 特性 ...
随机推荐
- 04-Java 异常
1.认识异常:异常是导致程序中断运行的一种指令流,如果不对异常进行正确处理,则可能导致程序的中断执行,造成不必要的损失. int a=10; int b=0; int temp=a/b; System ...
- unity, 读写xls
可以用npoi: http://npoi.codeplex.com/ 把npoi.dll放在unity里即可. 读取代码: using System.IO;using NPOI.SS.UserMode ...
- unity, particleSystem的batch优化
一,单个光效的batch优化 理想状态下一个由若干粒子堆出来的光效只需要一至两个draw call: (1)至多使用alpha blend(垫底色)和additive(曝光)两个材质球,两shader ...
- 记一次系统稳定性问题的分析处理过程(因CallContext使用不当而造成bug)
问题描述: 一个项目现场反馈,“差旅费类型的单据审批,在出现业务规则没满足的情况时(即业务报错,需要人机交互),审批仍然通过了”.从技术的角度上说,就是业务构件中的业务规则报错后,事务没有回滚.但是, ...
- js 日期时间比较
js时间日期比较 <script type="text/javascript"> //begin > end 返回True function comptime(b ...
- 【linux】ps 命令详解
[root@andon lib]# ps aux ###常用格式 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0 ...
- <<编写可维护的JavaScript>>之避免使用全局变量
一.避免全局变量的理由 js中避免创建全局变量一是避免命名冲突,二是避免因为创建全局变量让代码变得脆弱,三是创建全局变量会让代码难以测试. 二.避免创建全局变量的几种方法 //避免全局变量 避免命名冲 ...
- NOIP第7场模拟赛题解
NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...
- ultraedit15.00.0.1046注册码
ultraedit注册码,版本:15.00.0.1043·········· 用户名 MAYBELOVE 注册码 LFKKM-KIMMX-OSFEB-PMISO-ELILS-IIIHO-KKHLR ...
- 109. Convert Sorted List to Binary Search Tree
Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...