#? stdtmpl(subsChar = '$', metaChar = '#') ## SPDX-License-Identifier: AGPL-3.0-only #import strutils, xmltree, strformat, options, unicode #import ../types, ../utils, ../formatters, ../prefs # #proc getTitle(tweet: Tweet; retweet: string): string = #if tweet.pinned: result = "Pinned: " #elif retweet.len > 0: result = &"RT by @{retweet}: " #elif tweet.reply.len > 0: result = &"R to @{tweet.reply[0]}: " #end if #var text = stripHtml(tweet.text) #if unicode.runeLen(text) > 100: # text = unicode.runeSubStr(text, 0, 64) & "..." #end if #result &= xmltree.escape(text) #if result.len > 0: return #end if #if tweet.photos.len > 0: # result &= "Image" #elif tweet.video.isSome: # result &= "Video" #elif tweet.gif.isSome: # result &= "Gif" #end if #end proc # #proc getDescription(desc: string; cfg: Config): string = Twitter feed for: ${desc}. Generated by ${getUrlPrefix(cfg)} #end proc # #proc getTweetsWithPinned(profile: Profile): seq[Tweets] = #result = profile.tweets.content #if profile.pinned.isSome and result.len > 0: # let pinnedTweet = profile.pinned.get # var inserted = false # for threadIdx in 0 ..< result.len: # if not inserted: # for tweetIdx in 0 ..< result[threadIdx].len: # if result[threadIdx][tweetIdx].id < pinnedTweet.id: # result[threadIdx].insert(pinnedTweet, tweetIdx) # inserted = true # end if # end for # end if # end for #end if #end proc # #proc renderRssTweet(tweet: Tweet; cfg: Config): string = #let tweet = tweet.retweet.get(tweet) #let urlPrefix = getUrlPrefix(cfg) #let text = replaceUrls(tweet.text, defaultPrefs, absolute=urlPrefix)
${text.replace("\n", "
\n")}
${quoteTweet.user.fullname} (@${quoteTweet.user.username})#end if #end proc # #proc renderRssTweets(tweets: seq[Tweets]; cfg: Config; userId=""): string = #let urlPrefix = getUrlPrefix(cfg) #var links: seq[string] #for thread in tweets: # for tweet in thread: # if userId.len > 0 and tweet.user.id != userId: continue # end if # # let retweet = if tweet.retweet.isSome: tweet.user.username else: "" # let tweet = if retweet.len > 0: tweet.retweet.get else: tweet # if not tweet.available: continue # end if # let link = getLink(tweet) # if link in links: continue # end if # links.add link${renderRssTweet(quoteTweet, cfg)}
${desc}
]]>