Skip to main content

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.
TypBeschreibungBeispiel Syntax
textEin einfaches Textfeld.{{id:text=Standard}}
numberEin numerisches Eingabefeld.{{id:number=0}}
dropdownEine Liste von Optionen (trenne Text/Wert mit ``).
checkboxEin Boolean-Schalter (true/false).{{id:checkbox=true}}
statementEin 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.