25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# File 'lib/main/usage.rb', line 25
def self.default_synopsis main
s = "#{ main.name }"
if main.mode_name != 'main'
s << " #{ main.fully_qualified_mode.join ' ' }"
end
unless main.breadth_first_modes.empty?
modes = main.breadth_first_modes.map{|mode| mode.name}.join('|')
s << " (#{ modes })"
end
main.parameters.each do |p|
if p.type == :argument
if(p.required? and p.arity != -1)
if p.arity > 0
p.arity.times{ s << " #{ p.name }" }
else
(p.arity.abs - 1).times{ s << " #{ p.name }" }
s << " #{ p.name }*"
end
else
if p.arity > 0
a = []
p.arity.times{ a << "#{ p.name }" }
s << " [#{ a.join ' ' }]"
else
a = []
(p.arity.abs - 1).times{ a << "#{ p.name }" }
a << "#{ p.name }*"
s << " [#{ a.join ' ' }]"
end
end
end
end
main.parameters.each do |p|
if p.type == :keyword
if p.required?
s << " #{ p.name }=#{ p.name }"
else
s << " [#{ p.name }=#{ p.name }]"
end
end
end
n = 0
main.parameters.each do |p|
if p.type == :option
if p.required?
case p.argument
when :required
s << " --#{ p.name }=#{ p.name }"
when :optional
s << " --#{ p.name }=[#{ p.name }]"
else
s << " --#{ p.name }"
end
else
n += 1
end
end
end
if n > 0
s << " [options]+"
end
=begin
if main.modes.size > 0
modes = main.modes.keys.join('|')
s << "\n#{ main.name } (#{ modes }) help"
end
if main.mode_name != 'main'
s << "\n#{ main.name } #{ main.fully_qualified_mode.join ' ' } help"
else
s << "\n#{ main.name } help"
end
=end
s
end
|