Arbre récursif

PlcData Builder ne permet pas seulement de créer des structures de données.
En fait, PlcData Builder peut aussi compiler des blocs de programme SCL, STL.

Plc Source Tree Builder

      

import PlcSourceTreeBuilder from "@adclz/plcdatabuilder/tree";
 
const MyPlcSourceTree = new PlcSourceTreeBuilder("MySourceTree")
const MyPlcSourceTree: PlcSourceTreeBuilder
 

PlcSourceTree permet de créer une structure de fichiers avec une syntaxe similaire au schéma d'URI "file".
Vous pouvez rajouter des blocs de programmes, de données, d'Udt, ou une source déjà prête.

🏗️ Constructeur

PlcSourceTree.prototype.constructor = (Name: string, Override: boolean = false) => PlcSourceTree

Name

Type: String

Nom de l'arbre.

Override

Type: Boolean

Précise si les blocs déjà existants peuvent être écrasés ou non.

🧪 Méthodes

createBlock

PlcSourceTreeBuilder.prototype.createBlock = (Uri: string, File: DataBlock<any>) => void

Vous pouvez fournir un DataBlock en utilisant la méthode createBlock

      

import {DataBlock, Bool} from "@adclz/plcdatabuilder/types";
import PlcSourceTreeBuilder from "@adclz/plcdatabuilder/tree";
 
const MyPlcSourceTree = new PlcSourceTreeBuilder("MySourceTree")
 
const MyDataBlock = new DataBlock({Name: "MyDataBlock", Content: { "MyProperty": new Bool({}) }})
 
// Root - '/MyDataBlock'
MyPlcSourceTree.createBlock("", MyDataBlock)
 
const MyDataBlock2 = new DataBlock({Name: "MyDataBlock2", Content: { "MyProperty": new Bool({}) }})
 
// Crée un dossier - '/Folder/MyDataBlock'
MyPlcSourceTree.createBlock("/Folder", MyDataBlock)
 

createUdt

PlcSourceTreeBuilder.prototype.createUdt = (Uri: string, UDT: UDT<any, any, any>) => void

Vous pouvez fournir un UDT en utilisant la méthode createUdt

Les structures récursives ne fonctionnent pas avec les UDT, vos fichiers UDT seront compilés à la racine
      

import {UDT, Bool} from "@adclz/plcdatabuilder/types";
import PlcSourceTreeBuilder from "@adclz/plcdatabuilder/tree";
 
const MyPlcSourceTree = new PlcSourceTreeBuilder("MySourceTree")
 
const MyUdt = new UDT({Name: "MyUdt", Version: 0.1, Content: {"MyProperty1": new Bool({})}})
 
// Root - '/MyUdt'
MyPlcSourceTree.createUdt("", MyUdt)
 

getBlock

PlcSourceTreeBuilder.prototype.getBlock = (Uri: string) => DataBlock<any> | undefined

Retourne un bloc de l'arbre si il existe.

getUdt

PlcSourceTreeBuilder.prototype.getUdt = (Uri: string) => UDT<any, any, any> | undefined

Retourne un Udt de l'arbre si il existe.

Compile

PlcSourceTreeBuilder.prototype.Compile = () => PlcSourceTree

Crée la structure récursive de l'arbre.

interface SourceBlock {
    Name: string,
    Source: string[]
    Override: boolean
}

interface Folder {
    Name: string
    Folders?: Folder[]
    Blocks?: SourceBlock[]
}

interface PlcSourceTree {
    Name: string,
    PlcBlocks?: Folder,
    UdtBlocks?: Folder,
    Override?: boolean
}