modm_data.html.stmicro.helper
1# Copyright 2022, Niklas Hauser 2# SPDX-License-Identifier: MPL-2.0 3 4import re 5 6 7def split_package(package): 8 pattern = r"(LFBGA|TFBGA|UFBGA|LQFP|SO|TSSOP|UFQFPN|VFQFPN|E?WLCSP)(\d+)" 9 if match := re.search(pattern, package): 10 return (match.group(0), match.group(1), int(match.group(2))) 11 return None 12 13 14def split_device_filter(device_filter: str) -> list[str]: 15 devices = [] 16 if len(parts := device_filter.split("/")) >= 2: 17 base = parts[0] 18 devices.append(base) 19 base = base[:-len(parts[1])] 20 for part in parts[1:]: 21 devices.append(base + part) 22 else: 23 devices.append(device_filter) 24 return devices 25 26 27def device_filter_from(caption: str) -> list[str]: 28 if devices := re.findall(r"(STM32[\w/]+)", caption): 29 devices = [d for device in devices for d in split_device_filter(device)] 30 return "|".join(d.replace("x", ".") for d in sorted(devices)).lower() 31 return "" 32 33 34def find_device_filter(did, device_filters): 35 for dfilter in list(sorted(device_filters, key=lambda d: -len(d))): 36 if re.match(dfilter, did.string) or dfilter == "": 37 return dfilter 38 return None
def
split_package(package):
def
split_device_filter(device_filter: str) -> list[str]:
15def split_device_filter(device_filter: str) -> list[str]: 16 devices = [] 17 if len(parts := device_filter.split("/")) >= 2: 18 base = parts[0] 19 devices.append(base) 20 base = base[:-len(parts[1])] 21 for part in parts[1:]: 22 devices.append(base + part) 23 else: 24 devices.append(device_filter) 25 return devices
def
device_filter_from(caption: str) -> list[str]:
def
find_device_filter(did, device_filters):