# String format

Przetwarzanie

Formatuje tekst na podstawie wzorca z wejścia, podstawiając wartości w miejsce znaczników {}. Wyjście jest wstrzymane do momentu odebrania wzorca i wszystkich wymaganych wartości.

String format
P
1
2
3
4
T

# Wejścia

IDSkrótNazwaTypDomyślnieOpis
patternPWzorzecSTRINGWzorzec formatowania tekstu. Użyj {} jako znacznika dla kolejnych wartości wejściowych (np. "Temperatura: {} C, Wilgotność: {} %"). Może być dostarczony przez blok Stała tekstowa.
v11Wartość 1STRINGPierwsza wartość podstawiana do wzorca.
v22Wartość 2STRINGDruga wartość podstawiana do wzorca.
v33Wartość 3STRINGTrzecia wartość podstawiana do wzorca.
v44Wartość 4STRINGCzwarta wartość podstawiana do wzorca.

# Wyjścia

IDSkrótNazwaTypDomyślnieOpis
textTTekstSTRINGSformatowany tekst z podstawionymi wartościami wejściowymi.

# Konfiguracja

IDNazwaTypDomyślnieJednostkaOpis
trigger_on_patternWyzwól na wzorcuBOOLEANfalseGdy włączone, zmiana wzorca wyzwala przeliczenie wyjścia. Gdy wyłączone, zmiana wzorca jest zapisywana bez wyzwalania.
trigger_on_v1Wyzwól na V1BOOLEANtrueGdy włączone, zmiana Wartości 1 wyzwala przeliczenie wyjścia. Gdy wyłączone, zmiana jest zapisywana bez wyzwalania.
trigger_on_v2Wyzwól na V2BOOLEANtrueGdy włączone, zmiana Wartości 2 wyzwala przeliczenie wyjścia. Gdy wyłączone, zmiana jest zapisywana bez wyzwalania.
trigger_on_v3Wyzwól na V3BOOLEANtrueGdy włączone, zmiana Wartości 3 wyzwala przeliczenie wyjścia. Gdy wyłączone, zmiana jest zapisywana bez wyzwalania.
trigger_on_v4Wyzwól na V4BOOLEANtrueGdy włączone, zmiana Wartości 4 wyzwala przeliczenie wyjścia. Gdy wyłączone, zmiana jest zapisywana bez wyzwalania.

# Stan

IDNazwaTypDomyślnieJednostkaOpis
has_patternWzorzec odebranyBOOLEANfalseŚledzi, czy wejście wzorca zostało odebrane przynajmniej raz.
has_v1Wartość 1 odebranaBOOLEANfalseŚledzi, czy wejście v1 zostało odebrane przynajmniej raz.
has_v2Wartość 2 odebranaBOOLEANfalseŚledzi, czy wejście v2 zostało odebrane przynajmniej raz.
has_v3Wartość 3 odebranaBOOLEANfalseŚledzi, czy wejście v3 zostało odebrane przynajmniej raz.
has_v4Wartość 4 odebranaBOOLEANfalseŚledzi, czy wejście v4 zostało odebrane przynajmniej raz.

# Kod źródłowy

Pokaż kod Volang
channel = input::channel()

if (channel == "pattern") {
    state::set("has_pattern", true)
}
if (channel == "v1") {
    state::set("has_v1", true)
}
if (channel == "v2") {
    state::set("has_v2", true)
}
if (channel == "v3") {
    state::set("has_v3", true)
}
if (channel == "v4") {
    state::set("has_v4", true)
}

if (!state::get("has_pattern")) {
    return
}

trigger = false
if (channel == "pattern" and config::get("trigger_on_pattern")) {
    trigger = true
}
if (channel == "v1" and config::get("trigger_on_v1")) {
    trigger = true
}
if (channel == "v2" and config::get("trigger_on_v2")) {
    trigger = true
}
if (channel == "v3" and config::get("trigger_on_v3")) {
    trigger = true
}
if (channel == "v4" and config::get("trigger_on_v4")) {
    trigger = true
}

if (!trigger) {
    return
}

pattern = input::get("pattern")
v1 = input::get("v1")
v2 = input::get("v2")
v3 = input::get("v3")
v4 = input::get("v4")

count = str::count(pattern, "{}")

if (count >= 1 and !state::get("has_v1")) {
    return
}
if (count >= 2 and !state::get("has_v2")) {
    return
}
if (count >= 3 and !state::get("has_v3")) {
    return
}
if (count >= 4 and !state::get("has_v4")) {
    return
}

if (count == 0) {
    output::set("text", pattern)
} else if (count == 1) {
    output::set("text", str::fmt(pattern, v1))
} else if (count == 2) {
    output::set("text", str::fmt(pattern, v1, v2))
} else if (count == 3) {
    output::set("text", str::fmt(pattern, v1, v2, v3))
} else {
    output::set("text", str::fmt(pattern, v1, v2, v3, v4))
}
Formatuje tekst na podstawie wzorca z wejścia, podstawiając wartości w miejsce znaczników {}. Wyjście jest wstrzymane do momentu odebrania wzorca i wszystkich wymaganych wartości.