#自定义转换器

 1 opts.accept(Hash) do |string|
 2 hash = {}
 3 string.split(',').each do |pair|
 4 key,value = pair.split(/:/)
 5 hash[key] = value
 6 end
 7 hash
 8 end
 9 opts.on('--custom ATTRS',Hash) do |hash|
10 custom_attributes = hash
11 end
12 A command like foo --custom foo:bar,baz:quux will result in custom_attributes getting the value
13 { 'foo' => 'bar', 'baz' => 'quux' } .

使用小记

 1 #!/usr/bin/env ruby
 2 require 'optparse'
 3 options = {}
 4 option_parser = OptionParser.new do |opts|
 5 # 创建option -switch
 6 #Option 作为switch,不带argument,用于将 switch 设置成 true 或 false
 7   opts.on("-i", "--iteration") { options[:iteration] = true }
 8
 9
10 # 创建optin -flag
11   opts.on("-u USER", /^(.+)\.(.+)$/) do |user|
12     options[:user] = user
13   end
14   opts.on("-p PASSWORD", "--uname ppp") do |password, ppp|
15
16     options[:uname] = ppp
17     options[:password] = password
18   end
19
20 #hash
21   servers = {dev: '127.0.0.1',
22              qa: 'qa001.example.com',
23              prod: 'www.example.com'}
24   opts.on('--server SERVER', servers) do |address|
25     options[:address]=address
26   end
27
28 #default true or false
29   opts.on('--[no-]verbose') do |flg|
30     options[:flg]=flg
31   end
32 # Option 作为 flag,带一组用逗号分割的arguments,用于将arguments作为数组解析
33   opts.on('-a A,B', '--array A,B', Array, 'List of arguments') do |value|
34     options[:array] = value
35   end
36 end
37
38 option_parser.parse!
39 puts options.inspect

转载于:https://www.cnblogs.com/or2-/p/5291809.html

ruby的optparse使用小记相关推荐

  1. Ruby 学习笔记(和 Python3 语法进行对比)

    我是先接触 Python3 的,如果我自己主动来选择,可能不会再去学 Ruby(可能先入为主的思想太根深蒂固了,不过最主要的还是太懒了),然鹅由于种种原因,我还是要来看一下Ruby(真是天理难容,/大 ...

  2. thrift使用小记_CUDev-ChinaUnix博客

    thrift使用小记_CUDev-ChinaUnix博客 thrift使用小记 (2011-09-19 21:28) 标签:  客户端  接口  Facebook  transport  protoc ...

  3. 【笔记】golang开发android app小记

    golang开发android app小记 Google和Oracle打过Java的官司以后就开始慢慢转kotlin了.从JVM虚拟机打官司,改成android用JVM从堆栈平衡转寄存器模式,再到语言 ...

  4. Ruby: Ruby脚本在测试中的使用

    如果存在以下的场景: 1. 放置在公司的读报机服务器,每天都是开启的: 2. 读报机每天下载报纸,一旦成功/失败,就会有相应的记录生成在某个xml文件中: 3. 现在有过去一年的读报机下载xml,大约 ...

  5. Ruby 之 Block, Proc, Lambda 联系--区别,转载

    Ruby 之 Block, Proc, Lambda Block Block 不是对象,是Ruby的语言特性,近似于闭包(Closure). 范例: def meth    res=  yield   ...

  6. Ubuntu14.04 LTS中安装Ruby 2.4源码操作步骤

    (1).查看是否已安装ruby,执行命令,如下图,可见机子上还没有安装ruby,即使通过apt-get install命令安装也只能安装1.8版本: (2).从  http://www.ruby-la ...

  7. Windows Ruby使用Mysql环境配置

    windows下Ruby使用mysql时候报错: Incorrect MySQL client library version! This gem was compile d for 6.0.0 bu ...

  8. [翻译] Ruby Golf

    原文地址:http://rubysource.com/ruby-golf/ Ruby golf is the art of writing code that uses as few characte ...

  9. Ruby DSL介绍及其在测试数据构造中的使用(2)

    在(1)中介绍了DSL和普通的函数定义之间的区别.在(1)的最后提到,DSL分为内部DSL和外部DSL,我们再看一遍他们的定义:1. External DSLs 用不同于host语言的语言来编写,通过 ...

最新文章

  1. infer的用法_typescript高级用法之infer的理解与使用
  2. 获取eclipse 运行时,bundle的相对路径
  3. log4j配置_是时候了解一下log4j2各种配置的含义了!
  4. BZOJ3570 : DZY Loves Physics I
  5. DI是实现面向切面和面向抽象的前提
  6. listview添加item动画
  7. github上预览Demo网页最简单的方法
  8. 制图综合:河流水系提取简化
  9. SQL Server 2005“错误1706。安装程序找不到需要的文件。请检查……”的处理办法
  10. 51单片机间接寻址C语言,51单片机的寻址方式
  11. 算法训练 4-2找公倍数
  12. 从战略到执行:业务领先模型 BLM 战略篇「战略意图」
  13. 计算机考试怎么调整字号,WPS文字如何调节字体大小突破字号72的限制实现大小随意调...
  14. [保研直硕直博经验分享-2019] (上海交大计算机系夏令营+九推)
  15. SurroundDepth:自监督多摄像头环视深度估计
  16. 数据分析 | 岭回归与LASSO回归
  17. 计算机学硕调剂分数,计算机考研调剂的一些经验
  18. Android拍照扫描识别身份证信息SDK
  19. CodeForces - 3A Shortest path of the king【水题】
  20. CSS奇思妙想—这里是CSS创造的世界!

热门文章

  1. Pro Silverlight 5 in C# 分享
  2. python的requests库
  3. PHP反射原理的实现
  4. 【设计模式】2.工厂设计模式(生产者消费者问题)
  5. iphone怎么检测屏幕是否被点亮 (用UIApplication的Delegate)
  6. Xcode 4 with External Static Library for iPhone Development
  7. 一对多的两个表,查询主表的信息和主表在子表中的记录条数
  8. [jQuery基础] jQuery案例 -- 狂拍灰太狼
  9. 现在比较流行的一种新的清除浮动的方法
  10. 基于meanshift的手势跟踪与电脑鼠标控制(手势交互系统)