class LinkDecisionHelper

Constants

ALLOWED_TYPES
DEFAULT_TITLE
DEFAULT_URL

Public Class Methods

clear_type!(type:) click to toggle source
# File lib/link_decision_helper.rb, line 12
def self.clear_type!(type:)
  raise "Unexpected type [#{type}]. Expected #{ALLOWED_TYPES}" unless ALLOWED_TYPES.include?(type)
  Rails.application.config.public_send("#{type}=", [])
end
new(title:, url:, type:, display: true, default_type: nil, config: nil, _blank: false) click to toggle source
# File lib/link_decision_helper.rb, line 17
def initialize(title:, url:, type:, display: true, default_type: nil, config: nil, _blank: false)
  raise NotOnAllowListError, "Unexpected type [#{type}]. Expected #{ALLOWED_TYPES}" unless ALLOWED_TYPES.include?(type)

  @config = config
  @type = type
  @url = url
  @title = title
  @display = display
  @_blank = _blank

  if default_type && ALLOWED_TYPES.include?(default_type)
    assign_default!
  elsif default_type && !ALLOWED_TYPES.include?(default_type)
    raise NotOnAllowListError, 'unexpected default value'
  end
end

Public Instance Methods

assign!(index: -1) click to toggle source
# File lib/link_decision_helper.rb, line 34
def assign!(index: -1)
  config.public_send(@type).insert(index, self)
end
blank?() click to toggle source
# File lib/link_decision_helper.rb, line 46
def blank?
  @_blank
end
display?(current_user) click to toggle source
# File lib/link_decision_helper.rb, line 50
def display?(current_user)
  get_value(@display, current_user)
end
title() click to toggle source
# File lib/link_decision_helper.rb, line 42
def title
  get_value(@title)
end
url() click to toggle source
# File lib/link_decision_helper.rb, line 38
def url
  get_value(@url)
end

Private Instance Methods

assign_default!() click to toggle source
# File lib/link_decision_helper.rb, line 60
def assign_default!
  case @type
  when NAVBAR_LOGGED_IN
    @url = DEFAULT_URL
    @title = DEFAULT_TITLE
  end
end
config() click to toggle source
# File lib/link_decision_helper.rb, line 68
def config
  @config ||= Rails.application.config
end
get_value(thing, *args) click to toggle source
# File lib/link_decision_helper.rb, line 56
def get_value(thing, *args)
  thing.is_a?(Proc) ? thing.call(*args) : thing
end