Archived
1
0
Fork 0
This repository has been archived on 2023-03-27. You can view files and clone it, but cannot push or open issues or pull requests.
cli-old/lib/widgets/chat/history.rb

56 lines
1.1 KiB
Ruby
Raw Normal View History

2017-07-21 14:04:59 -04:00
# frozen_string_literal: true
module Widgets
2017-07-22 05:00:28 -04:00
class Chat < VPanel
class History < Base
attr_reader :messages
2017-07-21 14:04:59 -04:00
def initialize(x, y, width, height)
2017-07-22 05:00:28 -04:00
super
@messages = 1.upto(100).map do
{
2017-07-24 07:39:24 -04:00
out: rand <= 0.2,
time: Faker::Time.forward,
name: Faker::Name.name,
text: Faker::Lorem.sentence.freeze,
}
end
end
2017-07-22 09:03:10 -04:00
def draw
offset = 0
messages.each do |msg|
2017-07-24 07:39:24 -04:00
offset = draw_message offset, msg[:out], msg[:time].strftime('%H:%M:%S'), msg[:name], msg[:text]
break if offset >= height
end
2017-07-21 14:04:59 -04:00
end
2017-07-24 07:39:24 -04:00
def draw_message(offset, out, time, name, text)
2017-07-22 10:31:38 -04:00
setpos 0, offset
2017-07-24 05:52:42 -04:00
Style.default.message_time window do
2017-07-22 14:46:50 -04:00
addstr time
2017-07-22 05:46:15 -04:00
end
2017-07-22 14:46:50 -04:00
addstr ' '
2017-07-22 05:46:15 -04:00
2017-07-24 05:52:42 -04:00
Style.default.message_author window do
2017-07-22 14:46:50 -04:00
addstr name
2017-07-22 05:46:15 -04:00
end
2017-07-24 07:36:10 -04:00
lines = (text.length / width.to_f).ceil
1.upto lines do |line|
2017-07-22 10:31:38 -04:00
setpos 0, offset + line
2017-07-24 07:36:10 -04:00
addstr text[(width * (line - 1))...(width * line)]
end
offset + 1 + lines
end
2017-07-21 14:04:59 -04:00
end
end
end