#自定义转换器

 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使用小记的更多相关文章

  1. 7.14 Git 工具 - 凭证存储

    凭证存储 如果你使用的是 SSH 方式连接远端,并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据. 然而,这对 HTTP 协议来说是不可能的 —— 每一个连接都是需要 ...

  2. Git 工具 - 凭证存储

    凭证存储 如果你使用的是 SSH 方式连接远端,并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据. 然而,这对 HTTP 协议来说是不可能的 —— 每一个连接都是需要 ...

  3. Ruby学习小记

    ruby安装 方法一:使用apt-get安装 可以直接使用两个命令完成Ruby的安装. # sudo apt-get update # sudo apt-get install ruby 或者 # s ...

  4. Ruby开发小记

    基础点 1.log打印 puts "Hello!" 2.拼接字符 value1 = "today" value2 = "#{value1} is Th ...

  5. ConCurrent in Practice小记 (3)

    ConCurrent in Practice小记 (3) 高级同步技巧 Semaphore Semaphore信号量,据说是Dijkstra大神发明的.内部维护一个许可集(Permits Set),用 ...

  6. ConCurrent in Practice小记 (2)

    Java-ConCurrent2.html :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0 ...

  7. 180行ruby代码搞定游戏2048

    最今在玩2048这款小游戏,游戏逻辑简单,很适合我这样的对于游戏新入行的人来实现逻辑.于是选择了最拿手的ruby语言来实现这款小游戏的主要逻辑.还是挺简单的,加起来4小时左右搞定. 上代码: requ ...

  8. logstash 学习小记

    logstash 学习小记 标签(空格分隔): 日志收集 Introduce Logstash is a tool for managing events and logs. You can use ...

  9. ruby 类库组成

    一. 核心类库: 二.标准类库: 文本 base64.rb 处理Base64编码的模块     csv.rb CSV(Comma Separated Values)库 ruby 1.8 特性     ...

随机推荐

  1. 采用libsvm进行mnist训练

    #coding:utf8 import cPickle import gzip import numpy as np from sklearn.svm import libsvm class SVM( ...

  2. 20150914 异常语句 math的方法 去空格 索引

    异常语句 int cuo = 0; Console.WriteLine("请输入:"); string s = Console.ReadLine(); try { DateTime ...

  3. 联表更新 Update Left Join

    Update a set a.Manage_FunctID=b.Manage_FunctID From Manage_PageUrl a Left join Manage_ButtonBar b on ...

  4. 从代码看 asp.net 处理过程

    从这里开始 先是一个 对Com接口的导入.   /// <internalonly/>    /// <devdoc>    /// </devdoc>    [C ...

  5. linux包之bash之内置命令ulimit

    概述 [root@localhost ~]# rpm -qa|grep bashbash-4.1.2-15.el6_4.x86_64 linux limits.conf 配置 limits.conf ...

  6. 相关性分析 -pearson spearman kendall相关系数

    先说独立与相关的关系:对于两个随机变量,独立一定不相关,不相关不一定独立.有这么一种直观的解释(不一定非常准确):独立代表两个随机变量之间没有任何关系,而相关仅仅是指二者之间没有线性关系,所以不难推出 ...

  7. Oracle获取AWR和ASH

    -- 找到指定的snap select snap_id, max(sample_time) from sys.wrh$_active_session_history group by snap_id ...

  8. Jfinal中定时器的初步探索(二)

    第一篇中增加的是程序代码的实现,本篇我们将通过配置文件进行定时器的配置,减少代码量,提高灵活性. 1.需要用到的文件:quartz.properties,据说这个文件如果没有的话,按默认的走,结果布署 ...

  9. redis 服务访问密码设定

    1. 更改redis.conf配置 # requirepass foobared 去掉注释,foobared改为 自己的password , 我测试的时候用的是 redis-password 2.启动 ...

  10. Entity Framework菜鸟初飞

    Entity Framework菜鸟初飞 http://blog.csdn.net/zezhi821/article/details/7235134