Source code for slackfin.formatter
from datetime import datetime
[docs]class SlackFormatter:
"""
SlackFormatter
Slack formats a number of things in a special way. This class provides
methods to format those things.
"""
[docs] def datetime(
self,
timestamp: datetime = None,
date_format: str = "{date_num} {time}",
url: str = None,
):
"""Format a datetime object into a Slack date string."""
if not timestamp:
timestamp = datetime.now()
formatted_string = f"<!date^{int(timestamp.timestamp())}^{date_format}"
if url:
formatted_string += f"^{url}"
formatted_string += f"|{str(timestamp)}>"
return formatted_string
[docs] def link(
self, url: str,
text: str = None
):
"""Format a URL into a Slack link."""
return f"<{url}|{text if text else url}>"
[docs] def quote(self, text: str):
"""Format text into a Slack quote."""
lines = text.splitlines()
quote = "\n>".join(lines)
return f">{quote}"
[docs] def inline_code(self, text: str):
"""Format text into a Slack inline code block."""
return f"`{text}`"
[docs] def bold(self, text: str):
"""Format text into a Slack bold text block."""
return f"*{text}*"
[docs] def italic(self, text: str):
"""Format text into a Slack italic text block."""
return f"_{text}_"
[docs] def strike(self, text: str):
"""Format text into a Slack strike text block."""
return f"~{text}~"