args 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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