lib/solve.rb in solve-0.7.0 vs lib/solve.rb in solve-0.8.0

- old
+ new

@@ -6,29 +6,37 @@ require_relative 'solve/gem_version' require_relative 'solve/errors' require_relative 'solve/graph' require_relative 'solve/solver' require_relative 'solve/version' + require_relative 'solve/tracers' class << self + # @return [Solve::Formatter] + attr_reader :tracer + # A quick solve. Given the "world" as we know it (the graph) and a list of # requirements (demands) which must be met. Return me the best solution of # artifacts and verisons that I should use. # # If a ui object is passed in, the resolution will be traced # # @param [Solve::Graph] graph # @param [Array<Solve::Demand>, Array<String, String>] demands # # @option options [#say] :ui (nil) - # a ui object for output + # a ui object for output, this will be used to output from a Solve::Tracers::HumanReadable if + # no other tracer is provided in options[:tracer] + # @option options [AbstractTracer] :tracer (nil) + # a Tracer object that is used to format and output tracing information # @option options [Boolean] :sorted (false) # should the output be a sorted list rather than a Hash # # @raise [NoSolutionError] # # @return [Hash] def it!(graph, demands, options = {}) + @tracer = options[:tracer] || Solve::Tracers.build(options[:ui]) Solver.new(graph, demands, options[:ui]).resolve(options) end end end