Explorar el Código

Refactor tweet stats

Zed hace 7 años
padre
commit
3cedcf29ea
Se han modificado 4 ficheros con 18 adiciones y 17 borrados
  1. 1 1
      src/parser.nim
  2. 5 7
      src/parserutils.nim
  3. 7 4
      src/types.nim
  4. 5 5
      src/views/tweet.nimf

+ 1 - 1
src/parser.nim

@@ -63,11 +63,11 @@ proc parseTweet*(node: XmlNode): Tweet =
     time:      getTimestamp(tweet),
     shortTime: getShortTime(tweet),
     profile:   parseTweetProfile(tweet),
+    stats:     parseTweetStats(tweet),
     pinned:    "pinned" in tweet.attr("class"),
     available: true
   )
 
-  result.getTweetStats(tweet)
   result.getTweetMedia(tweet)
   result.getTweetCards(tweet)
 

+ 5 - 7
src/parserutils.nim

@@ -111,16 +111,14 @@ proc getIntentStats*(profile: var Profile; node: XmlNode) =
     of "followers": profile.followers = text
     of "following": profile.following = text
 
-proc getTweetStats*(tweet: Tweet; node: XmlNode) =
-  tweet.replies = "0"
-  tweet.retweets = "0"
-  tweet.likes = "0"
+proc parseTweetStats*(node: XmlNode): TweetStats =
+  result = TweetStats(replies: "0", retweets: "0", likes: "0")
   for action in node.selectAll(".ProfileTweet-actionCountForAria"):
     let text = action.innerText.split()
     case text[1][0 .. 2]
-    of "ret": tweet.retweets = text[0]
-    of "rep": tweet.replies = text[0]
-    of "lik": tweet.likes = text[0]
+    of "ret": result.retweets = text[0]
+    of "rep": result.replies = text[0]
+    of "lik": result.likes = text[0]
 
 proc getGif(player: XmlNode): Gif =
   let

+ 7 - 4
src/types.nim

@@ -66,23 +66,26 @@ type
     by*: string
     id*: string
 
+  TweetStats* = object
+    replies*: string
+    retweets*: string
+    likes*: string
+
   Tweet* = ref object
     id*: string
     profile*: Profile
     text*: string
     time*: Time
     shortTime*: string
-    replies*: string
-    retweets*: string
-    likes*: string
+    available*: bool
     pinned*: bool
+    stats*: TweetStats
     retweet*: Option[Retweet]
     quote*: Option[Quote]
     gif*: Option[Gif]
     video*: Option[Video]
     photos*: seq[string]
     poll*: Option[Poll]
-    available*: bool
 
   Thread* = object
     tweets*: seq[Tweet]

+ 5 - 5
src/views/tweet.nimf

@@ -132,11 +132,11 @@
 </div>
 #end proc
 #
-#proc renderStats(tweet: Tweet): string =
+#proc renderStats(stats: TweetStats): string =
 <div class="tweet-stats">
-  <span class="tweet-stat">💬 ${$tweet.replies}</span>
-  <span class="tweet-stat">🔄 ${$tweet.retweets}</span>
-  <span class="tweet-stat">👍 ${$tweet.likes}</span>
+  <span class="tweet-stat">💬 ${$stats.replies}</span>
+  <span class="tweet-stat">🔄 ${$stats.retweets}</span>
+  <span class="tweet-stat">👍 ${$stats.likes}</span>
 </div>
 #end proc
 #
@@ -163,7 +163,7 @@
     #elif tweet.poll.isSome:
      ${renderPoll(tweet.poll.get())}
     #end if
-    ${renderStats(tweet)}
+    ${renderStats(tweet.stats)}
   </div>
 </div>
 #else: