torch 0.0.1

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.
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
+