class RegexpExamples::MaxResultsLimiter
Abstract (base) class to assist limiting Regexp.examples max results
Public Class Methods
new(initial_results_count)
click to toggle source
# File lib/regexp-examples/max_results_limiter.rb, line 4 def initialize(initial_results_count) @results_count = initial_results_count end
Private Instance Methods
cumulate_total(new_results_count, cumulator_method)
click to toggle source
# File lib/regexp-examples/max_results_limiter.rb, line 19 def cumulate_total(new_results_count, cumulator_method) @results_count = if @results_count.zero? new_results_count else @results_count.public_send(cumulator_method, new_results_count) end end
limit_results(partial_results, limiter_method, cumulator_method)
click to toggle source
limiter_method and cumulator_method must be inverses i.e. :- and :+, or :/ and :*
# File lib/regexp-examples/max_results_limiter.rb, line 12 def limit_results(partial_results, limiter_method, cumulator_method) return [] if partial_results.empty? # guard clause results_allowed = results_allowed_from(partial_results, limiter_method) cumulate_total(results_allowed.length, cumulator_method) results_allowed end
results_allowed_from(partial_results, limiter_method)
click to toggle source
# File lib/regexp-examples/max_results_limiter.rb, line 27 def results_allowed_from(partial_results, limiter_method) partial_results.first( RegexpExamples::Config.max_results_limit .public_send(limiter_method, @results_count) ) end