Class: Twterm::Status

Inherits:
Object
  • Object
show all
Defined in:
lib/twterm/status.rb

Overview

A tweet

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tweet, is_retweeted_status = false) ⇒ Status

Returns a new instance of Status.



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/twterm/status.rb', line 43

def initialize(tweet, is_retweeted_status = false)
  unless tweet.retweeted_status.is_a? Twitter::NullObject
    @retweeted_status_id = tweet.retweeted_status.id
  end

  @id = tweet.id
  text =
    if tweet.truncated? && tweet.attrs[:extended_tweet]
      tweet.attrs[:extended_tweet][:full_text]
    else
      tweet.attrs[:text] || tweet.attrs[:full_text]
    end
  @text = CGI.unescapeHTML(text)
  @created_at = tweet.created_at.dup.localtime
  @in_reply_to_status_id = tweet.in_reply_to_status_id
  @quoted_status_id = tweet.quoted_status_id
  @url = tweet.url

  update!(tweet, is_retweeted_status)

  @media = tweet.media
  @hashtags = tweet.hashtags.map { |tag| Hashtag.new(tag) }
  @urls = tweet.urls
  @user_mentions = tweet.user_mentions

  @user_id = tweet.user.id

  @splitted_text = {}

  expand_url!
end

Instance Attribute Details

#created_atObject (readonly)

Returns the value of attribute created_at.



17
18
19
# File 'lib/twterm/status.rb', line 17

def created_at
  @created_at
end

#favorite_countObject (readonly)

Returns the value of attribute favorite_count.



17
18
19
# File 'lib/twterm/status.rb', line 17

def favorite_count
  @favorite_count
end

#favoritedObject (readonly) Also known as: favorited?

Returns the value of attribute favorited.



17
18
19
# File 'lib/twterm/status.rb', line 17

def favorited
  @favorited
end

#hashtagsObject (readonly)

Returns the value of attribute hashtags.



17
18
19
# File 'lib/twterm/status.rb', line 17

def hashtags
  @hashtags
end

#idObject (readonly)

Returns the value of attribute id.



17
18
19
# File 'lib/twterm/status.rb', line 17

def id
  @id
end

#in_reply_to_status_idObject (readonly)

Returns the value of attribute in_reply_to_status_id.



17
18
19
# File 'lib/twterm/status.rb', line 17

def in_reply_to_status_id
  @in_reply_to_status_id
end

#mediaObject (readonly)

Returns the value of attribute media.



17
18
19
# File 'lib/twterm/status.rb', line 17

def media
  @media
end

#quoted_status_idObject (readonly)

Returns the value of attribute quoted_status_id.



17
18
19
# File 'lib/twterm/status.rb', line 17

def quoted_status_id
  @quoted_status_id
end

#retweet_countObject (readonly)

Returns the value of attribute retweet_count.



17
18
19
# File 'lib/twterm/status.rb', line 17

def retweet_count
  @retweet_count
end

#retweetedObject (readonly) Also known as: retweeted?

Returns the value of attribute retweeted.



17
18
19
# File 'lib/twterm/status.rb', line 17

def retweeted
  @retweeted
end

#retweeted_status_idObject (readonly)

Returns the value of attribute retweeted_status_id.



17
18
19
# File 'lib/twterm/status.rb', line 17

def retweeted_status_id
  @retweeted_status_id
end

#textObject (readonly)

Returns the value of attribute text.



17
18
19
# File 'lib/twterm/status.rb', line 17

def text
  @text
end

#urlObject (readonly)

Returns the value of attribute url.



17
18
19
# File 'lib/twterm/status.rb', line 17

def url
  @url
end

#urlsObject (readonly)

Returns the value of attribute urls.



17
18
19
# File 'lib/twterm/status.rb', line 17

def urls
  @urls
end

#user_idObject (readonly)

Returns the value of attribute user_id.



17
18
19
# File 'lib/twterm/status.rb', line 17

def user_id
  @user_id
end

#user_mentionsObject (readonly)

Returns the value of attribute user_mentions.



17
18
19
# File 'lib/twterm/status.rb', line 17

def user_mentions
  @user_mentions
end

Instance Method Details

#==(other) ⇒ Object



23
24
25
# File 'lib/twterm/status.rb', line 23

def ==(other)
  other.is_a?(self.class) && id == other.id
end

#dateObject



28
29
30
31
# File 'lib/twterm/status.rb', line 28

def date
  format = Time.now - @created_at < 86_400 ? '%H:%M:%S' : '%Y-%m-%d %H:%M:%S'
  @created_at.strftime(format)
end

#expand_url!Object



34
35
36
37
# File 'lib/twterm/status.rb', line 34

def expand_url!
  sub = -> (x) { @text.sub!(x.url, x.display_url) }
  (@media + @urls).each(&sub)
end

#favorite!Object



39
40
41
# File 'lib/twterm/status.rb', line 39

def favorite!
  @favorited = true
end

#quote?Boolean

Is this status a quote?

Returns:

  • (Boolean)


78
79
80
# File 'lib/twterm/status.rb', line 78

def quote?
  !quoted_status_id.nil?
end

#retweet!Object



89
90
91
# File 'lib/twterm/status.rb', line 89

def retweet!
  @retweeted = true
end

#retweet?Boolean

Is this status a retweet?

Returns:

  • (Boolean)


85
86
87
# File 'lib/twterm/status.rb', line 85

def retweet?
  !retweeted_status_id.nil?
end

#split(width) ⇒ Object



93
94
95
# File 'lib/twterm/status.rb', line 93

def split(width)
  @splitted_text[width] ||= @text.split_by_width(width)
end

#unfavorite!Object



97
98
99
# File 'lib/twterm/status.rb', line 97

def unfavorite!
  @favorited = false
end

#unretweet!Object



101
102
103
# File 'lib/twterm/status.rb', line 101

def unretweet!
  @retweeted = false
end

#update!(tweet, is_retweeted_status = false) ⇒ self

Returns:

  • (self)


106
107
108
109
110
111
112
113
# File 'lib/twterm/status.rb', line 106

def update!(tweet, is_retweeted_status = false)
  @retweet_count = tweet.retweet_count
  @favorite_count = tweet.favorite_count
  @retweeted = tweet.retweeted? unless is_retweeted_status
  @favorited = tweet.favorited?

  self
end