@Stephen Bailey
Для завершения ответа можно также делегировать пользовательские права менеджеру проектов через файл простого текста в репозитории.
, Чтобы сделать это, Вы устанавливаете свою базу данных SVN со значением по умолчанию authz
файл, содержащий следующее.
###########################################################################
# The content of this file always precedes the content of the
# $REPOS/admin/acl_descriptions.txt file.
# It describes the immutable permissions on main folders.
###########################################################################
[groups]
svnadmins = xxx,yyy,....
[/]
@svnadmins = rw
* = r
[/admin]
@svnadmins = rw
@projadmins = r
* =
[/admin/acl_descriptions.txt]
@projadmins = rw
Это значение по умолчанию authz
файл разрешает администраторов SVN изменять простой файл видимого текста в Вашем репозитории SVN, названном '/admin/acl_descriptions.txt' , в котором администраторы SVN или менеджеры проектов изменят и зарегистрируют пользователей.
Тогда Вы устанавливаете рычаг перед фиксацией, который обнаружит, если пересмотр будет состоять из того файла (и только того файла).
, Если это, этот рычаг, сценарии проверят содержание Вашего файла простого текста и проверят, совместима ли каждая строка с правильным синтаксисом SVN.
Тогда рычаг постфиксации обновит \conf\authz
файл с конкатенация из:
authz
файл, представленный выше /admin/acl_descriptions.txt
простого текста, первое повторение сделано администратором SVN, он добавляет:
[groups]
projadmins = zzzz
Он фиксирует свою модификацию, и это обновляет authz
файл.
Тогда менеджер проектов 'zzzz' может добавить, удалить или объявить любую группу пользователей и любых пользователей, которых он хочет. Он фиксирует файл и authz
, файл обновляется.
Тот путь, администратор SVN не должен следовать ни за кем и всеми пользователями для всех репозиториев SVN .
Вы можете загрузить документ с помощью библиотеки синтаксического анализа DOM / HTML (см. Html5lib), захватить все текстовые узлы, сопоставить их с регулярным выражением и заменить текстовые узлы заменой регулярного выражения URI с привязками вокруг него с использованием PCRE, например:
/(https?:[;\/?\\@&=+$,\[\]A-Za-z0-9\-_\.\!\~\*\'\(\)%][\;\/\?\:\@\&\=\+\$\,\[\]A-Za-z0-9\-_\.\!\~\*\'\(\)%#]*|[KZ]:\\*.*\w+)/g
Я совершенно уверен, что вы можете пробиться и найти какую-то утилиту, которая делает это, хотя я не могу придумать ничего из головы.
Изменить: попробуйте использовать ответы здесь: Как мне заставить python-markdown дополнительно "urlify" ссылки при форматировании обычного текста?
import re
urlfinder = re.compile("([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}|((news|telnet|nttp|file|http|ftp|https)://)|(www|ftp)[-A-Za-z0-9]*\\.)[-A-Za-z0-9\\.]+):[0-9]*)?/[-A-Za-z0-9_\\$\\.\\+\\!\\*\\(\\),;:@&=\\?/~\\#\\%]*[^]'\\.}>\\),\\\"]")
def urlify2(value):
return urlfinder.sub(r'<a href="\1">\1</a>', value)
вызовите urlify2 в строке, и я думаю, что это так, если вы не имеете дело с объект DOM.
Когда вы говорите «основной текст», вы имеете в виду простой текстовый файл или основной текст в документе HTML? Если вам нужен HTML-документ, вы можете использовать Beautiful Soup для его анализа; затем выполните поиск по основному тексту и вставьте теги.
Сопоставление фактических URL-адресов, вероятно, лучше всего выполнить с помощью модуля urlparse . Полное обсуждение здесь: Как проверить URL-адрес с помощью регулярного выражения в Python?
Gmail намного более открыт, когда дело доходит до URL-адресов, но это не всегда верно. например, он превратит www.ab в гиперссылку, а также http: // ab , но это часто не удается из-за обернутого текста и необычных (но действительных) символов URL.
См. приложение AA Собрал BNF для URI для синтаксиса и использовал его для построения разумного регулярного выражения, которое также будет учитывать, что окружает URL. Вам следует рассмотреть несколько сценариев, в которых могут оказаться URL-адреса.