MCPcopy Create free account
hub / github.com/StanfordPL/stoke / write_arguments

Method write_arguments

tools/scripts/completion_generator.py:175–236  ·  view source on GitHub ↗
(self, name, args)

Source from the content-addressed store, hash-verified

173}""")
174
175 def write_arguments(self, name, args):
176 def esc(s):
177 s = s.replace("{", "\\{").replace("}", "\\}").replace("'", "")
178 return s
179 self.writeln("_" + name.replace(" ", "_") + "()\n{")
180 res = []
181 for arg in args:
182 if len(arg.get_parameters()) > 1:
183 a = "{'" + "','".join(arg.get_parameters()) + "'}'"
184 else:
185 a = "'" + arg.get_parameters()[0]
186
187 usage = arg.get_usage()
188
189 # no argument, just a flag
190 if usage == None:
191 res.append(a + "[" + esc(arg.desc) + "]::'")
192 continue
193
194 # number argument
195 m = re.search('<(int|double|percent|line|value|bytes)>$', usage)
196 if m != None:
197 res.append(a + "[" + esc(arg.desc + "; <"+m.group(1)+">") + "]:num:'")
198 continue
199
200 # file argument
201 m = re.search('<(path/to/(file|bin)\.?(.*))>$', usage)
202 if m != None:
203 if len(m.group(3)) > 0:
204 res.append(a + "[" + esc(arg.desc + "; <"+m.group(2)+">")+"]:file:_files -g \"*."+esc(m.group(3))+"\"'")
205 else:
206 res.append(a + "[" + esc(arg.desc + "; <"+m.group(2)+">")+"]:file:_files'")
207 continue
208
209 # dir argument
210 m = re.search('<(path/to/dir|dir)>$', usage)
211 if m != None:
212 res.append(a + "[" + esc(arg.desc + "; <path/to/dir>")+"]:dir:_files -/'")
213 continue
214
215 # list of options
216 m = re.search('\((.*)\)$', usage)
217 if m != None:
218 options = m.group(1).split("|")
219 res.append(a + "[" + esc(arg.desc) + "]:argument:(" + " ".join(map(lambda x: esc(x), options)) + ")'")
220 continue
221
222 # arguments without completion
223 m = re.search('({.*}|<move_type>|<move>|<arg1 arg2 ... argn>|<string>)$', usage)
224 if m != None:
225 options = m.group(1).split("|")
226 res.append(a + "[" + esc(arg.desc + "; "+m.group(1))+"]:argument:'")
227 continue
228
229 # no match, just add default help
230 print "ERROR: Argument with unknown usage found: " + self.name
231 sys.exit(1)
232 #res.append(a + "[" + esc(arg.desc) + "]:argument:'")

Callers 1

auxMethod · 0.95

Calls 3

writelnMethod · 0.80
get_parametersMethod · 0.80
get_usageMethod · 0.80

Tested by

no test coverage detected