Neueste Versionen von Ruby unterstützen die Verwendung von Klammern in globbing, wenn Sie die Option File :: FNM_EXTGLOB
verwendenAus der 2.2.0 Dokumentation
%Vor%In der Dokumentation von 1.9.3 heißt es jedoch, dass es in 1.9.3 nicht unterstützt wird:
%Vor% (Außerdem hat File::FNM_EXTGLOB
versucht, einen Namensfehler zu verwenden)
Gibt es eine Möglichkeit, Klammern in Ruby 1.9.3 zu verwenden, z. B. ein Edelstein eines Drittanbieters?
Die Zeichenfolgen, mit denen ich übereinstimmen möchte, stammen von S3, kein lokales Dateisystem, daher kann ich das Betriebssystem nicht einfach so weit wie ich weiß das Globbing durchführen.
Ich bin gerade dabei, einen Ruby-Backport für die Unterstützung von Klammern-Globbing zusammenzupacken. Hier sind die wesentlichen Teile dieser Lösung:
%Vor%Diese Lösung berücksichtigt die verschiedenen Flags, die für die Datei :: fnmatch verfügbar sind -Funktion und verwendet das Glob-Pattern, um ein passendes Regexp zu erstellen, das den Features entspricht . Mit dieser Lösung können diese Tests erfolgreich ausgeführt werden:
%Vor% Die fnmatch_with_braces_glob
(und ?
Variante) werden anstelle von fnmatch
gepatcht, so dass Ruby 2.0.0-konformer Code auch mit früheren Ruby Versionen funktioniert. Aus Gründen der Übersichtlichkeit enthält der oben gezeigte Code keine Leistungsverbesserungen, Argumentprüfung oder Erkennung und Patch-In-Code der Backports-Funktionen. Diese werden natürlich in die eigentliche Einreichung des Projekts einbezogen.
Ich teste immer noch einige Edge Cases und optimiere die Performance stark; es sollte bereit sein, sehr bald einzureichen. Sobald es in einer offiziellen Backports-Version verfügbar ist, aktualisiere ich den Status hier.
Beachten Sie, dass Dir :: glob Unterstützung kommen wird die gleiche Zeit auch.
Das war eine lustige Ruby-Übung! Keine Ahnung, ob diese Lösung robust genug für Sie ist, aber hier geht es:
%Vor%Bessere Tests sind erforderlich, aber es scheint in einfachen Fällen gut zu funktionieren:
%Vor%Getestet mit Ruby 1.9.3 und Ruby 2.1.5 und 2.2.1.