class RuboCop::Schema::CopInfoMerger
Attributes
merged[R]
@return [CopInfo]
Public Class Methods
merge(old, new)
click to toggle source
@param [CopInfo] old @param [CopInfo] new @return [CopInfo]
# File lib/rubocop/schema/cop_info_merger.rb, line 7 def self.merge(old, new) new(old, new).merged end
new(old, new)
click to toggle source
# File lib/rubocop/schema/cop_info_merger.rb, line 14 def initialize(old, new) @merged = old.dup @new = new merge end
Private Instance Methods
merge()
click to toggle source
# File lib/rubocop/schema/cop_info_merger.rb, line 22 def merge @merged.supports_autocorrect = @new.supports_autocorrect if @merged.supports_autocorrect.nil? @merged.enabled_by_default = @new.enabled_by_default if @merged.enabled_by_default.nil? @merged.attributes = merge_attribute_sets(@merged.attributes, @new.attributes) @merged.description ||= @new.description end
merge_attribute_sets(old, new)
click to toggle source
@param [Array<Attribute>] old @param [Array<Attribute>] new @return [Array<Attribute>]
# File lib/rubocop/schema/cop_info_merger.rb, line 32 def merge_attribute_sets(old, new) return old || new unless old && new merged = old.map { |attr| [attr.name, attr] }.to_h new.each do |attr| merged[attr.name] = merged.key?(attr.name) ? merge_attributes(merged[attr.name], attr) : attr end merged.values end
merge_attributes(old, new)
click to toggle source
@param [Attribute] old @param [Attribute] new @return [Attribute]
# File lib/rubocop/schema/cop_info_merger.rb, line 46 def merge_attributes(old, new) old.dup.tap do |merged| merged.type ||= new.type merged.default ||= new.default end end