argv 1.1.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c6d3305ab1c2290e56cc9749439775e019de80cd
4
- data.tar.gz: 7bb4f9174d881d688a34899fdea86c86f8dca300
3
+ metadata.gz: 6bda76d6b927be05fc63143b9bde823c8c397bd9
4
+ data.tar.gz: 2afca9cf6493a55f328532b75a59e31cb0cd643c
5
5
  SHA512:
6
- metadata.gz: d9ddd7515b54d4a16c826e3ccbfac4984a54e8df7b4fe358fc2b2f7af88d40d335dde8ae9b45b7ee7f42306904a173036b90fc6ae5d59ccc61e33852024e0bd7
7
- data.tar.gz: d7419e12eaac5a53391dc74ba0f02b716b406cc9d7b84f1aaaf63823db092af4bb191ee61f60fcec1263a2119f11b32265d4f893db47c36902220f83b17326a9
6
+ metadata.gz: a0becc8a32de3cfd6f5495f7c4e0fa17db6d6462f74f15a5001a140e6cf03d776a9625bd9d79e502a9493d54b18dd0e432ff39098f46809eb9c3a902c5283bb7
7
+ data.tar.gz: 6adf6f6ab00b2e021f9c4dedcab2bc41f5673445b02bb71124908da494772b3c7e6e9749d58c76a27be0697061d68af86fb05bd7014c070dc8cfb810a58996e3
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- argv (1.1.1)
4
+ argv (2.1.0)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
data/README.md CHANGED
@@ -10,51 +10,55 @@ With this extension module, you can parse in an easy way the script input tags
10
10
 
11
11
  require 'argv'
12
12
 
13
- #> $ script.rb --test this --hello world --sup
13
+ #$ ruby sample/test.rb --test test this ok
14
14
 
15
- puts ARGV.flag_tags
16
- # {"--test"=>"this", "--hello"=>"world"}
15
+ puts ARGV.to_hash
16
+ # {"--test"=>"test"}
17
17
 
18
- puts ARGV.flags.inspect
19
- # ["--test", "--hello", "--sup"]
20
-
21
- ```
22
-
23
- ```ruby
18
+ puts ARGV.to_hash( multi_value: true )
19
+ # {"--test"=>["test", "this", "ok"]}
24
20
 
21
+ puts ARGV.to_hash( sym_key: true )
22
+ # {:test=>"test"}
25
23
 
26
- #> $ script.rb --test this --hello world --su-p asd sdsd -asd -dsa
24
+ puts ARGV.to_hash( s: true, m: true )
25
+ # {:test=>["test", "this", "ok"]}
27
26
 
28
27
  puts ARGV.values.inspect
29
- #> ["this", "world", "asd", "sdsd"]
28
+ # ["test", "this", "ok"]
30
29
 
31
- puts ARGV.flagtags sym_key: true
32
- #> {:test=>"this", :hello=>"world", :"su-p"=>"asd"}
30
+ puts ARGV.keys.inspect
31
+ # ["--test"]
33
32
 
33
+ puts ARGV.flag_syms.inspect
34
+ # [:test, :test, :this, :ok]
34
35
 
35
36
  ```
36
37
 
37
- ```ruby
38
-
38
+ #### For Modules
39
39
 
40
- #> $ script.rb --test this this multi value --hello world asdf
40
+ if you write module and you want to have some custom tags and help msg for that,
41
+ use the following example
41
42
 
42
- puts ARGV.values.inspect
43
- #> ["this", "world", "asd", "sdsd"]
44
-
45
- puts ARGV.flagtags sym_key: true
46
- #> {:test=>"this", :hello=>"world", :"su-p"=>"asd"}
43
+ ```ruby
47
44
 
45
+ require 'argv'
48
46
 
49
- ```
47
+ ARGVEXT.add_help_msg "This will show you the help msg (this)",:helper,:help,:h
50
48
 
51
- ### multi value use case
49
+ #
50
+ # ARGVEXT.help_msg or show_help will read on your values and will produce the following with this example
51
+ #
52
+ # This will show you the help msg (this)
53
+ # --helper
54
+ # --help
55
+ # -h
52
56
 
