plugin uri finder, jp (merge-request): labels handling:
- a label can now be specified as metadata after specifing a "xmpp:" URI in doc (with « use "[label]" label" » after the URI) - updated jp to handle new signature of URIFind - jp (merge-request/set): labels can now be specified using --label
This commit is contained in:
parent
a6aa637663
commit
e4c56da671
1 changed files with 41 additions and 10 deletions
|
|
@ -23,6 +23,7 @@ from sat.core.log import getLogger
|
|||
from twisted.internet import defer
|
||||
import textwrap
|
||||
log = getLogger(__name__)
|
||||
import json
|
||||
import os.path
|
||||
import os
|
||||
import re
|
||||
|
|
@ -51,7 +52,7 @@ class URIFinder(object):
|
|||
log.info(_(u"URI finder plugin initialization"))
|
||||
self.host = host
|
||||
host.bridge.addMethod("URIFind", ".plugin",
|
||||
in_sign='sas', out_sign='a{ss}',
|
||||
in_sign='sas', out_sign='a{sa{ss}}',
|
||||
method=self.find,
|
||||
async=True)
|
||||
|
||||
|
|
@ -64,7 +65,9 @@ class URIFinder(object):
|
|||
@return (dict[unicode, unicode]): map from key to found uri
|
||||
"""
|
||||
keys_re = u'|'.join(keys)
|
||||
uri_re = re.compile(ur'(?P<key>{keys_re})[ :]? +(?P<uri>xmpp:\S+)'.format(keys_re=keys_re))
|
||||
label_re = r'"(?P<label>[^"]+)"'
|
||||
uri_re = re.compile(ur'(?P<key>{keys_re})[ :]? +(?P<uri>xmpp:\S+)(?:.*use {label_re} label)?'.format(
|
||||
keys_re=keys_re, label_re = label_re))
|
||||
path = os.path.normpath(path)
|
||||
if not os.path.isdir(path) or not os.path.isabs(path):
|
||||
raise ValueError(u'path must be an absolute path to a directory')
|
||||
|
|
@ -79,10 +82,13 @@ class URIFinder(object):
|
|||
for m in uri_re.finditer(f.read()):
|
||||
key = m.group(u'key')
|
||||
uri = m.group(u'uri')
|
||||
label = m.group(u'label')
|
||||
if key in found_uris:
|
||||
log.warning(_(u"Ignoring already found uri for key \"{key}\"").format(key=key))
|
||||
else:
|
||||
found_uris[key] = uri
|
||||
uri_data = found_uris[key] = {u'uri': uri}
|
||||
if label is not None:
|
||||
uri_data[u'labels'] = json.dumps([label])
|
||||
if found_uris:
|
||||
break
|
||||
path = os.path.dirname(path)
|
||||
|
|
|
|||
Loading…
Reference in a new issue