args 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5095311d388c493bda7dc5c389cf4aa526b27ef2
4
+ data.tar.gz: 28a6d6517c9657241b80c6a61239bdacea9c11bb
5
+ SHA512:
6
+ metadata.gz: a7d0ecca045328d7e2af836a09d373028d4cb831c1510beb1a4529ee07ce673b12fa073ece247459e63b9afcbab8058a3f15dcaa19609b567f78d27ee984018d
7
+ data.tar.gz: b8b38f592be9afe629302289b361bc7163fca1739827cec216fe8d401f13a17ed0a7542d6ab13bc22b83efbda6a27c6a23f838025027bc9b0be202a2d15fc4cb
Binary file
Binary file
@@ -0,0 +1,13 @@
1
+ args
2
+ ====
3
+
4
+ Argument parsing in ruby.
5
+
6
+ ```ruby
7
+ a = Args.new
8
+ a.add_arg("b", 0)
9
+ a.add_arg("c", 1)
10
+ a.add_arg("d", 1)
11
+
12
+ a.parse(["-b", "-d" "butts"]) # {"b"=>true, "d"=>"butts"}
13
+ ```
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env ruby
2
+ class Args
3
+ def initialize
4
+ @args = {}
5
+ end
6
+
7
+ def add_arg(k, arity)
8
+ @args[k] = arity == 1 ? ":" : ""
9
+ end
10
+
11
+ def parse(args)
12
+ cmd = %<set -- #{args.map {|a| "\"#{a}\""}.join(" ")}; while getopts :#{to_getopts} arg; do\n>
13
+ cmd << "case \"$arg\" in\n"
14
+ @args.each do |k, v|
15
+ cmd << "#{k}) echo #{k}"
16
+ cmd << "==$OPTARG" if v == ":"
17
+ cmd << ";;\n"
18
+ end
19
+ cmd << "esac; done"
20
+ output = `#{cmd}`
21
+ return handle(output)
22
+ end
23
+
24
+ def handle(output)
25
+ Hash.new.tap do |v|
26
+ output.lines.each do |l|
27
+ if l =~ /^(.)$/
28
+ v[$1] = true
29
+ elsif l =~ /^(.)==(.*)$/
30
+ v[$1] = $2
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ def to_getopts
37
+ @args.map do |k, v|
38
+ "#{k}#{v}"
39
+ end.join("")
40
+ end
41
+ end
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: args
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Richo Healey
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDNDCCAhygAwIBAgIBADANBgkqhkiG9w0BAQUFADBAMQ4wDAYDVQQDDAVyaWNo
14
+ bzEZMBcGCgmSJomT8ixkARkWCXBzeWNoMHRpazETMBEGCgmSJomT8ixkARkWA25l
15
+ dDAeFw0xMjEwMjYxMzM1MTZaFw0xMzEwMjYxMzM1MTZaMEAxDjAMBgNVBAMMBXJp
16
+ Y2hvMRkwFwYKCZImiZPyLGQBGRYJcHN5Y2gwdGlrMRMwEQYKCZImiZPyLGQBGRYD
17
+ bmV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxBycVXaMP1jfXtFO
18
+ j/q8HD5Xe5/9u+od+IRaBC5GCftOVR7XmwON/M8hVk9fdmHnSc8HDcArSsTNyDyI
19
+ +grMXT0TSzd6zruG8xnHZSjGCo6gxpvhbpLg6mFOVjWBMt0/dV+tzfSNdCI+sXiH
20
+ amYzmxibEQPM1xgZPphUuEDdrWs1COVlAZO4zA2U6XaFGVXKB4COUdxeHlchWH7t
21
+ OGRv8QAq6YDm0RDJayrM092bvQFWHQ4jrz1LikBusiIbUL8agbcLUPKaw7UQCYa/
22
+ aY1FDCJFLFuJhThgRufFH0t7OWrTUaBsCKj+NdJvp2Y7zcP91ZWQafYtY4vzt4G4
23
+ d57TwQIDAQABozkwNzAJBgNVHRMEAjAAMB0GA1UdDgQWBBQ/F+jjOeqPoy3rZK9A
24
+ eipjGWiAZTALBgNVHQ8EBAMCBLAwDQYJKoZIhvcNAQEFBQADggEBABhkwk15TSxt
25
+ QNk69HWzrANn4croLV3yUPWc7TL6ISngG51G+piAuq/zkd5QXira1fpgko87M7oy
26
+ 0IHDalsJFGvPAAa6rYI4PpmceHoP9uo8iFKi4HQd2HjqjGwJ3fsrzS6Gsahbh1Qs
27
+ MwRLVBy7TV2Cb08QUlB8o9N4VGgShgl7tgFVWCU+XVUBc8XffqTlhObSCzSKZ5tZ
28
+ nu8ubBEvFw0uzGJGQsDhj1bxyi5DubK2XOxU7Gr/fyBVxys9E0WMUPEet6lz+6la
29
+ EZooDFA4YmMIfW8Fvj2/T3V/sL1vJSDCdTv7ECdoX5snQmTxD9pFsUmxLfiJ/MFM
30
+ iiw+OPtvlsI=
31
+ -----END CERTIFICATE-----
32
+ date: 2013-06-24 00:00:00.000000000 Z
33
+ dependencies: []
34
+ description: Argument parsing for ruby
35
+ email:
36
+ - richo@psych0tik.net
37
+ executables: []
38
+ extensions: []
39
+ extra_rdoc_files: []
40
+ files:
41
+ - README.md
42
+ - lib/args.rb
43
+ homepage: http://github.com/richo/args
44
+ licenses: []
45
+ metadata: {}
46
+ post_install_message:
47
+ rdoc_options: []
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ requirements: []
61
+ rubyforge_project:
62
+ rubygems_version: 2.0.2
63
+ signing_key:
64
+ specification_version: 4
65
+ summary: Argument parsing for ruby
66
+ test_files: []
Binary file