def METHOD_NAME(self, m, data):
    """Handle the match."""
    label = ""
    level_class = self.config.get('level_class', False)
    increment = self.config.get('progress_increment', 20)
    add_classes = []
    alist = None
    if m.group(5):
        label = dequote(self.unescape(m.group('title').strip()))
    if m.group('attr_list'):
        alist = m.group('attr_list')
    if m.group('percent'):
        value = float(m.group('percent'))
    else:
        try:
            num = float(m.group('frac_num'))
        except Exception:  # pragma: no cover
            num = 0.0
        try:
            den = float(m.group('frac_den'))
        except Exception:  # pragma: no cover
            den = 0.0
        if den == 0.0:
            value = 0.0
        else:
            value = (num / den) * 100.0
    # We can never get a value < 0,
    # but we must check for > 100.
    if value > 100.0:
        value = 100.0
    # Round down to nearest increment step and include class if desired
    if level_class:
        add_classes.append(CLASS_LEVEL % int(value - (value % increment)))
    return self.create_tag('%.2f' % value, label, add_classes, alist), m.start(0), m.end(0)