Add generic user tag
This commit is contained in:
parent
f9940eacbe
commit
46a2400231
2 changed files with 24 additions and 9 deletions
|
|
@ -63,4 +63,6 @@ There are also special tags to link to yourself or other users automatically. Th
|
||||||
[ib=Amet][weasyl=Sit][/weasyl][/ib] is the same as above, but the Weasyl is prioritized instead.
|
[ib=Amet][weasyl=Sit][/weasyl][/ib] is the same as above, but the Weasyl is prioritized instead.
|
||||||
|
|
||||||
[ib=Amet][weasyl=Sit]Consectetur[/weasyl][/ib] is the same as above, but Consectetur is displayed as the username for websites other than Inkbunny and Weasyl. The Weasyl gallery is linked to in those websites.
|
[ib=Amet][weasyl=Sit]Consectetur[/weasyl][/ib] is the same as above, but Consectetur is displayed as the username for websites other than Inkbunny and Weasyl. The Weasyl gallery is linked to in those websites.
|
||||||
|
|
||||||
|
[generic=https://github.com/BadMannersXYZ]Bad Manners[/generic] can be used as the innermost tag with a mandatory URL attribute and default username, and is similar to the URL tag, but it can be nested within other profile links.
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -28,13 +28,14 @@ DESCRIPTION_GRAMMAR = r"""
|
||||||
|
|
||||||
self_tag: "[self]" [WS] "[/self]"
|
self_tag: "[self]" [WS] "[/self]"
|
||||||
user_tag_root: user_tag
|
user_tag_root: user_tag
|
||||||
user_tag: """
|
user_tag: generic_tag | """
|
||||||
|
|
||||||
DESCRIPTION_GRAMMAR += ' | '.join(f'{tag}_tag' for tag in SUPPORTED_USER_TAGS)
|
DESCRIPTION_GRAMMAR += ' | '.join(f'{tag}_tag' for tag in SUPPORTED_USER_TAGS)
|
||||||
|
|
||||||
DESCRIPTION_GRAMMAR += ''.join(f'\n {tag}_tag: "[{tag}" ["=" USERNAME] "]" USERNAME "[/{tag}]" | "[{tag}" "=" USERNAME "]" [user_tag] "[/{tag}]"' for tag in SUPPORTED_USER_TAGS)
|
DESCRIPTION_GRAMMAR += ''.join(f'\n {tag}_tag: "[{tag}" ["=" USERNAME] "]" USERNAME "[/{tag}]" | "[{tag}" "=" USERNAME "]" [user_tag] "[/{tag}]"' for tag in SUPPORTED_USER_TAGS)
|
||||||
|
|
||||||
DESCRIPTION_GRAMMAR += r"""
|
DESCRIPTION_GRAMMAR += r"""
|
||||||
|
generic_tag: "[generic=" URL "]" USERNAME "[/generic]"
|
||||||
|
|
||||||
USERNAME: /[a-zA-Z0-9][a-zA-Z0-9 _-]*/
|
USERNAME: /[a-zA-Z0-9][a-zA-Z0-9 _-]*/
|
||||||
URL: /(https?:\/\/)?[^\]]+/
|
URL: /(https?:\/\/)?[^\]]+/
|
||||||
|
|
@ -43,6 +44,8 @@ DESCRIPTION_GRAMMAR += r"""
|
||||||
%import common.WS
|
%import common.WS
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
print(DESCRIPTION_GRAMMAR)
|
||||||
|
|
||||||
DESCRIPTION_PARSER = lark.Lark(DESCRIPTION_GRAMMAR, parser='lalr')
|
DESCRIPTION_PARSER = lark.Lark(DESCRIPTION_GRAMMAR, parser='lalr')
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -111,23 +114,33 @@ class UploadTransformer(lark.Transformer):
|
||||||
def user_tag_root(self, data):
|
def user_tag_root(self, data):
|
||||||
user_data: UserTag = data[0]
|
user_data: UserTag = data[0]
|
||||||
for site in user_data.sites:
|
for site in user_data.sites:
|
||||||
if site == 'eka':
|
if site == 'generic':
|
||||||
|
return self.url_tag((user_data['generic'].strip(), user_data.default))
|
||||||
|
elif site == 'eka':
|
||||||
return self.url_tag((f'https://aryion.com/g4/user/{user_data["eka"]}', user_data.default or user_data["eka"]))
|
return self.url_tag((f'https://aryion.com/g4/user/{user_data["eka"]}', user_data.default or user_data["eka"]))
|
||||||
if site == 'fa':
|
elif site == 'fa':
|
||||||
return self.url_tag((f'https://furaffinity.net/user/{user_data["fa"].replace("_", "")}', user_data.default or user_data['fa']))
|
return self.url_tag((f'https://furaffinity.net/user/{user_data["fa"].replace("_", "")}', user_data.default or user_data['fa']))
|
||||||
if site == 'ib':
|
elif site == 'weasyl':
|
||||||
|
return self.url_tag((f'https://www.weasyl.com/~{user_data["weasyl"].replace(" ", "").lower()}', user_data.default or user_data['weasyl']))
|
||||||
|
elif site == 'ib':
|
||||||
return self.url_tag((f'https://inkbunny.net/{user_data["ib"]}', user_data.default or user_data['ib']))
|
return self.url_tag((f'https://inkbunny.net/{user_data["ib"]}', user_data.default or user_data['ib']))
|
||||||
if site == 'sf':
|
elif site == 'sf':
|
||||||
return self.url_tag((f'https://{user_data["sf"].replace(" ", "-").lower()}.sofurry.com', user_data.default or user_data['sf']))
|
return self.url_tag((f'https://{user_data["sf"].replace(" ", "-").lower()}.sofurry.com', user_data.default or user_data['sf']))
|
||||||
if site == 'twitter':
|
elif site == 'twitter':
|
||||||
return self.url_tag((f'https://twitter.com/{user_data["twitter"]}', user_data.default or user_data['twitter']))
|
return self.url_tag((f'https://twitter.com/{user_data["twitter"]}', user_data.default or user_data['twitter']))
|
||||||
if site == 'weasyl':
|
else:
|
||||||
self.url_tag((f'https://www.weasyl.com/~{user_data["weasyl"].replace(" ", "").lower()}', user_data.default or user_data['weasyl']))
|
print(f'Unknown site "{site}" found in user tag; ignoring...')
|
||||||
raise TypeError('Invalid UserTag data')
|
raise TypeError('Invalid UserTag data')
|
||||||
|
|
||||||
def user_tag(self, data):
|
def user_tag(self, data):
|
||||||
return data[0]
|
return data[0]
|
||||||
|
|
||||||
|
def generic_tag(self, data):
|
||||||
|
attribute, inner = data[0], data[1]
|
||||||
|
user = UserTag(default=inner.strip())
|
||||||
|
user['generic'] = attribute.strip()
|
||||||
|
return user
|
||||||
|
|
||||||
class BbcodeTransformer(UploadTransformer):
|
class BbcodeTransformer(UploadTransformer):
|
||||||
def b_tag(self, data):
|
def b_tag(self, data):
|
||||||
if data[0] is None or not data[0].strip():
|
if data[0] is None or not data[0].strip():
|
||||||
|
|
|
||||||
Reference in a new issue