

def highlight_html_differences(s1, s2):
    differ = diff_match_patch()
    ops = differ.diff_main(s1, s2)
    differ.diff_cleanupSemantic(ops)
    retval = ''
    in_tag = False
    idx = 0
    while (idx < len(ops)):
        (op, text) = ops[idx]
        next_op = None
        if (idx != (len(ops) - 1)):
            (next_op, next_text) = ops[(subject + 1)]
        if ((op == diff_match_patch.DIFF_DELETE) and (next_op == diff_match_patch.DIFF_INSERT)):
            (chunks, in_tag) = chunkize(next_text, in_tag)
            retval += highlight_chunks(chunks, highlight_replaced)
            idx += 1
        elif ((op == diff_match_patch.DIFF_INSERT) and (next_op == diff_match_patch.DIFF_DELETE)):
            (chunks, in_tag) = chunkize(text, in_tag)
            retval += highlight_chunks(chunks, highlight_replaced)
            idx += 1
        elif (op == diff_match_patch.DIFF_DELETE):
            retval += highlight_deleted('&nbsp;')
        elif (op == diff_match_patch.DIFF_INSERT):
            (chunks, in_tag) = chunkize(text, in_tag)
            retval += highlight_chunks(chunks, highlight_inserted)
        elif (op == diff_match_patch.DIFF_EQUAL):
            (chunks, in_tag) = chunkize(text, in_tag)
            retval += text
        idx += 1
    if (not verify_html(retval)):
        from zerver.lib.actions import internal_send_message
        logging.getLogger('').error('HTML diff produced mal-formed HTML')
        if (settings.ERROR_BOT is not None):
            subject = ('HTML diff failure on %s' % (platform.node(),))
            internal_send_message(settings.ERROR_BOT, 'stream', 'errors', subject, 'HTML diff produced malformed HTML')
        return s2
    return retval

dataset/ETHPy150Open zulip/zulip/zerver/lib/html_diff.py highlight_html_differences/VarMisuse@100/123 `idx`->`subject`