"""
Settings that modify processing of user text input
"""
from askbot.conf.settings_wrapper import settings
from askbot.conf.super_groups import DATA_AND_FORMATTING
from askbot.deps.livesettings import ConfigurationGroup
from askbot.deps.livesettings import BooleanValue, StringValue, LongStringValue
from askbot import const
from django.utils.translation import ugettext_lazy as _
import re
MARKUP = ConfigurationGroup(
'MARKUP',
_('Markup in posts'),
super_group = DATA_AND_FORMATTING
)
def regex_settings_validation(*args):
"""
Validate the regular expressions
"""
try:
new_value = args[1]
regex_list = new_value.split('\n')
for i in range(0, len(regex_list)):
re.compile(regex_list[i].strip())
return args[1]
except Exception:
# The regex is invalid, so we overwrite it with empty string
return ""
settings.register(
BooleanValue(
MARKUP,
'MARKUP_CODE_FRIENDLY',
description = _('Enable code-friendly Markdown'),
help_text = _(
'If checked, underscore characters will not '
'trigger italic or bold formatting - '
'bold and italic text can still be marked up '
'with asterisks. Note that "MathJax support" '
'implicitly turns this feature on, because '
'underscores are heavily used in LaTeX input.'
),
default = False
)
)
settings.register(
BooleanValue(
MARKUP,
'ENABLE_MATHJAX',
description=_('Mathjax support (rendering of LaTeX)'),
help_text=_(
'If you enable this feature, '
'mathjax must be '
'installed on your server in its own directory.'
) % {
'url': const.DEPENDENCY_URLS['mathjax'],
},
default = False
)
)
settings.register(
StringValue(
MARKUP,
'MATHJAX_BASE_URL',
description=_('Base url of MathJax deployment'),
help_text=_(
'Note - MathJax is not included with '
'askbot - you should deploy it yourself, '
'preferably at a separate domain and enter url '
'pointing to the "mathjax" directory '
'(for example: http://mysite.com/mathjax)'
),
default = ''
)
)
settings.register(
BooleanValue(
MARKUP,
'ENABLE_AUTO_LINKING',
description=_('Enable autolinking with specific patterns'),
help_text=_(
'If you enable this feature, '
'the application will be able to '
'detect patterns and auto link to URLs'
),
default = False
)
)
settings.register(
LongStringValue(
MARKUP,
'AUTO_LINK_PATTERNS',
description=_('Regexes to detect the link patterns'),
help_text=_(
'Enter valid regular expressions for the patters,'
' one per line.'
' For example to'
' detect a bug pattern like #bug123,'
' use the following regex: #bug(\d+). The numbers'
' captured by the pattern in the parentheses will'
' be transferred to the link url template.'
' Please look up more information about regular'
' expressions elsewhere.'
),
update_callback=regex_settings_validation,
default = ''
)
)
settings.register(
LongStringValue(
MARKUP,
'AUTO_LINK_URLS',
description=_('URLs for autolinking'),
help_text=_(
'Here, please enter url templates for the patterns'
' entered in the previous setting, also one entry per line.'
' Make sure that number of lines in this setting'
' and the previous one are the same'
' For example template'
' https://bugzilla.redhat.com/show_bug.cgi?id=\\1'
' together with the pattern shown above'
' and the entry in the post #123'
' will produce link to the bug 123 in the redhat bug tracker.'
),
default = ''
)
)