Plugins
Klar, das mache ich gerne! Hier ist eine strukturierte Dokumentation deines Plugin-Formats in Markdown. Ich habe die Syntax-Elemente wie @plugin, ###BLOCKDEF, das {{ }} Pattern sowie die Sektions-Marker #:: übersichtlich aufbereitet.
Dokumentation: RAG Demo Blocks Plugin
Diese Datei definiert benutzerdefinierte Blöcke für eine Blockly-Umgebung. Sie nutzt ein spezielles Tagging-System, um UI-Elemente, Code-Generierung und Schnittstellen-Typen zu definieren.
Globale Metadaten
- @plugin: Definiert den Namen des Plugins.
- Beispiel:
@plugin:RAG Demo Blocks
Struktur eines Blocks (###BLOCKDEF)
Jeder Block wird durch den Seperator ###BLOCKDEF eingeleitet und besteht aus zwei Hauptteilen:
1. Definition der Oberfläche (#::block)
Hier wird festgelegt, wie der Block im Editor aussieht.
- @output: Kennzeichnet den Block als "Reporter"- oder "Value"-Block (er gibt einen Wert zurück). Ohne dieses Tag ist es ein Standard-Anweisungsblock.
- **Platzhalter-Pattern
{{name:typ=standardwert}}**: name: Die ID der Variable.typ: Bestimmt das UI-Element (siehe Tabelle unten).standardwert(optional): Setzt einen Default-Wert.
| Typ | Beschreibung | Beispiel Syntax |
|---|---|---|
text | Ein einfaches Textfeld. | {{id:text=Standard}} |
number | Ein numerisches Eingabefeld. | {{id:number=0}} |
dropdown | Eine Liste von Optionen (trenne Text/Wert mit ` | `). |
checkbox | Ein Boolean-Schalter (true/false). | {{id:checkbox=true}} |
statement | Ein Slot für verschachtelte Blöcke. | {{id:statement}} |
2. Definition der Logik (#::code)
Hier steht das Code-Template, das generiert wird, wenn der Block benutzt wird.
- Variablen aus dem
#::block-Teil werden hier über{{name}}referenziert.
Beispiele aus der Definition
Standard-Eingabentypen
Ein Block, der verschiedene Feldtypen demonstriert:
#::block
Einfache Zahl: {{myNumber:number=10}}
Dropdown: {{mySelect:dropdown=A,B,C}}
#::code
// Generierter Code nutzt die Werte:
const val = {{myNumber}};
console.log("{{mySelect}}");
Rückgabewerte (@output)
Wenn ein Block ein Ergebnis für andere Blöcke bereitstellen soll:
#::block
@output Berechne Plus Eins: {{input:number}}
#::code
{{input}} + 1
Verschachtelung (Statements)
Blöcke, die andere Blöcke umschließen (z.B. Schleifen oder Container):
#::block
Führe aus: {{actions:statement}}
#::code
{{actions}}
Syntax-Zusammenfassung
###BLOCKDEF: Trenner zwischen einzelnen Blöcken.#::block: Startet das UI-Layout.#::code: Startet das Code-Template.{{ID:TYPE}}: Dynamisches Eingabefeld.