#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Utils for re module
"""

from rebulk.remodule import re


def build_or_pattern(patterns, name=None, escape=False):
    """
    Build a or pattern string from a list of possible patterns

    :param patterns:
    :type patterns:
    :param name:
    :type name:
    :param escape:
    :type escape:
    :return:
    :rtype:
    """
    or_pattern = []
    for pattern in patterns:
        if not or_pattern:
            or_pattern.append('(?')
            if name:
                or_pattern.append(f'P<{name}>')
            else:
                or_pattern.append(':')
        else:
            or_pattern.append('|')
        or_pattern.append(f'(?:{re.escape(pattern)})' if escape else pattern)
    or_pattern.append(')')
    return ''.join(or_pattern)
