Module: Birdwatcher::Concerns::Presentation

Included in:
Birdwatcher::Command, Module
Defined in:
lib/birdwatcher/concerns/presentation.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



4
5
6
# File 'lib/birdwatcher/concerns/presentation.rb', line 4

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#make_status_summary_output(status) ⇒ String

Make status summary output

Parameters:

  • status (Birdwatcher::Models::Status)

Returns:

  • (String)

    short summary of status



69
70
71
72
73
74
# File 'lib/birdwatcher/concerns/presentation.rb', line 69

def make_status_summary_output(status)
  "#{status.user.name.bold.light_green} (@#{status.user.screen_name}) #{status.user.verified ? '*'.bold.light_blue : ''} #{status.posted_at.strftime('%b %e, %H:%M')}\n" +
  "#{status.text.bold}\n" +
  "#{'Favorites:'.light_blue} #{status.favorite_count} | " +
  "#{'Retweets:'.light_blue} #{status.retweet_count}\n"
end

#make_url_summary_output(url) ⇒ String

Make URL summary output

Parameters:

  • url (Hash)

Returns:

  • (String)

    URL summary



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/birdwatcher/concerns/presentation.rb', line 87

def make_url_summary_output(url)
  out  = "#{(url[:final_url] || url[:url]).bold}\n" +
         "#{'Shares:'.bold} #{url[:count]}\n"
  out += "#{'Title:'.bold} #{url[:title] || 'Unknown'}\n"
  if url[:http_status]
    case url[:http_status]
    when 200..299
      status = url[:http_status].to_s.bold.light_green
    when 400..499
      status = url[:http_status].to_s.bold.light_yellow
    when 500..599
      status = url[:http_status].to_s.bold.light_red
    else
      status = url[:http_status].to_s.bold
    end
    out += "#{'Status Code:'.bold} #{status}\n"
  else
    out += "#{'Status Code:'.bold} Unknown\n"
  end
  out += "#{'Content Type:'.bold} #{url[:content_type] || 'Unknown'}\n"
  out
end

#make_user_details_output(user) ⇒ String

Make user details output

Parameters:

  • user (Birdwatcher::Models::User)

Returns:

  • (String)

    summary and details about a user



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/birdwatcher/concerns/presentation.rb', line 39

def make_user_details_output(user)
  "#{user.name.bold.light_green} (@#{user.screen_name}) #{user.verified ? '*'.bold.light_blue : ''}\n\n" +

  "Description:".bold + " #{user.description || 'No description'}\n" +
  "   Location:".bold + " #{user.location || 'Unknown'}\n" +
  "    Website:".bold + " #{user.url || 'None'}\n" +
  "   Timezone:".bold + " #{user.timezone}\n" +
  "   Language:".bold + " #{user.lang}\n\n" +

  "Followers:".bold + " #{user.followers_count}\n" +
  "Following:".bold + " #{user.friends_count}\n" +
  "Favorites:".bold + " #{user.favorites_count}\n" +
  " Statuses:".bold + " #{user.statuses_count}\n\n" +

  "  Added:".bold + " #{time_ago_in_words(user.created_at)}\n" +
  "Updated:".bold + (user.updated_at ? " #{time_ago_in_words(user.updated_at)}" : " Never") + "\n"
end

#make_user_summary_output(user) ⇒ String

Make a user summary output

Parameters:

  • user (Birdwatcher::Models::User)

Returns:

  • (String)

    Short summary of the user



16
17
18
19
20
21
22
23
24
25
# File 'lib/birdwatcher/concerns/presentation.rb', line 16

def make_user_summary_output(user)
  "#{user.name.bold.light_green} (@#{user.screen_name}) #{user.verified ? '*'.bold.light_blue : ''}\n" +
  "Description:".bold + " #{user.description || 'No description'}\n" +
  "Location:".bold + " #{user.location || 'Unknown'}\n" +
  "Followers:".bold + " #{user.followers_count} | " +
  "Following:".bold + " #{user.friends_count} | " +
  "Listed:".bold + " #{user.listed_count} | " +
  "Favorites:".bold + " #{user.favorites_count} | " +
  "Statuses:".bold + " #{user.statuses_count}\n"
end

#output_status_summary(status) ⇒ Object

Output status summary to the console

Parameters:

  • status (Birdwatcher::Models::Status)


79
80
81
# File 'lib/birdwatcher/concerns/presentation.rb', line 79

def output_status_summary(status)
  output make_status_summary_output(status)
end

#output_user_details(user) ⇒ Object

Output user details to the console

Parameters:

  • user (Birdwatcher::Models::User)


60
61
62
# File 'lib/birdwatcher/concerns/presentation.rb', line 60

def output_user_details(user)
  output make_user_details_output(user)
end

#output_user_summary(user) ⇒ Object

Output a user summary to the console

Parameters:

  • user (Birdwatcher::Models::User)


30
31
32
# File 'lib/birdwatcher/concerns/presentation.rb', line 30

def output_user_summary(user)
  make_user_summary_output(user)
end

#page_text(text) ⇒ Object

Page potentially long output to the console

If the text is long, it will be automatically paged with the system’s currently configured pager command (usually ‘less`).

Parameters:

  • text (String)

    Text to page



116
117
118
119
# File 'lib/birdwatcher/concerns/presentation.rb', line 116

def page_text(text)
  ::TTY::Pager::SystemPager.new.page(text)
rescue Errno::EPIPE
end