Talk:List of XEPs
From JaWiki (Jabber/XMPP wiki)
Генерация списка
Копипаст оригинального списка прогнать через этот скрипт:
#! /usr/bin/env perl while ( <> ) { split '\t'; chop @_; $xep = $_[0]; $name = $_[1]; $type = $_[2]; $status = $_[3]; $date = $_[4]; # ignored # XEP -> template $xep =~ /XEP-([0-9]{4})/; $xep = "{{xep|$1}}"; # add place for the russian translation $name = $name."<hr/>"; # type and status translation, according to Terms %TypeTranslation = ( "Historical", "Историческое", "Humorous", "Шуточное", "Informational", "Информационное", "JIG Formation", "Формирование JIG", "Procedural", "Процедурное", "Standards Track", "Основное" ); %StatusTranslation = ( "Active", "Действующее", "Deferred", "Отложенное", "Deprecated", "Отменённое", "Draft", "Черновик", "Experimental", "Экспериментальное", "Final", "Окончательное", "Obsolete", "Устаревшее", "Proposed", "Предложенное", "Rejected", "Отклонённое", "Retracted", "Отозванное" ); $typeTranslated = $TypeTranslation{$type}; $statusTranslated = $StatusTranslation{$status}; # type, status links and classes $typeClass = 'type_'.$type; $statusClass = 'status_'.$status; $type = "[[XEP#Типы|$typeTranslated]]"; $status = "[[XEP#Статусы|$statusTranslated]]"; $typeClass =~ s/ /_/g; $statusClass =~ s/ /_/g; # outting table row print "|- class='$typeClass $statusClass'\n| $xep || $name || $type || $status\n"; }
Проверка списка
Требуется Python 3
#! /usr/bin/env python3 # -*- coding: utf-8 -*- # input XEPS_ORIG_URL = 'http://xmpp.org/includes/xeps-all.txt' XEPS_WIKI_URL = 'http://wiki.jrudevels.org/List_of_XEPs?action=raw' import re import urllib.request from pprint import pprint def fetchUrl(url): return str(urllib.request.urlopen(url).read(), 'UTF-8') def main(): print('... Получение списка расширений из ЯВики... ', end='') xeps_wiki = fetchUrl(XEPS_WIKI_URL).splitlines() print('Готово.') xeps = {} xeptype = None xepstatus = None for line in xeps_wiki: search = re.search("class='type_(.*?) status_(.*?)'", line) if search: xeptype = search.group(1).replace('_', ' ') xepstatus = search.group(2) continue search = re.search('([0-9]{4})}} \|\| (.*)<hr', line) if search: xeps[search.group(1)] = { 'name': search.group(2), 'type': xeptype, 'status': xepstatus } print('... Прочитано %d расширений.' % len(xeps)) print('... Получение оригинального списка расширений... ', end='') xeps_orig = fetchUrl(XEPS_ORIG_URL).split('</tr>\n<tr') print('Готово.') differ = False for xepblock in xeps_orig: xepdetails = re.findall('<td[^>]*>(.*)</td>', xepblock) xepcode = xepdetails[0][55:59] xep_o = { 'name': xepdetails[1], 'type': xepdetails[2], 'status': xepdetails[3] } if xepcode not in xeps: differ = True print('[*] Новое расширение: XEP-' + xepcode) print('\tНазвание: ' + xep_o['name']) print('\tТип: ' + xep_o['type']) print('\tСтатус: ' + xep_o['status']) elif xep_o != xeps[xepcode]: differ = True print('[*] Различается XEP-' + xepcode) if xep_o['name'] != xeps[xepcode]['name']: print('\tНазвание изменено с "{0}" на "{1}"'.format(xep_o['name'], xeps[xepcode]['name'])) if xep_o['type'] != xeps[xepcode]['type']: print('\tТип изменён с "{0}" на "{1}"'.format(xep_o['type'], xeps[xepcode]['type'])) if xep_o['status'] != xeps[xepcode]['status']: print('\tСтатус изменён с "{0}" на "{1}"'.format(xep_o['status'], xeps[xepcode]['status'])) if not differ: print('[=] Различия не найдены.') if __name__ == '__main__': main()