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.
- data/lib/torch.rb +3 -0
- data/lib/torch/argv.rb +74 -0
- metadata +68 -0
data/lib/torch.rb
ADDED
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
|
+
|