module Primer::FetchOrFallbackHelper
def fetch_or_fallback(allowed_values, given_value, fallback = nil, deprecated_values: nil)
def fetch_or_fallback(allowed_values, given_value, fallback = nil, deprecated_values: nil) if allowed_values.include?(given_value) given_value elsif deprecated_values&.include?(given_value) ::Primer::ViewComponents.deprecation.warn("#{given_value} is deprecated and will be removed in a future version.") unless Rails.env.production? || silence_deprecations? given_value else if fallback_raises && ENV["RAILS_ENV"] != "production" raise InvalidValueError, <<~MSG fetch_or_fallback was called with an invalid value. Expected one of: #{allowed_values.inspect} Got: #{given_value.inspect} This will not raise in production, but will instead fallback to: #{fallback.inspect} MSG end fallback end end
def fetch_or_fallback_boolean(given_value, fallback = false)
def fetch_or_fallback_boolean(given_value, fallback = false) if [true, false].include?(given_value) given_value else fallback end end
def silence_deprecations?
def silence_deprecations? Rails.application.config.primer_view_components.silence_deprecations end