require 'r10k/errors' require 'r10k/settings/collection' module R10K module Settings module Helpers def self.included(klass) klass.send(:include, InstanceMethods) klass.send(:extend, ClassMethods) end module InstanceMethods # Assign a parent collection to this setting. Parent may only be # assigned once. # # @param new_parent [R10K::Settings::Collection] Parent collection def parent=(new_parent) unless @parent.nil? raise R10K::Error.new("#{self.class} instances cannot be reassigned to a new parent.") end unless new_parent.is_a?(R10K::Settings::Collection) || new_parent.is_a?(R10K::Settings::List) raise R10K::Error.new("#{self.class} instances may only belong to a settings collection or list.") end @parent = new_parent end def parent @parent end end module ClassMethods end end end end