Uses terminal-table to display wp_users

This commit is contained in:
erwanlr
2013-04-13 22:25:34 +02:00
parent 4f182dc41b
commit 4af7a19eb0
5 changed files with 63 additions and 19 deletions

View File

@@ -3,27 +3,26 @@
class WpUsers < WpItems
module Output
# TODO : create a generic method to output tabs
def output(left_margin = '')
max_id_length = self.sort { |a, b| a.id.to_s.length <=> b.id.to_s.length }.last.id.to_s.length
max_login_length = self.sort { |a, b| a.login.length <=> b.login.length }.last.login.length
max_display_name_length = self.sort { |a, b| a.display_name.length <=> b.display_name.length }.last.display_name.length
# @param [ Hash ] options
# @option options[ Boolean ] :show_password Output the password column
#
# @return [ void ]
def output(options = {})
inner_space = 2
id_length = (max_id_length + inner_space * 2) /2 * 2
login_length = max_login_length + inner_space * 2
display_name_length = max_display_name_length + inner_space * 2
rows = []
headings = ['Id', 'Name']
headings << 'Password' if options[:show_password]
puts left_margin + '+' * (id_length + login_length + display_name_length + 4)
puts left_margin + '|' + 'id'.center(id_length) + '|' + 'login'.center(login_length) + '|' + 'display name'.center(display_name_length) + '|'
puts left_margin + '|' + '+' * (id_length + login_length + display_name_length + 2) + '|'
self.each do |u|
puts left_margin + '|' + u.id.to_s.center(id_length) + '|' + u.login.center(login_length) + '|' + u.display_name.center(display_name_length) + '|'
end
puts left_margin + '+' * (id_length + login_length + display_name_length + 4)
self.each do |wp_user|
row = [wp_user.id, wp_user.display_name]
row << wp_user.password if options[:show_password]
rows << row
end
puts Terminal::Table.new(headings: headings,
rows: rows,
style: { margin_left: options[:margin_left] || '' })
end
end
end