"""Keep stored text free of emoji and decorative symbols."""
import re

_EMOJI = (
    '\U0001F300-\U0001FAFF\U0001F000-\U0001F2FF\u2600-\u27BF\u2B50-\u2B55\u2B05-\u2B07\u2705\u274C\u2728'
    '\u23E9-\u23FA\u25AA\u25AB\u25CF\u25E6\u25FB-\u25FE\u2194-\u2199\u21A9\u21AA\uFE0F\uFE0E\u200D\u20E3'
)
_EMOJI_RUN = re.compile('[%s]+' % _EMOJI)
_LINE_START = re.compile(r'^([ \t]*)[%s]+[ \t]*(?=\S)' % _EMOJI, re.M)
_SPACES = re.compile(r'[ \t]{2,}')


def strip_emoji(value, bullets=False):
    """Remove emoji. With bullets=True an emoji at the start of a line becomes a plain '- ' list marker."""
    if not value:
        return value
    text = str(value)
    if bullets:
        text = _LINE_START.sub(lambda m: m.group(1) + '- ', text)
    text = _EMOJI_RUN.sub('', text)
    text = _SPACES.sub(' ', text)
    return '\n'.join(line.rstrip() for line in text.split('\n')).strip('\n ') if '\n' in text else text.strip()
