Krystosterone/rubik

View on GitHub
app/models/breadcrumb/crumb.rb

Summary

Maintainability
A
45 mins
Test Coverage
# frozen_string_literal: true
 
class Breadcrumb::Crumb
include ActiveModel::Model
 
attr_accessor :additional_current_condition, :controller_name, :key, :path, :view_context, :visible
 
def initialize(*)
super
set_defaults
set_current_proc
end
 
%w[additional_current_condition path].each do |attribute|
define_method(attribute) do
view_context.instance_eval(&instance_variable_get("@#{attribute}"))
end
end
 
%w[current visible].each do |attribute|
define_method("#{attribute}?") do
view_context.instance_eval(&instance_variable_get("@#{attribute}"))
end
end
 
private
 
Method `set_defaults` has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
def set_defaults
@additional_current_condition = proc { true } unless defined?(@additional_current_condition)
@controller_name = key.split(".").first unless defined?(@controller_name)
@key = controller_name unless defined?(@key)
@visible = proc { true } unless defined?(@visible)
end
 
def set_current_proc
crumb = self
@current = proc { crumb.controller_name.to_s.casecmp(controller_name).zero? && crumb.additional_current_condition }
end
end