From 8e3a7576ea403b5038d26795e1b869f30ba19408 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Thu, 1 Apr 2021 22:49:59 +0200 Subject: [PATCH] Align has template functions (#8784) Co-authored-by: Paulus Schoutsen --- src/common/string/has-template.ts | 5 +++-- src/data/script_i18n.ts | 10 +++++----- src/data/template.ts | 1 - .../developer-tools/service/developer-tools-service.ts | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) delete mode 100644 src/data/template.ts diff --git a/src/common/string/has-template.ts b/src/common/string/has-template.ts index b54af3307d..c86d7f6e8e 100644 --- a/src/common/string/has-template.ts +++ b/src/common/string/has-template.ts @@ -1,4 +1,5 @@ -const isTemplateRegex = new RegExp("{%|{{|{#"); +const isTemplateRegex = new RegExp("{%|{{"); + export const isTemplate = (value: string): boolean => isTemplateRegex.test(value); @@ -11,7 +12,7 @@ export const hasTemplate = (value: unknown): boolean => { } if (typeof value === "object") { const values = Array.isArray(value) ? value : Object.values(value!); - return values.some((val) => hasTemplate(val)); + return values.some((val) => val && hasTemplate(val)); } return false; }; diff --git a/src/data/script_i18n.ts b/src/data/script_i18n.ts index a1dd8fbdd8..3b20e12865 100644 --- a/src/data/script_i18n.ts +++ b/src/data/script_i18n.ts @@ -1,6 +1,7 @@ import secondsToDuration from "../common/datetime/seconds_to_duration"; import { ensureArray } from "../common/ensure-array"; import { computeStateName } from "../common/entity/compute_state_name"; +import { isTemplate } from "../common/string/has-template"; import { HomeAssistant } from "../types"; import { Condition } from "./automation"; import { describeCondition, describeTrigger } from "./automation_i18n"; @@ -14,7 +15,6 @@ import { VariablesAction, EventAction, } from "./script"; -import { isDynamicTemplate } from "./template"; export const describeAction = ( hass: HomeAssistant, @@ -35,7 +35,7 @@ export const describeAction = ( if ( config.service_template || - (config.service && isDynamicTemplate(config.service)) + (config.service && isTemplate(config.service)) ) { base = "Call a service based on a template"; } else if (config.service) { @@ -63,7 +63,7 @@ export const describeAction = ( let renderValues = true; for (const targetThing of keyConf) { - if (isDynamicTemplate(targetThing)) { + if (isTemplate(targetThing)) { targets.push(`templated ${label}`); renderValues = false; break; @@ -92,7 +92,7 @@ export const describeAction = ( if (typeof config.delay === "number") { duration = `for ${secondsToDuration(config.delay)!}`; } else if (typeof config.delay === "string") { - duration = isDynamicTemplate(config.delay) + duration = isTemplate(config.delay) ? "based on a template" : `for ${config.delay}`; } else { @@ -124,7 +124,7 @@ export const describeAction = ( if (actionType === "fire_event") { const config = action as EventAction; - if (isDynamicTemplate(config.event)) { + if (isTemplate(config.event)) { return "Fire event based on a template"; } return `Fire event ${config.event}`; diff --git a/src/data/template.ts b/src/data/template.ts deleted file mode 100644 index 452a36043a..0000000000 --- a/src/data/template.ts +++ /dev/null @@ -1 +0,0 @@ -export const isDynamicTemplate = (value: string) => value.includes("{{"); diff --git a/src/panels/developer-tools/service/developer-tools-service.ts b/src/panels/developer-tools/service/developer-tools-service.ts index 0f0452b823..4ad74bcd53 100644 --- a/src/panels/developer-tools/service/developer-tools-service.ts +++ b/src/panels/developer-tools/service/developer-tools-service.ts @@ -286,7 +286,7 @@ class HaPanelDevService extends LitElement { } private _checkUiSupported() { - if (hasTemplate(this._serviceData)) { + if (this._serviceData && hasTemplate(this._serviceData)) { this._yamlMode = true; this._uiAvailable = false; } else {