Skip to content

Commit 972fb94

Browse files
committed
returned progressbar
1 parent 5b5ace3 commit 972fb94

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

task-1.rb

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
require 'pry'
55
require 'date'
66
require 'minitest/autorun'
7+
require 'ruby-progressbar'
78

89
class User
910
attr_reader :attributes, :sessions
@@ -43,20 +44,23 @@ def collect_stats_from_users(report, users_objects, &block)
4344
end
4445
end
4546

46-
def work(file_name: "data.txt", disable_gc: false)
47+
def work(file_name: "data.txt", disable_gc: false, progress_bar: true)
4748
GC.disable if disable_gc
4849
file_lines = File.read(file_name).split("\n")
4950

5051
users = []
5152
sessions = []
5253

54+
file_progressbar = progress_bar ? ProgressBar.create(title: "Reading File", total: file_lines.count, format: '%t: |%B| %p%% %e') : nil
55+
5356
file_lines.each do |line|
5457
case
5558
when line.start_with?('user,')
5659
users << parse_user(line)
5760
when line.start_with?('session,')
5861
sessions << parse_session(line)
5962
end
63+
increment_progressbar(file_progressbar)
6064
end
6165

6266
# Отчёт в json
@@ -101,10 +105,13 @@ def work(file_name: "data.txt", disable_gc: false)
101105
sessions_by_user[user_id] << session
102106
end
103107

108+
user_progressbar = progress_bar ? ProgressBar.create(title: "Processing Users", total: users.count, format: '%t: |%B| %p%% %e') : nil
109+
104110
users_objects = users.map do |user|
105111
user_id = user['id']
106112
user_sessions = sessions_by_user[user_id] || []
107113
user_object = User.new(attributes: user, sessions: user_sessions)
114+
increment_progressbar(user_progressbar)
108115
user_object
109116
end
110117

@@ -148,6 +155,10 @@ def work(file_name: "data.txt", disable_gc: false)
148155
File.write('result.json', "#{report.to_json}\n")
149156
end
150157

158+
def increment_progressbar(progressbar)
159+
progressbar&.increment
160+
end
161+
151162
class TestMe < Minitest::Test
152163
def setup
153164
File.write('result.json', '')

0 commit comments

Comments
 (0)