MCPcopy Create free account
hub / github.com/PlatformLab/NanoLog / parse_long

Function parse_long

preprocessor/docopt.py:301–331  ·  view source on GitHub ↗

long ::= '--' chars [ ( ' ' | '=' ) chars ] ;

(tokens, options)

Source from the content-addressed store, hash-verified

299
300
301def parse_long(tokens, options):
302 """long ::= '--' chars [ ( ' ' | '=' ) chars ] ;"""
303 long, eq, value = tokens.move().partition('=')
304 assert long.startswith('--')
305 value = None if eq == value == '' else value
306 similar = [o for o in options if o.long == long]
307 if tokens.error is DocoptExit and similar == []: # if no exact match
308 similar = [o for o in options if o.long and o.long.startswith(long)]
309 if len(similar) > 1: # might be simply specified ambiguously 2+ times?
310 raise tokens.error('%s is not a unique prefix: %s?' %
311 (long, ', '.join(o.long for o in similar)))
312 elif len(similar) < 1:
313 argcount = 1 if eq == '=' else 0
314 o = Option(None, long, argcount)
315 options.append(o)
316 if tokens.error is DocoptExit:
317 o = Option(None, long, argcount, value if argcount else True)
318 else:
319 o = Option(similar[0].short, similar[0].long,
320 similar[0].argcount, similar[0].value)
321 if o.argcount == 0:
322 if value is not None:
323 raise tokens.error('%s must not have an argument' % o.long)
324 else:
325 if value is None:
326 if tokens.current() in [None, '--']:
327 raise tokens.error('%s requires argument' % o.long)
328 value = tokens.move()
329 if tokens.error is DocoptExit:
330 o.value = value if value is not None else True
331 return [o]
332
333
334def parse_shorts(tokens, options):

Callers 2

parse_atomFunction · 0.85
parse_argvFunction · 0.85

Calls 3

OptionClass · 0.85
moveMethod · 0.80
currentMethod · 0.80

Tested by

no test coverage detected