53
- ```ruby
57
+ # this will run on the terminal and break Process,
58
+ # if the user give one of the helper tags as argv
54
59
 
55
- #> $ script.rb --test this --hello world --su-p asd sdsd -asd -dsa
60
+ ```
56
61
 
57
- puts ARGV.flag_multi_value.inspect
58
- #> {"--test"=>["this"], "--hello"=>["world"], "--su-p"=>["asd", "sdsd"]}
62
+ ### Test
59
63
 
60
- ```
64
+ * you can find a test file in the sample named as "test"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.1
1
+ 2.1.0
@@ -1,70 +1,2 @@
1
- module ARGVEXT
2
-
3
- def flag_tags opts= {}
4
- raise(ArgumentError) unless opts.class <= Hash
5
-
6
- opts[:sym_key] ||= opts[:sym] || opts[:sk] || opts[:s]
7
-
8
- return_obj= {}
9
- self.count.times do |index|
10
-
11
- next if self[index+1].nil?
12
- if self[index][0].include?('-') && !self[index+1][0].include?('-')
13
- return_obj[( opts[:sym_key] ? self[index].dup.to_s.gsub!(/^-*/,'').to_sym : self[index] )]= self[index+1]
14
- end
15
-
16
- end
17
- return return_obj
18
-
19
- end
20
- alias :flag_value :flag_tags
21
- alias :flag_tag :flag_tags
22
- alias :flagtag :flag_tags
23
- alias :flagtags :flag_tags
24
-
25
- def flag_multi_value opts= {}
26
- raise(ArgumentError) unless opts.class <= Hash
27
-
28
- opts[:sym_key] ||= opts[:sym] || opts[:sk] || opts[:s]
29
-
30
-
31
- return_obj= {}
32
- self.count.times do |index|
33
-
34
- begin
35
-
36
- if self[index][0].include?('-') && !self[index+1][0].include?('-')
37
-
38
- new_element= []
39
- index_at= index+1
40
- loop do
41
- if self[index_at].nil? || self[index_at].to_s[0].include?('-')
42
- break
43
- else
44
- new_element.push(self[index_at])
45
- end
46
- index_at += 1
47
- end
48
- return_obj[( opts[:sym_key] ? self[index].dup.to_s.gsub!(/^-*/,'').to_sym : self[index] )]= new_element
49
-
50
- end
51
-
52
- rescue
53
- end
54
-
55
- end
56
- return return_obj
57
-
58
- end
59
-
60
- def flags
61
- self.select { |e| e[0].include?('-') }
62
- end
63
-
64
- def values
65
- self.select { |e| !e[0].include?('-') }
66
- end
67
-
68
- end
69
-
70
- ARGV.__send__ :extend,ARGVEXT
1
+ require 'argv/ext'
2
+ require 'argv/cms'
@@ -0,0 +1,33 @@
1
+ module ARGVEXT
2
+ class << self
3
+
4
+ @@help_msg_obj ||= []
5
+ def add_help_msg msg,*keys
6
+ raise unless msg.class <= String
7
+ @@help_msg_obj.push [msg,keys]
8
+ return nil
9
+ end
10
+
11
+ def help_msg
12
+
13
+ helper_sym= [:helper,:help,:h]
14
+ self.add_help_msg "This will show you the help msg (this)",*helper_sym
15
+ unless ::ARGV.sym_flags.select{ |e| helper_sym.include?(e) }.empty?
16
+
17
+ tmp_ary= []
18
+ @@help_msg_obj.each{ |ary|
19
+ tmp_ary.push(ary[0])
20
+ ary[1].each{|e| tmp_ary.push( ( e.to_s.length == 1 ? "-#{e}" : "--#{e}" ) )}
21
+ tmp_ary.push("")
22
+ }
23
+
24
+ tmp_ary.each{ |element| element.include?('--') ? element.gsub!('--',"\t--") : element.gsub!('-',"\t -")}
25
+ puts "",tmp_ary.join("\n"),""
26
+ Process.exit!
27
+
28
+ end
29
+ end
30
+ alias :show_help :help_msg
31
+
32
+ end
33
+ end
@@ -0,0 +1,77 @@
1
+ module ARGVEXT
2
+
3
+ module EXTENSION
4
+
5
+ def to_hash opts= {}
6
+ raise(ArgumentError) unless opts.class <= Hash
7
+
8
+ opts[:sym_key] ||= opts[:sk] || opts[:sym] || opts[:s]
9
+ opts[:multi_value] ||= opts[:mv] || opts[:m]
10
+
11
+ return_obj= {}
12
+ self.count.times do |index|
13
+ unless opts[:multi_value]
14
+
15
+ next if self[index+1].nil?
16
+ if self[index][0].include?('-') && !self[index+1][0].include?('-')
17
+ return_obj[( opts[:sym_key] ? self[index].to_s.dup.gsub!(/^-*/,'').to_sym : self[index] )]= self[index+1]
18
+ end
19
+
20
+ else
21
+
22
+ begin
23
+
24
+ if self[index][0].include?('-') && !self[index+1][0].include?('-')
25
+
26
+ new_element= []
27
+ index_at= index+1
28
+ loop do
29
+ if self[index_at].nil? || self[index_at].to_s[0].include?('-')
30
+ break
31
+ else
32
+ new_element.push(self[index_at])
33
+ end
34
+ index_at += 1
35
+ end
36
+ return_obj[( opts[:sym_key] ? self[index].to_s.dup.gsub!(/^-*/,'').to_sym : self[index] )]= new_element
37
+
38
+ end
39
+
40
+ rescue
41
+ end
42
+
43
+
44
+ end
45
+ end
46
+ return return_obj
47
+
48
+ end
49
+
50
+ alias :flagtag :to_hash
51
+ alias :flagtags :to_hash
52
+
53
+ def flags
54
+ self.select { |e| e[0].include?('-') }
55
+ end
56
+
57
+ alias :flag :flags
58
+ alias :tags :flags
59
+ alias :keys :flags
60
+
61
+ def sym_flags
62
+ self.flags.map { |e| e.to_s.dup.gsub!(/^-*/,'').to_sym }
63
+ end
64
+
65
+ alias :flag_syms :sym_flags
66
+ alias :flag_sym :sym_flags
67
+ alias :tag_syms :sym_flags
68
+ alias :key_syms :sym_flags
69
+
70
+ def values
71
+ self.select { |e| !e[0].include?('-') }
72
+ end
73
+
74
+ end
75
+
76
+ end
77
+ ARGV.__send__ :extend,ARGVEXT::EXTENSION
@@ -1,9 +1,26 @@
1
- require_relative "../lib/configer.rb"
1
+ require "argv"
2
2
 
3
- Configer.mount_yaml
4
- Configer.mount_json
3
+ #$ ruby sample/test.rb --test test this ok
4
+ ARGVEXT.help_msg
5
5
 
6
- configer #> config
6
+ puts "","original ARGV:",ARGV.inspect,""
7
7
 
8
- # for example we can call the root/sample/meta/test.yml file parsed data as
9
- puts configer.sample.meta.test #> { hello: world }
8
+ puts "hash from argv:",ARGV.to_hash,""
9
+ # {"--test"=>"test"}
10
+
11
+ puts "multi valued hash:",ARGV.to_hash( multi_value: true ),""
12
+ # {"--test"=>["test", "this", "ok"]}
13
+
14
+ puts "sym keyed hash:",ARGV.to_hash( sym_key: true ),""
15
+ # {:test=>"test"}
16
+
17
+ puts "sym keyed multi valued hash:",ARGV.to_hash( s: true, m: true ),""
18
+ # {:test=>["test", "this", "ok"]}
19
+
20
+ puts "argv values without the tags:",ARGV.values.inspect,""
21
+ # ["test", "this", "ok"]
22
+
23
+ puts "argv tags, \"keys\":",ARGV.keys.inspect,""
24
+ # ["--test"]
25
+
26
+ puts "symbolized flags:",ARGV.sym_flags.inspect,""
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: argv
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Luzsi
@@ -55,6 +55,8 @@ files:
55
55
  - VERSION
56
56
  - argv.gemspec
57
57
  - lib/argv.rb
58
+ - lib/argv/cms.rb
59
+ - lib/argv/ext.rb
58
60
  - sample/test.rb
59
61
  homepage:
60
62
  licenses: []