aboutsummaryrefslogtreecommitdiffstats
path: root/wee_slack.py
diff options
context:
space:
mode:
authorTollef Fog Heen <tfheen@err.no>2015-08-29 16:55:26 +0200
committerTollef Fog Heen <tfheen@err.no>2015-08-29 16:55:26 +0200
commit784ba9da7eef89c429b97b5a59a884b12563163c (patch)
treefff23c135824396622aca73090b2aa6c33b31ee3 /wee_slack.py
parent91de1da5254690e5b3c4d4b2f952d0351e74cd76 (diff)
downloadwee-slack-784ba9da7eef89c429b97b5a59a884b12563163c.tar.gz
Add unit test for unfurl_refs and correct logic
The logic for showing/ignoring alt refs was wrong. Fix that, and to prevent this from showing up again, add a unit test.
Diffstat (limited to 'wee_slack.py')
-rw-r--r--wee_slack.py43
1 files changed, 28 insertions, 15 deletions
diff --git a/wee_slack.py b/wee_slack.py
index eae2e1d..2eccd58 100644
--- a/wee_slack.py
+++ b/wee_slack.py
@@ -1472,32 +1472,45 @@ def unfurl_refs(text, ignore_alt_text=False):
"""
if text and text.find('<') > -1:
newtext = []
- text = text.split(" ")
- for item in text:
- # dbg(item)
+ chunks = text.split(" ")
+ for item in chunks:
+ dbg(item)
prefix = ""
suffix = ""
start = item.find('<')
end = item.find('>')
+ display_text = item
+
if start > -1 and end > -1:
prefix = item[:start]
suffix = item[end+1:]
item = item[start + 1:end]
+ id = item.split('|')[0]
if item.find('|') > -1:
if ignore_alt_text:
- item = item.split('|')[1]
+ if id.startswith('@U'):
+ if users.find(id[1:]):
+ try:
+ display_text = "@{}".format(users.find(id[1:]).name)
+ except:
+ dbg("NAME: {}".format(item))
+ elif id.startswith('#C'):
+ if channels.find(id[1:]):
+ try:
+ display_text = "{}".format(channels.find(id[1:]).name)
+ except:
+ dbg("CHANNEL: {}".format(item))
+ else:
+ # This is probably a URL, we don't want to ignore anything
+ # XXX: fix up nicer formatting to generate more clickable urls
+ display_text = item
else:
- item = item.split('|')[0]
- if item.startswith('@U'):
- if users.find(item[1:]):
- try:
- item = "@{}".format(users.find(item[1:]).name)
- except:
- dbg("NAME: {}".format(item))
- if item.startswith('#C'):
- if channels.find(item[1:]):
- item = "{}".format(channels.find(item[1:]).name)
- newtext.append(prefix + item + suffix)
+ if id.startswith("#C") or id.startswith("@U"):
+ display_text = item.split('|')[1]
+ else:
+ url, desc = item.split('|', 1)
+ display_text = "{} ({})".format(url, desc)
+ newtext.append(prefix + display_text + suffix)
text = " ".join(newtext)
return text
else: