Feature-Preview: Format-Strings

Liebe Alle,

mit der Version 1.0, die ich in den nächsten Tagen veröffentliche werde, wird pica-rs eine neue unstable-Funktion enthalten, die in einigen Anwendungsfällen praktisch sein könnte. Mittels eines Format-Strings lassen sich ganze Felder in einen String transformieren. Während es bisher mit dem select oder frequency-Kommando nur möglich war, einzelne Unterfelder in eine zugehörige Spate abzufragen, kann durch Angabe eines Format-Strings einige/alle Unterfelder eines Felds zu einer einzigen Spalte zusammengefasst werden.

Als Beispiel soll folgendes Feld dienen:

$ pica print aa.dat | grep '029A'
029A $a Deutschland $g Bundesrepublik $b Auswärtiges Amt $b Bibliothek

Durch Angabe eines Format-Strings können nun einige (oder alle) Unterfelder zu einen einzigen Wert zusammengefasst werden:

$ pica select '029A{ a <$> (" (" g ")" <*> " / " [xb] <*> ", " n)}' aa.dat
Deutschland (Bundesrepublik) / Auswärtiges Amt / Bibliothek
 
$ pica select '029A{ a <$> (" (" g ")" <*> " / " [xb] <*> ", " n)..1 }' aa.dat
Deutschland (Bundesrepublik)
 
$ pica select '029A{ a <$> (" (" g ")" <*> " / " [xb] <*> ", " n)..2 }' aa.dat
Deutschland (Bundesrepublik) / Auswärtiges Amt
 
$ pica select '029A{ a <$> (" (" g ")" <*> " / " [xb] <*> ", " n)..3 }' aa.dat
Deutschland (Bundesrepublik) / Auswärtiges Amt / Bibliothek

Durch Angabe eines Modifiers kann die Ausgabe auch manipuliert werde: Bspw. werde durch ?w alle Leerzeichen der Ausgabe entfernt:

$ pica select '003@.0, 006Y{ (?w "https://isni.org/isni/" 0) | S == "isni" }' goethe.dat
118540238,https://isni.org/isni/0000000120999104

Das obige Beispiel demonstriert, dass sich Format-Strings auch mit „normalen“ Select-Ausdrücken kombinieren lassen.

Falls ihr noch weitere Ideen oder Anwendungsfälle habt, wäre ich an Feedback sehr interessiert. Ich schätze, dass nach einer ausgiebigen Testphase, das Feature Mitte des Jahres veröffentlicht werden kann.

3 Likes