cybop-developers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [cybop-developers] CYBOP API dynamisch generieren


From: Enrico Gallus
Subject: Re: [cybop-developers] CYBOP API dynamisch generieren
Date: Thu, 12 Jul 2012 18:47:17 -0400

Guten Abend Herr Heller,

ich habe vor 2 Tagen meine Anpassungen ins Repository übertragen.
Momentan ist das Iterieren durch die ersten zwei Ebenen implementiert. Ich besitze auch Zugriff auf alle Informationen. Tue mich aber gerade noch schwer damit die Informationen in HTML-Templates zu integrieren und diese Templates in die Index.html einzubinden. Ich werde mich nächste Woche mit diesen Problem auseinandersetzen. Wenn dieser Workflow dann auch funktioniert, ist es kein Problem dies auch für die anderen Ebenen zu realisieren.

Das Implementieren der Count-Methode hat mich auf jedenfall einen Schritt weiter gebracht. Allerdings helfe ich mir gerade noch mit einen "Dirty Hack", um den gewünschten Part aus den cybol-Dateien zu holen. In der 'translate_specification.cybol', welche sich im 'logic' verzeichniss befindet, hole ich einen von mir direkt addressierten 'part'. Zum Erfüllen meiner ToDo's benötige ich eine entsprechende Methode die den 'part' anhand eines übergebenen Index holt.
Ich hatte mir etwas in der folgenden Art vorgestellt (Ich hoffe Sie auch):
<part name="get_specification_by_index" channel="inline" encoding="utf-8" language="text/cybol" format="access/get" model="">
    <property name="result" channel="inline" encoding="utf-8" language="text/cybol" format="path/knowledge" model=".temp_specification"/>
    <property name="model" channel="inline" encoding="utf-8" language="text/cybol" format="path/knowledge" model=".specification"/>
    <property name="index" channel="inline" encoding="utf-8" language="text/cybol" format="path/knowledge" model=".temporary.loop_index"/>
</part>

Ich hatte auch eine Änderung an der 'specification.cybol' Datei vorgenommen. Oder gibt es eine Funktion mit der ich den Namen eines 'part' auslesen kann? Haben Sie andere Vorschläge?

Ich würde mich freuen, wenn Sie Zeit für ein Code-Review finden.

Viele Grüße

Enrico Gallus



Am 4. Juli 2012 17:26 schrieb Christian Heller <address@hidden>:
Hallo Herr Gallus,

vielen Dank für Ihre Nachricht.
Hatte sie am letzten Samstag abgerufen, aber noch nicht antworten können.

Ich schaue im Urlaub aus Prinzip nicht in meine Arbeits-E-Mails.
Falls Sie zwischenzeitlich noch eine zum Thema CYBOP geschrieben haben,
so senden Sie sie bitte erneut an die Mailing List:
<address@hidden>
oder an meine Entwickleradresse:
<address@hidden>

Nun zum Thema:

Sie wollten kein Fließband- bzw. Fleißthema, sondern ein Forschungsthema
haben. Dabei gibt es nun noch offene Stellen und fehlende Implementierung
an zwei Stellen meinerseits. Auf die Schnelle ein paar Antworten, die
evtl. etwas helfen:

> ich habe mir die Struktur des API Generators genaustens angeschaut, um die
> dynamische Generierung umzusetzen.
> In der run.cybol rufe ich anstelle der "translate_property.cybol" (die nur
> statisch einen wert in die html datei schreibt) die
> "translate_specification.cybol" auf.

Klingt gut und richtig.

> Hierbei wollte ich die Schleife nutzen, um die Eintragungen in der
> "specification.cybol" als Überschrift in die Index.html zu drucken.

Zur Verwendung von Schleifen siehe Beispiel:
examples/shell_output_loop/
Beachte den comparison break test VOR Aufruf der Schleife UND im
Schleifenkörper!

> Nach langer und aufwendiger Suche habe ich dank dem "model-baum"
> herausgefunden das der Teil ".temporary" im Wissensbaum nicht existiert.
> Als ich die deklarierten Variablen in der Datei im Order Temporary dem
> Wissenbaum unter dem erwarteten Knoten ".temporary" hinzugefügt hatte,

Richtig gemacht.

> musste ich feststellen, dass die von ihnen verwendeten Variablennamen
> ("translate_specification.cybol", "translate_topic.cybol") mit den
> deklarierten Variablennamen in "translate_content_to_wui.cybol" nicht
> übereinstimmen.

Ich hatte nur Fragmente codiert, die noch nicht alle zusammen passten
und noch nicht alle erzeugt wurden.

> Nachdem ich auch dies behoben hatte, funktionierte die Schleife immer noch
> nicht. Nach erneut langem suchen fand ich die Methode "modify/get-count"
> mit den Eigenschaften namens "count" und "model". Ich konnte die Methode
> nirgendwo in der API finden!?

Diese Operation ist durch mich NOCH ZU IMPLEMENTIEREN. Auch die folgende:
modify/get bzw. modify/get_model_part_at_index (oder so ähnlicher Name)

> Deswegen habe ich die Methode durch die "modify/count" methode
> ausgetauscht.

Richtig gemacht. Eine "get-count" gibt es NICHT.
Die Operation "modify/count" hatte ich kürzlich implementiert, aber
NOCH NICHT GETESTET. Vermutlich fehlt noch was.

> Allerdings zeigt mir die Ausgabe des "model-baum" das sich
> der wert der variable im Wissensbaum nicht ändert. Die Variable mit diesen
> Namen an der Stelle im Wissensbaum existiert und ist mit dem Wert "0"
> initialisiert.

> <part name="count_specifications" channel="inline" encoding="utf-8"
> language="text/cybol" format="modify/count" model="">
>         <property name="result" channel="inline" encoding="utf-8"
> language="text/cybol" format="path/knowledge"
> model=".temporary.loop_count"/>
>         <property name="compound" channel="inline" encoding="utf-8"
> language="text/cybol" format="path/knowledge" model=".specification"/>
>  </part>

Siehe aktuell geforderte Properties in Datei:
applicator/modify/count.c

Aber hier muss ich noch was Kleines programmieren. Geht noch nicht.

> Ich habe ein "communicate/send" vor und nach diese Zeile and die Konsole
> hinzgefügt (natürlich unter verwendung des path/knowledge formats)an der
> ich die Variable ".temporary.loop_count" ausgeben möchte. Allerdings
> erscheint nichts davon auf der Konsole, wenn ich die run.cybol ausführe.
> Ein send an die Console mit einen "text/plain" in der logik-Datei wird
> angezeigt, was bedeutet das er diese sequentiell abarbeitet.
>
> Übersehe ich hierbei irgendetwas?

Die Ursache ist wahrscheinlich, dass Sie für "send" angegeben haben:
        <property name="format" channel="inline" encoding="utf-8" language="text/cybol" format="meta/format" model="element/part"/>
Doch für die Variable ".temporary.loop_count" als primitiven Datentypen
ist statt "element/part" Folgendes zu verwenden:
        <property name="format" channel="inline" encoding="utf-8" language="text/cybol" format="meta/format" model="number/integer"/>

Bitte checken Sie mal Ihren aktuellen Stand ein.
Vielleicht finde ich die Zeit, mal drüber zu schauen.
Ansonsten können Sie die Zeit ja erstmal mit Fleißarbeit (Spezifikation)
überbrücken :)

Viele Grüße!
Christian Heller

--
Reform our monetary system!
Use community currencies!
Central banks like FED are private. Let the state issue money!
http://www.humane-wirtschaft.de/beitraege/in-english/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]