torch 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/torch.rb +3 -0
  2. data/lib/torch/argv.rb +74 -0
  3. metadata +68 -0
data/lib/torch.rb ADDED
@@ -0,0 +1,3 @@
1
+ module Torch
2
+ end
3
+ require 'torch/argv'
data/lib/torch/argv.rb ADDED
@@ -0,0 +1,74 @@
1
+ require 'delegate'
2
+
3
+ module Torch::Argv
4
+ def flags
5
+ @flags ||= Flags.new(self)
6
+ return @flags
7
+ end
8
+
9
+ def args
10
+ return @args ||= reject{|arg| arg[0,1] == '-'}
11
+ end
12
+
13
+ def [](flag, *rest)
14
+ if rest.empty? and (flag.is_a? String or flag.is_a? Symbol)
15
+ i = flag_index flag.to_s
16
+ return nil unless i
17
+ return nil if self[i+1][0,1] == '-'
18
+ return self[i+1]
19
+ else
20
+ super
21
+ end
22
+ end
23
+
24
+ private
25
+ def flag_index(flag)
26
+ if flag.size > 1
27
+ return index "--#{flag}"
28
+ elsif flag.size == 1
29
+ return index{|arg| arg =~ /^-[^-]*#{flag}[^-]*$/}
30
+ end
31
+ end
32
+ end
33
+
34
+ class Torch::Argv::Flags < Delegator
35
+ def initialize(argv)
36
+ @argv = argv
37
+ super
38
+ end
39
+
40
+ def include?(flag)
41
+ return super(flag.to_s)
42
+ end
43
+
44
+ def __setobj__(obj) # We don't allow this
45
+ end
46
+
47
+ def __getobj__
48
+ @flags ||= @argv.select{|arg| arg[0,1] == '-'}.map do |arg|
49
+ if arg[0..1] == '--'
50
+ arg[2..-1]
51
+ else
52
+ arg[1..-1].split(//)
53
+ end
54
+ end.flatten
55
+ return @flags
56
+ end
57
+
58
+ def respond_to?(method_sym, include_private = false)
59
+ if method_sym.to_s =~ /^_([a-zA-Z0-9_]+)\?$/
60
+ return true
61
+ else
62
+ return super
63
+ end
64
+ end
65
+ def method_missing(method_sym, *arguments, &block)
66
+ if method_sym.to_s =~ /^_([a-zA-Z0-9_]+)\?$/
67
+ return include? $1
68
+ else
69
+ super
70
+ end
71
+ end
72
+ end
73
+
74
+ ARGV.extend(Torch::Argv)
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: torch
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - Ben Olive
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-11-04 00:00:00 -04:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: |
22
+ Provides useful tools and extensions to speed up common scripting tasks.
23
+
24
+ email: sionide21@gmail.com
25
+ executables: []
26
+
27
+ extensions: []
28
+
29
+ extra_rdoc_files: []
30
+
31
+ files:
32
+ - lib/torch/argv.rb
33
+ - lib/torch.rb
34
+ has_rdoc: true
35
+ homepage: http://github.com/sionide21/Torch
36
+ licenses: []
37
+
38
+ post_install_message:
39
+ rdoc_options: []
40
+
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ segments:
49
+ - 1
50
+ - 8
51
+ version: "1.8"
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ segments:
58
+ - 0
59
+ version: "0"
60
+ requirements: []
61
+
62
+ rubyforge_project:
63
+ rubygems_version: 1.3.7
64
+ signing_key:
65
+ specification_version: 3
66
+ summary: Extensions to make ruby shell scripting easier.
67
+ test_files: []
68
+