コード例 #1
0
ファイル: test_docopt.py プロジェクト: Vlad-Shcherbina/docopt
def test_parse_doc_options():
    doc = '''-h, --help  Print help message.
    -o FILE     Output file.
    --verbose   Verbose mode.'''
    assert parse_doc_options(doc) == [Option('-h', '--help'),
                                      Option('-o', None, 1),
                                      Option(None, '--verbose')]
コード例 #2
0
ファイル: test_docopt.py プロジェクト: nexiles/docopt
def test_parse_doc_options():
    doc = '''-h, --help  Print help message.
    -o FILE     Output file.
    --verbose   Verbose mode.'''
    assert parse_doc_options(doc) == [Option('-h', '--help'),
                                      Option('-o', None, 1),
                                      Option(None, '--verbose')]
コード例 #3
0
ファイル: docopt_c.py プロジェクト: sio2boss/BMRF-CPP
                to_c(o.long or o.short),
                c_name(o.long or o.short))


def c_if_not_flag(o):
    t = """ else if (o->option.argument && strcmp(o->option.o%s, %s) == 0) {
            args.%s = o->option.argument;\n        }"""
    return t % (('long' if o.long else 'short'),
                to_c(o.long or o.short),
                c_name(o.long or o.short))


if __name__ == '__main__':
    help_message=sys.stdin.read()
    usage_pattern = printable_usage(help_message)
    options = parse_doc_options(help_message)
    formal_pattern = parse_pattern(formal_usage(usage_pattern), options=options)
    formal_pattern.fix()

    out = __doc__
    out = out.replace('<<<flag_options>>>',
                      ';\n    '.join('int %s' % c_name(o.long or o.short)
                                     for o in options if o.argcount == 0))
    out = out.replace('<<<options_with_arguments>>>',
                      ';\n    '.join('char *%s' % c_name(o.long or o.short)
                                     for o in options if o.argcount == 1))
    out = out.replace('<<<help_message>>>', to_c(help_message))
    out = out.replace('<<<usage_pattern>>>', to_c(usage_pattern))
    out = out.replace('<<<defaults>>>',
                      ', '.join(to_c(o.value) for o in
                                sorted(options, key=lambda o: o.argcount)))
コード例 #4
0
ファイル: docopt_c.py プロジェクト: sio2boss/BMRF-CPP
            args.%s = o->option.value;\n        }"""
    return t % (('long' if o.long else 'short'), to_c(
        o.long or o.short), c_name(o.long or o.short))


def c_if_not_flag(o):
    t = """ else if (o->option.argument && strcmp(o->option.o%s, %s) == 0) {
            args.%s = o->option.argument;\n        }"""
    return t % (('long' if o.long else 'short'), to_c(
        o.long or o.short), c_name(o.long or o.short))


if __name__ == '__main__':
    help_message = sys.stdin.read()
    usage_pattern = printable_usage(help_message)
    options = parse_doc_options(help_message)
    formal_pattern = parse_pattern(formal_usage(usage_pattern),
                                   options=options)
    formal_pattern.fix()

    out = __doc__
    out = out.replace(
        '<<<flag_options>>>',
        ';\n    '.join('int %s' % c_name(o.long or o.short) for o in options
                       if o.argcount == 0))
    out = out.replace(
        '<<<options_with_arguments>>>',
        ';\n    '.join('char *%s' % c_name(o.long or o.short) for o in options
                       if o.argcount == 1))
    out = out.replace('<<<help_message>>>', to_c(help_message))
    out = out.replace('<<<usage_pattern>>>', to_c(usage_pattern))