Sha256: 5c52915c140f926062c84097c309ca23815407c0e946d2ad21f1869f68f78b67
Contents?: true
Size: 789 Bytes
Versions: 5
Compression:
Stored size: 789 Bytes
Contents
module Enumerable Groupdate::PERIODS.each do |period| define_method :"group_by_#{period}" do |*args, &block| if block Groupdate::Magic.new(period, args[0] || {}).group_by(self, &block) elsif respond_to?(:scoping) scoping { @klass.send(:"group_by_#{period}", *args, &block) } else raise ArgumentError, "no block given" end end end def group_by_period(period, options = {}, &block) # to_sym is unsafe on user input, so convert to strings permitted_periods = ((options[:permit] || Groupdate::PERIODS).map(&:to_sym) & Groupdate::PERIODS).map(&:to_s) if permitted_periods.include?(period.to_s) send("group_by_#{period}", options, &block) else raise ArgumentError, "Unpermitted period" end end end
Version data entries
5 entries across 5 versions & 1 rubygems