Ich möchte entweder eine Ruby-Methode oder einen regulären Ausdruck, mit dem ich eine Folge von Befehlszeilenargumenten in ein ARGV-artiges Array aufteilen kann. Was ich verlange ist ähnlich wie diese Frage , aber in Ruby.
Ich schreibe Komponententests für ein Ruby-Programm, das die Befehlszeileneingabe mit Trollop verarbeitet (obwohl diese Frage für jeden anderen Optionsparser gleich ist).
Die Methode, die ich testen möchte, sieht folgendermaßen aus:
%Vor% In meinem Programm rufe ich parse_args(ARGV)
an. In meinem Test dachte ich, ich könnte einfach eine auf Leerzeichen aufgeteilte Zeichenfolge übergeben, aber das ist nicht das Verhalten von ARGV. Vergleichen Sie Folgendes:
Es gibt Shellwords , wenn Sie 1.9 verwenden. Wenn Sie nicht 1.9 verwenden, aber Rails haben, erhalten Sie Shellwords von Rails. In beiden Fällen können Sie Shellwords.shellwords
verwenden, um eine Zeichenfolge wie eine POSIX-Shell zu analysieren:
Wenn Sie nicht über Rails oder 1.9 verfügen, können Sie wahrscheinlich einfach shellwords.rb
von Rails holen und verwenden.
Update : Es sieht so aus, als ob Shellwords verfügbar ist in Ruby 1.8 (danke Michael Khol). Ich bekam mehrdeutige Ergebnisse darüber, welche spezifischen Versionen es hatten.
Tags und Links ruby string command-line