Konvertieren von Datensätzen in Proplists (und zurück)

8

Ich habe eine Erlang-App, die auf Mochiweb und Mnesia basiert und JSON konsumiert und ausstrahlt. Es macht Sinn, Aufzeichnungen in Mnesia zu speichern; Mochiweb / Mochijson benötigen jedoch Daten im Proplist-Format. Also habe ich eine große Menge Code:

%Vor%

Gut mit einer einzigen kleinen Platte, ein Schmerz mit vielen großen Platten. Kann irgendjemand einen Weg vorschlagen, um diesen Code zu umgehen? Ich denke, ich brauche eine Möglichkeit, die Felder eines Datensatzes dynamisch zu untersuchen. und da Datensätze ein kompilierbares Konstrukt sind, nehme ich an, dass es möglich ist, Code über ein Makro zu injizieren.

Danke!

    
Justin 21.09.2010, 12:21
quelle

4 Antworten

1

Es klingt wie exprecs ist, was du suchst:

Ссылка

Lesen von der Beschreibung:

  

Das Modul ist eine Parse-Transformation   Damit können Sie Datensätze exportieren. Das   transform fügt Zugriffsfunktionen für hinzu   instanziieren, inspizieren und   Datensätze ändern, ohne dies tun zu müssen   Einführung von Kompilierzeitabhängigkeiten   zwischen Modulen.

Sehen Sie, ob das hilft.

    
Roberto Aloi 03.10.2010, 15:03
quelle
22

Sie sollten etwas tun können wie:

%Vor%

usw.

(Oder als ein Makro (immer noch eine Funktion, die Version, wo das Makro ist? R2P (Rec, foobar) ist einfach zu hässlich):

%Vor%

)

    
Daniel Luna 21.09.2010 15:56
quelle
2

Mit record_info (fields, foobar) ist es möglich, etwas dynamisch zu machen. record_info ist jedoch auch ein Kompilierzeit-Konstrukt, so dass der Datensatzname keine Variable sein kann. Daher benötigen Sie eine Klausel für jeden Datensatz, den Sie konvertieren möchten.

    
Lukas 21.09.2010 13:30
quelle
0

Die akzeptierte Antwort dafür ist schon lange tot.

Die kurze Antwort besteht darin, Exprecs von Ulf Wiger zu verwenden.

exprecs ist eine parse_transform in uwiger / parse_trans

Der Artikel, wie das funktioniert, ist im Webarchiv unter: Ссылка

    
chops 27.01.2018 18:22
quelle

Tags und Links