class RuboCop::Cop::Rails::ExpandedDateRange
This cop checks for expanded date range. It only compatible `..` range is targeted. Incompatible `…` range is ignored.
@example
# bad date.beginning_of_day..date.end_of_day date.beginning_of_week..date.end_of_week date.beginning_of_month..date.end_of_month date.beginning_of_quarter..date.end_of_quarter date.beginning_of_year..date.end_of_year # good date.all_day date.all_week date.all_month date.all_quarter date.all_year
Constants
- MAPPED_DATE_RANGE_METHODS
- MSG
- PREFERRED_METHODS
Public Instance Methods
on_irange(node)
click to toggle source
# File lib/rubocop/cop/rails/expanded_date_range.rb, line 56 def on_irange(node) return unless expanded_date_range(node) begin_node = node.begin end_node = node.end return unless same_receiver?(begin_node, end_node) beginning_method = begin_node.method_name end_method = end_node.method_name return unless use_mapped_methods?(beginning_method, end_method) preferred_method = "#{begin_node.receiver.source}.#{PREFERRED_METHODS[beginning_method]}" add_offense(node, message: format(MSG, preferred_method: preferred_method)) do |corrector| corrector.replace(node, preferred_method) end end
Private Instance Methods
same_receiver?(begin_node, end_node)
click to toggle source
# File lib/rubocop/cop/rails/expanded_date_range.rb, line 76 def same_receiver?(begin_node, end_node) begin_node.receiver.source == end_node.receiver.source end
use_mapped_methods?(beginning_method, end_method)
click to toggle source
# File lib/rubocop/cop/rails/expanded_date_range.rb, line 80 def use_mapped_methods?(beginning_method, end_method) MAPPED_DATE_RANGE_METHODS[beginning_method] == end_method end