import logging from highlight_regex import HighlightRegex from raven.settings.settings import Settings log = logging.getLogger("highlighting") class Highlighting: @staticmethod def read_config(settings: Settings) -> [HighlightRegex]: result = [] session = settings.session for section in session.sections(): if not section.startswith("highlighting."): continue query = session.get(section, "query", fallback="") if len(query) == 0: continue ignore_case = session.getboolean(section, "ignore-case", fallback=True) is_regex = session.getboolean(section, "is-regex", fallback=False) line_background_color = session.get(section, "line.background.color", fallback="None") hit_background_color = session.get(section, "hit.background.color", fallback="None") try: highlight = HighlightRegex( query=query, ignore_case=ignore_case, is_regex=is_regex, hit_background_color=hit_background_color, line_background_color=line_background_color ) result.append(highlight) except: log.exception("failed to parse query for highlighter: %s" % section) continue return result @staticmethod def write_config(settings: Settings, highlighters: [HighlightRegex]): Highlighting.remove_highlighting_sections(settings) section_counter = 0 for highlighter in highlighters: highlighter: HighlightRegex = highlighter section = "highlighting.%d" % section_counter section_counter = section_counter + 1 settings.session.add_section(section) settings.session.set(section, "query", highlighter.query) settings.session.set(section, "ignore-case", str(highlighter.ignore_case)) settings.session.set(section, "is-regex", str(highlighter.is_regex)) settings.session.set(section, "line.background.color", highlighter.line_background_color) settings.session.set(section, "hit.background.color", highlighter.hit_background_color) @staticmethod def remove_highlighting_sections(settings: Settings): for section in settings.session.sections(): if not section.startswith("highlighting."): continue settings.session.remove_section(section)