help_parser 6.0.0 → 6.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +6 -1
- data/lib/help_parser/constants.rb +9 -1
- data/lib/help_parser/options.rb +10 -4
- data/lib/help_parser/parseh.rb +7 -9
- data/lib/help_parser/validations.rb +1 -2
- data/lib/help_parser.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e50119d56d6b94ac58234ccfc24d3c5ddaf68a6f399753af89fc3fad2f210b3e
|
4
|
+
data.tar.gz: 591810bdc390d16c1ed6b4fc2332f6bc1b98a683c218cd446fa7726d820ff22e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b64e50f235e4f53e2f85a0508212b38b4fb80f7616150864a68cf04f39bb3c9d88dad4a3b1764ee3a7410978d01f20ae15739610a79c92a25190bad00bd24526
|
7
|
+
data.tar.gz: 9ccf098df4a3226b39a85519251f172097ecb9854cd05adf95bc61d54a4fad9718703c6c2ed9a92abf61f1862fbe10738937b41473c34fa0eb75db34aca78b7e
|
data/README.md
CHANGED
@@ -42,7 +42,7 @@ I prefer easy.
|
|
42
42
|
Blah blah blah
|
43
43
|
HELP
|
44
44
|
|
45
|
-
VERSION = "6.
|
45
|
+
VERSION = "6.1.0"
|
46
46
|
|
47
47
|
# Macros:
|
48
48
|
HelpParser.string(name) # for options.name : String
|
@@ -63,6 +63,11 @@ I prefer easy.
|
|
63
63
|
Well, what do you think?
|
64
64
|
PERFECT!
|
65
65
|
|
66
|
+
## New for 6.1.0:
|
67
|
+
|
68
|
+
Running your `awesome` command with the `--help` flag will also check your help text for errors,
|
69
|
+
on top of giving the help text. Otherwise, the parser no longer checks for help text errors.
|
70
|
+
|
66
71
|
## INSTALL:
|
67
72
|
|
68
73
|
$ sudo gem install help_parser
|
@@ -1,4 +1,12 @@
|
|
1
1
|
module HelpParser
|
2
|
+
@@validate = false
|
3
|
+
def self.validate!
|
4
|
+
@@validate = true
|
5
|
+
end
|
6
|
+
def self.validate?
|
7
|
+
@@validate
|
8
|
+
end
|
9
|
+
|
2
10
|
USAGE = 'usage'
|
3
11
|
TYPES = 'types'
|
4
12
|
EXCLUSIVE = 'exclusive'
|
@@ -63,7 +71,7 @@ module HelpParser
|
|
63
71
|
EXTRANEOUS_SPACES = 'Extraneous spaces in help.'
|
64
72
|
|
65
73
|
# lambda utilities
|
66
|
-
MSG = lambda{|msg,*keys| "#{msg}: #{keys.join(' ')}"}
|
74
|
+
MSG = lambda{|msg,*keys| "\033[0;31m#{msg}: #{keys.join(' ')}\033[0m"}
|
67
75
|
F2K = lambda{|f| f[1]=='-' ? f[2..((f.index('=')||0)-1)] : f[1]}
|
68
76
|
RESERVED = lambda{|k| [USAGE,TYPES,EXCLUSIVE].include?(k)} # reserved
|
69
77
|
end
|
data/lib/help_parser/options.rb
CHANGED
@@ -1,17 +1,23 @@
|
|
1
1
|
module HelpParser
|
2
2
|
class Options
|
3
|
-
def initialize(
|
3
|
+
def initialize(version, help, argv)
|
4
4
|
@hash = HelpParser.parsea(argv)
|
5
5
|
if version && (@hash.has_key?('v') || @hash.has_key?('version'))
|
6
6
|
# -v or --version
|
7
7
|
raise VersionException, version
|
8
8
|
end
|
9
9
|
if help
|
10
|
-
|
11
|
-
|
10
|
+
# -h or --help
|
11
|
+
if @hash.has_key?('h') || _=@hash.has_key?('help')
|
12
|
+
begin
|
13
|
+
# validates help
|
14
|
+
HelpParser.parseh(help, true)
|
15
|
+
rescue HelpError
|
16
|
+
$stderr.puts $!
|
17
|
+
end if _
|
12
18
|
raise HelpException, help
|
13
19
|
end
|
14
|
-
specs = HelpParser.parseh(help)
|
20
|
+
specs = HelpParser.parseh(help, HelpParser.validate?)
|
15
21
|
Completion.new(@hash, specs)
|
16
22
|
if xs=specs[EXCLUSIVE]
|
17
23
|
xs.each{|x| raise HelpParser::UsageError, MSG[EXCLUSIVE_KEYS,*x] if @hash.keys.count{|k|x.include?(k)}>1}
|
data/lib/help_parser/parseh.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module HelpParser
|
2
|
-
def self.parseh(help)
|
2
|
+
def self.parseh(help, validate=true)
|
3
3
|
specs,name = NoDupHash.new,''
|
4
4
|
help.each_line do |line|
|
5
5
|
line.chomp!
|
@@ -12,27 +12,25 @@ module HelpParser
|
|
12
12
|
break if line[0]=='#'
|
13
13
|
next if line[0]!=' '
|
14
14
|
spec = (index=line.rindex("\t"))? line[0,index].strip : line.strip
|
15
|
-
raise HelpError, EXTRANEOUS_SPACES if spec
|
15
|
+
raise HelpError, EXTRANEOUS_SPACES if validate and spec==''
|
16
16
|
case name
|
17
17
|
when USAGE
|
18
18
|
specs[name].push HelpParser.parseu spec
|
19
19
|
when TYPES
|
20
|
-
raise HelpError, MSG[UNRECOGNIZED_TYPE,spec]
|
20
|
+
raise HelpError, MSG[UNRECOGNIZED_TYPE,spec] if validate and not spec=~TYPE_DEF
|
21
21
|
specs[name].push spec.split(CSV)
|
22
22
|
when EXCLUSIVE
|
23
|
-
raise HelpError, MSG[UNRECOGNIZED_X,spec]
|
23
|
+
raise HelpError, MSG[UNRECOGNIZED_X,spec] if validate and not spec=~X_DEF
|
24
24
|
specs[name].push spec.split(CSV)
|
25
25
|
else
|
26
|
-
|
27
|
-
when SHORT, LONG, SHORT_LONG, SHORT_LONG_DEFAULT
|
28
|
-
specs[name].push spec.split(CSV)
|
29
|
-
else
|
26
|
+
if validate and not [SHORT, LONG, SHORT_LONG, SHORT_LONG_DEFAULT].any?{|_|_=~spec}
|
30
27
|
raise HelpError, MSG[UNRECOGNIZED_OPTION,spec]
|
31
28
|
end
|
29
|
+
specs[name].push spec.split(CSV)
|
32
30
|
end
|
33
31
|
end
|
34
32
|
end
|
35
|
-
HelpParser.validate_usage_specs(specs)
|
33
|
+
HelpParser.validate_usage_specs(specs) if validate
|
36
34
|
return specs
|
37
35
|
end
|
38
36
|
end
|
@@ -33,12 +33,11 @@ module HelpParser
|
|
33
33
|
unless specs[EXCLUSIVE].nil?
|
34
34
|
seen = {}
|
35
35
|
specs[EXCLUSIVE].each do |xs|
|
36
|
-
k = xs.sort.join
|
36
|
+
k = xs.sort.join(',').to_sym
|
37
37
|
raise HelpError, MSG[DUP_X,*xs] if seen[k]
|
38
38
|
seen[k] = true
|
39
39
|
xs.each do |x|
|
40
40
|
raise HelpError, MSG[UNSEEN_FLAG, x] unless flags.include?(x)
|
41
|
-
k<<x
|
42
41
|
end
|
43
42
|
end
|
44
43
|
end
|
data/lib/help_parser.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: help_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- carlosjhr64
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
11
|
+
date: 2018-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |
|
14
14
|
Welcome to the best Help Parser of all!
|