import re
import os


def get_emoji_content(filename):
    full_filename = os.path.join(os.path.dirname(__file__), 'emojis', filename)
    with open(full_filename, 'r') as fp:
        return fp.read()


def fix_emoji(value):
    """
    Replace some text emojis with pictures
    """
    emojis = {
        '(+)': get_emoji_content('plus.html'),
        '(-)': get_emoji_content('minus.html'),
        '(?)': get_emoji_content('question.html'),
        '(!)': get_emoji_content('alarm.html'),
        '(/)': get_emoji_content('check.html'),
    }
    for e in emojis:
        value = value.replace(e, emojis[e])
    return value


def cleanup(value):
    value = re.sub('\{code.*?\}.*?\{code\}', ' ', value, 0, re.S)
    return re.sub('\{noformat.*?\}.*?\{noformat\}', ' ', value, 0, re.S)

import re
import os


def get_emoji_content(filename):
    full_filename = os.path.join(os.path.dirname(__file__), 'emojis', filename)
    with open(full_filename, 'r') as fp:
        return fp.read()


def fix_emoji(value):
    """
    Replace some text emojis with pictures
    """
    emojis = {
        '(+)': get_emoji_content('plus.html'),
        '(-)': get_emoji_content('minus.html'),
        '(?)': get_emoji_content('question.html'),
        '(!)': get_emoji_content('alarm.html'),
        '(/)': get_emoji_content('check.html'),
    }
    for e in emojis:
        value = value.replace(e, emojis[e])
    return value


def cleanup(value):
    """
    Remove {code}...{/code} and {noformat}...{noformat} fragments from worklog comment
    :param value: worklog comment text
    :return: cleaned worklog comment text
    """
    value = re.sub('\{code.*?\}.*?\{.*?code\}', ' ', value, 0, re.S)
    return re.sub('\{noformat.*?\}.*?\{noformat\}', ' ', value, 0, re.S)

Fix small issue in the cleanup filter. It now supports {/code} closing tag (was only {code})
Fix small issue in the cleanup filter. It now supports {/code} closing tag (was only {code})

  import re
  import os
  
  
  def get_emoji_content(filename):
      full_filename = os.path.join(os.path.dirname(__file__), 'emojis', filename)
      with open(full_filename, 'r') as fp:
          return fp.read()
  
  
  def fix_emoji(value):
      """
      Replace some text emojis with pictures
      """
      emojis = {
          '(+)': get_emoji_content('plus.html'),
          '(-)': get_emoji_content('minus.html'),
          '(?)': get_emoji_content('question.html'),
          '(!)': get_emoji_content('alarm.html'),
          '(/)': get_emoji_content('check.html'),
      }
      for e in emojis:
          value = value.replace(e, emojis[e])
      return value
  
  
  def cleanup(value):
+     """
+     Remove {code}...{/code} and {noformat}...{noformat} fragments from worklog comment
+     :param value: worklog comment text
+     :return: cleaned worklog comment text
+     """
-     value = re.sub('\{code.*?\}.*?\{code\}', ' ', value, 0, re.S)
+     value = re.sub('\{code.*?\}.*?\{.*?code\}', ' ', value, 0, re.S)
      return re.sub('\{noformat.*?\}.*?\{noformat\}', ' ', value, 0, re.S)
  
Fix small issue in the cleanup filter. It now supports {/code} closing tag (was only {code})
## Code Before:
import re
import os


def get_emoji_content(filename):
    full_filename = os.path.join(os.path.dirname(__file__), 'emojis', filename)
    with open(full_filename, 'r') as fp:
        return fp.read()


def fix_emoji(value):
    """
    Replace some text emojis with pictures
    """
    emojis = {
        '(+)': get_emoji_content('plus.html'),
        '(-)': get_emoji_content('minus.html'),
        '(?)': get_emoji_content('question.html'),
        '(!)': get_emoji_content('alarm.html'),
        '(/)': get_emoji_content('check.html'),
    }
    for e in emojis:
        value = value.replace(e, emojis[e])
    return value


def cleanup(value):
    value = re.sub('\{code.*?\}.*?\{code\}', ' ', value, 0, re.S)
    return re.sub('\{noformat.*?\}.*?\{noformat\}', ' ', value, 0, re.S)

## Instruction:
Fix small issue in the cleanup filter. It now supports {/code} closing tag (was only {code})
## Code After:
import re
import os


def get_emoji_content(filename):
    full_filename = os.path.join(os.path.dirname(__file__), 'emojis', filename)
    with open(full_filename, 'r') as fp:
        return fp.read()


def fix_emoji(value):
    """
    Replace some text emojis with pictures
    """
    emojis = {
        '(+)': get_emoji_content('plus.html'),
        '(-)': get_emoji_content('minus.html'),
        '(?)': get_emoji_content('question.html'),
        '(!)': get_emoji_content('alarm.html'),
        '(/)': get_emoji_content('check.html'),
    }
    for e in emojis:
        value = value.replace(e, emojis[e])
    return value


def cleanup(value):
    """
    Remove {code}...{/code} and {noformat}...{noformat} fragments from worklog comment
    :param value: worklog comment text
    :return: cleaned worklog comment text
    """
    value = re.sub('\{code.*?\}.*?\{.*?code\}', ' ', value, 0, re.S)
    return re.sub('\{noformat.*?\}.*?\{noformat\}', ' ', value, 0, re.S)
