Module: Ke

Defined in:
lib/ke.rb,
lib/ke/job.rb,
lib/ke/version.rb,
lib/ke/capped_sample.rb,
lib/ke/determinate_task.rb,
lib/ke/indeterminate_task.rb,
lib/ke/reporters/multi_line_reporter.rb,
lib/ke/reporters/single_line_reporter.rb

Defined Under Namespace

Classes: CappedSample, DeterminateTask, IndeterminateTask, Job, MultiLineReporter, SingleLineReporter

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.job(*args, &blk) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/ke.rb', line 10

def self.job(*args, &blk)
  total_ticks = args[0] if Integer === args[0]
  label = args[1] if String === args[1]
  opts = args.detect { |arg| Hash === arg } || {}

  task_class = total_ticks ? DeterminateTask : IndeterminateTask
  task_opts = opts[:task_opts] || {}
  task_opts = task_opts.merge(total_ticks: total_ticks) if total_ticks

  reporter_class = opts[:reporter] || MultiLineReporter
  reporter_label = label || "task"
  reporter_io = opts[:io] || STDOUT

  job_class = Job
  job_opts = opts || {}

  task = task_class.new(task_opts)
  reporter = reporter_class.new(task, reporter_label, reporter_io)
  job = job_class.new(task, reporter, job_opts)

  job.run(&blk)
end