Wie kann ich eine Zeichenfolge teilen, die Shells zum Füllen von ARGV verwenden?

8

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:

%Vor%     
Ryan 20.05.2011, 05:57
quelle

1 Antwort

11

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:

%Vor%

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.

    
mu is too short 20.05.2011, 06:34
quelle

Tags und Links