Ich derzeit Skript in Python, aber ich möchte Ruby aus verschiedenen Gründen versuchen. Ich habe mir in der letzten Woche eine Menge Beispielcode angeschaut und viele Dokumente gelesen. Ein Punkt, der mich beschäftigt, ist das Fehlen eines richtigen Befehlszeilenarguments, das Bibliotheken in Ruby analysiert. Ruby-Experten, werde nicht sauer auf mich - vielleicht weiß ich es nicht. Deshalb bin ich hier.Ruby optparse Einschränkungen
In Python war ich gewohnt, argparse
zu verwenden, was meiner Meinung nach einfach perfekt ist (vielleicht für meine Bedürfnisse). Leider erlaubt OptionParser
nicht die Flexibilität und Funktionen, die argparse
tut.
Ich suche speziell auf die folgenden Einschränkungen für jetzt:
Wie kann ich sich gegenseitig ausschließende Optionslisten? Für z.B. eine sehr kleine Optionsliste für ein Programm namens
test
.# implement a ---------------------------------------------- opts.on("-a", "--alpha", "implement alpha") do #... end
und so weiter:
usage: test [-h] [-a | -b | -c] [-d] [filename]
kann ich einige Code wie schreiben. Aber dann habe ich keine Möglichkeit,
a
,b
undc
sich gegenseitig auszuschließen, es sei denn ich eine Permutation dieser Codes und einige Fehlerbehandlung. Für z.B.test -ab #should through an error
In Python, ich könnte dies zu tun, in einer sehr einfachen Art und Weise:
# create an command line argument parser object cmd_line_parser = argparse.ArgumentParser() # create a mutually exclusive group cmd_line_group = cmd_line_parser.add_mutually_exclusive_group()
Zweitens, ich habe keine Möglichkeit, Paarung
-d
mit-a
, wenn ich speziell Code für diese Permutation schreiben . Das ist verrückt.Ich muss die
[OPTION]
Liste selbst schreiben; Ich habe keine Möglichkeit zu wissen, ob ich falsch oder richtig bin, es sei denn, und bis ich eine Blackbox teste, die alle möglichen Eingabepermutationen testet und sie der Blackbox-Liste zuordnet.Darüber hinaus müssen obligatorische Argumente erneut mit speziellen Code behandelt werden.
Gibt es eine einfache, diese Beschränkungen der Handhabung optparse
oder andere Bibliotheken in Ruby verwenden?
Wow. Das ist verrückt. Epos. Zeitraum. Was zur Hölle habe ich so lange gemacht.Das ist fantastisch. Danke vielmals. – p0lAris