Я пытаюсь реализовать реализацию разметки github со вкусом, работающую на python, но без удачи ... У меня нет особых навыков в области регулярных выражений.
Вот код рубина от github :
# in very clear cases, let newlines become <br /> tags
text.gsub!(/(\A|^$\n)(^\w[^\n]*\n)(^\w[^\n]*$)+/m) do |x|
x.gsub(/^(.+)$/, "\\1 ")
end
И вот что я придумал в Python 2.5:
def newline_callback(matchobj):
return re.sub(r'^(.+)$','\1 ',matchobj.group(0))
text = re.sub(r'(\A|^$\n)(^\w[^\n]*\n)(^\w[^\n]*$)+', newline_callback, text)
Кажется, что никакого эффекта вообще нет: - /
Если у кого-нибудь есть полностью работоспособная реализация github, уцененная в python, кроме этой (кажется, не работает для новых строк), я бы хотел услышать об этом. Я действительно больше всего обеспокоен новыми строками.
Это тесты для регулярного выражения из кода Ruby github:
>>> gfm_pre_filter('apple\\npear\\norange\\n\\nruby\\npython\\nerlang')
'apple \\npear \\norange\\n\\nruby \\npython \\nerlang'
>>> gfm_pre_filter('test \\n\\n\\n something')
'test \\n\\n\\n something'
>>> gfm_pre_filter('# foo\\n# bar')
'# foo\\n# bar'
>>> gfm_pre_filter('* foo\\n* bar')
'* foo\\n* bar'