def initialize(options = {})
self.autostart = options.fetch(:autostart, true)
self.autofinish = options.fetch(:autofinish, true)
self.finished = false
self.timer = Timer.new(options)
self.progressable = Progress.new(options)
options = options.merge(:timer => timer,
:progress => progressable)
self.title_comp = Components::Title.new(options)
self.bar = Components::Bar.new(options)
self.percentage = Components::Percentage.new(options)
self.rate = Components::Rate.new(options)
self.time = Components::Time.new(options)
self.output = Output.detect(options.merge(:bar => self))
@format = Format::String.new(output.resolve_format(options[:format]))
start :at => options[:starting_at] if autostart
end