hp.done()
self.content = hp.paras
+ self.media = data.get('media_attachments', [])
+
def text(self):
yield text.SeparatorLine(self.datestamp)
yield text.FromLine('@' + self.account['acct'],
yield text.BlankLine()
yield from self.content
yield text.BlankLine()
+ for media in self.media:
+ yield text.Media(media['url'], media.get('description'))
'c': [0, 33],
'#': [0, 36],
'@': [0, 32],
+ 'M': [0, 1, 4, 35],
+ 'm': [0, 35],
}
class ColouredString:
header = "Via"
colour = "f"
+class Media:
+ def __init__(self, url, description):
+ self.url = url
+ if description is None:
+ self.description = None
+ else:
+ self.description = Paragraph()
+ self.description.add(ColouredString(description, 'm'))
+ self.description.end_word()
+
+ def render(self, width):
+ yield ColouredString(self.url, "M")
+ if self.description is not None:
+ for line in self.description.render(width-4):
+ yield ColouredString(" ") + line
+ yield ColouredString("")
+
class Paragraph:
def __init__(self):
self.words = []
def add(self, text):
for c in text:
- if c == ' ':
+ if str(c) == ' ':
self.end_word()
else:
self.unfinished_word += c
ColouredString('Test of a @username',
' @@@@@@@@@'),
])
+
+ def testMedia(self):
+ ma = Media('https://a.b/c', 'foo foo foo foo foo foo foo')
+ self.assertEqual(list(ma.render(16)), [
+ ColouredString('https://a.b/c',
+ 'MMMMMMMMMMMMM'),
+ ColouredString(' foo foo foo',
+ ' mmm mmm mmm'),
+ ColouredString(' foo foo foo',
+ ' mmm mmm mmm'),
+ ColouredString(' foo',
+ ' mmm'),
+ ColouredString(''),
+ ])
+ self.assertEqual(list(ma.render(15)), [
+ ColouredString('https://a.b/c',
+ 'MMMMMMMMMMMMM'),
+ ColouredString(' foo foo',
+ ' mmm mmm'),
+ ColouredString(' foo foo',
+ ' mmm mmm'),
+ ColouredString(' foo foo',
+ ' mmm mmm'),
+ ColouredString(' foo',
+ ' mmm'),
+ ColouredString(''),
+ ])