#? stdtmpl(subsChar = '$', metaChar = '#') #import xmltree, strutils, times, sequtils, uri #import ../types, ../formatters, ../utils # #proc renderHeading(tweet: Tweet): string = #if tweet.retweetBy.isSome:
🔄 ${tweet.retweetBy.get()} retweeted
#end if #if tweet.pinned:
📌 Pinned Tweet
#end if
${genImg(tweet.profile.getUserpic("_bigger"), "avatar")}
${linkUser(tweet.profile, class="fullname")} ${linkUser(tweet.profile, class="username")}
${tweet.shortTime}
#end proc # #proc renderQuote(quote: Quote): string = #let hasMedia = quote.thumb.isSome() or quote.sensitive
#if hasMedia:
#if quote.thumb.isSome(): ${genImg(quote.thumb.get())} #if quote.badge.isSome():
${quote.badge.get()}
#end if #elif quote.sensitive:
#end if
#end if
${linkUser(quote.profile, class="fullname")} ${linkUser(quote.profile, class="username")}
${linkifyText(quote.text)}
#end proc # #proc renderMediaGroup(tweet: Tweet): string = #let groups = if tweet.photos.len > 2: tweet.photos.distribute(2) else: @[tweet.photos] #let display = if groups.len == 1 and groups[0].len == 1: "display: table-caption;" else: "" #var first = true
#for photos in groups: #let margin = if not first: "margin-top: .25em;" else: "" #let flex = if photos.len > 1 or groups.len > 1: "display: flex;" else: "" #first = false #end for
#end proc # #proc renderVideo(video: Video): string =
#end proc # #proc renderGif(gif: Gif): string =
#end proc # #proc renderStats(tweet: Tweet): string =
💬 ${$tweet.replies} 🔄 ${$tweet.retweets} 👍 ${$tweet.likes}
#end proc # #proc renderTweet*(tweet: Tweet; class=""; last=false): string = #var divClass = if last: "thread-last " & class else: class #if divClass.len > 0:
#end if #if tweet.available:
${renderHeading(tweet)}
${linkifyText(tweet.text)}
#if tweet.photos.len > 0: ${renderMediaGroup(tweet)} #elif tweet.video.isSome: ${renderVideo(tweet.video.get())} #elif tweet.gif.isSome: ${renderGif(tweet.gif.get())} #elif tweet.quote.isSome: ${renderQuote(tweet.quote.get())} #end if ${renderStats(tweet)}
#else:
This tweet is unavailable
#end if #if divClass.len > 0:
#end if #end proc