1
0
mirror of https://github.com/esphome/esphome.git synced 2025-10-22 11:43:51 +01:00

[substitutions] implement !literal (#10785)

This commit is contained in:
Javier Peletier
2025-09-22 06:32:59 +02:00
committed by GitHub
parent 68eb4091b8
commit 7629903afb
5 changed files with 30 additions and 9 deletions

View File

@@ -69,7 +69,7 @@ class ESPHomeDataBase:
self._content_offset = database.content_offset
class ESPForceValue:
class ESPLiteralValue:
pass
@@ -348,9 +348,15 @@ class ESPHomeLoaderMixin:
return Lambda(str(node.value))
@_add_data_ref
def construct_force(self, node: yaml.Node) -> ESPForceValue:
obj = self.construct_scalar(node)
return add_class_to_obj(obj, ESPForceValue)
def construct_literal(self, node: yaml.Node) -> ESPLiteralValue:
obj = None
if isinstance(node, yaml.ScalarNode):
obj = self.construct_scalar(node)
elif isinstance(node, yaml.SequenceNode):
obj = self.construct_sequence(node)
elif isinstance(node, yaml.MappingNode):
obj = self.construct_mapping(node)
return add_class_to_obj(obj, ESPLiteralValue)
@_add_data_ref
def construct_extend(self, node: yaml.Node) -> Extend:
@@ -407,7 +413,7 @@ for _loader in (ESPHomeLoader, ESPHomePurePythonLoader):
"!include_dir_merge_named", _loader.construct_include_dir_merge_named
)
_loader.add_constructor("!lambda", _loader.construct_lambda)
_loader.add_constructor("!force", _loader.construct_force)
_loader.add_constructor("!literal", _loader.construct_literal)
_loader.add_constructor("!extend", _loader.construct_extend)
_loader.add_constructor("!remove", _loader.construct_remove)