mirror of
https://github.com/esphome/esphome.git
synced 2025-09-02 11:22:24 +01:00
50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
import re
|
|
|
|
from esphome import config_validation as cv
|
|
from esphome.const import CONF_ARGS, CONF_FORMAT
|
|
|
|
lv_uses = {
|
|
"USER_DATA",
|
|
"LOG",
|
|
"STYLE",
|
|
"FONT_PLACEHOLDER",
|
|
"THEME_DEFAULT",
|
|
}
|
|
|
|
|
|
def add_lv_use(*names):
|
|
for name in names:
|
|
lv_uses.add(name)
|
|
|
|
|
|
lv_fonts_used = set()
|
|
esphome_fonts_used = set()
|
|
lvgl_components_required = set()
|
|
|
|
|
|
def validate_printf(value):
|
|
cfmt = r"""
|
|
( # start of capture group 1
|
|
% # literal "%"
|
|
(?:[-+0 #]{0,5}) # optional flags
|
|
(?:\d+|\*)? # width
|
|
(?:\.(?:\d+|\*))? # precision
|
|
(?:h|l|ll|w|I|I32|I64)? # size
|
|
[cCdiouxXeEfgGaAnpsSZ] # type
|
|
)
|
|
""" # noqa
|
|
matches = re.findall(cfmt, value[CONF_FORMAT], flags=re.VERBOSE)
|
|
if len(matches) != len(value[CONF_ARGS]):
|
|
raise cv.Invalid(
|
|
f"Found {len(matches)} printf-patterns ({', '.join(matches)}), but {len(value[CONF_ARGS])} args were given!"
|
|
)
|
|
return value
|
|
|
|
|
|
def requires_component(comp):
|
|
def validator(value):
|
|
lvgl_components_required.add(comp)
|
|
return cv.requires_component(comp)(value)
|
|
|
|
return validator
|