# frozen_string_literal: true module Togglefy # The FeatureAssignableManager class provides methods to manage features # for an assignable object, such as enabling, disabling, and clearing features. class FeatureAssignableManager # Initializes a new FeatureAssignableManager. # # @param assignable [Object] The assignable object to manage features for. def initialize(assignable) @assignable = assignable end # Enables a feature for the assignable. # # @param feature [Togglefy::Feature, Symbol, String] The feature or its identifier. # @return [FeatureAssignableManager] Returns self for method chaining. def enable(feature) assignable.add_feature(feature) self end # Disables a feature for the assignable. # # @param feature [Togglefy::Feature, Symbol, String] The feature or its identifier. # @return [FeatureAssignableManager] Returns self for method chaining. def disable(feature) assignable.remove_feature(feature) self end # Clears all features from the assignable. # # @return [FeatureAssignableManager] Returns self for method chaining. def clear assignable.clear_features self end # Checks if the assignable has a specific feature. # # @param feature [Togglefy::Feature, Symbol, String] The feature or its identifier. # @return [Boolean] True if the feature exists, false otherwise. def has?(feature) assignable.has_feature?(feature) end private # @return [Object] The assignable object being managed. attr_reader :assignable end end