Source code for dfwinreg.key_paths

# -*- coding: utf-8 -*-
"""Key path functions."""

from dfwinreg import definitions

[docs]def JoinKeyPath(path_segments): """Joins the path segments into key path. Args: path_segments (list[str]): Windows Registry key path segments. Returns: str: key path. """ # This is an optimized way to combine the path segments into a single path # and combine multiple successive path separators to one. # Split all the path segments based on the path (segment) separator. path_segments = [ segment.split(definitions.KEY_PATH_SEPARATOR) for segment in path_segments] # Flatten the sublists into one list. path_segments = [ element for sublist in path_segments for element in sublist] # Remove empty path segments. path_segments = filter(None, path_segments) key_path = definitions.KEY_PATH_SEPARATOR.join(path_segments) if not key_path.startswith('HKEY_'): key_path = ''.join([definitions.KEY_PATH_SEPARATOR, key_path]) return key_path
[docs]def SplitKeyPath(key_path, path_separator=definitions.KEY_PATH_SEPARATOR): """Splits the key path into path segments. Args: key_path (str): key path. path_separator (Optional[str]): path separator. Returns: list[str]: key path segments without the root path segment, which is an empty string. """ # Split the path with the path separator and remove empty path segments. return list(filter(None, key_path.split(path_separator)))