123456789101112131415161718192021222324252627282930313233343536373839404142 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- # Classes that extend this module need a PREFIX constant.
- module Sequencer::Mixin::PrefixedConstantize
- # Returns the class for a given name String independend of the prefix.
- #
- # @param [String] sequence the name String for the requested class
- #
- # @example
- # Sequencer::Sequence.constantize('ExampleSequence')
- # #=> Sequencer::Sequence::ExampleSequence
- #
- # @example
- # Sequencer::Unit.constantize('Sequencer::Unit::Example::Unit')
- # #=> Sequencer::Unit::Example::Unit
- #
- # @return [Object] the class for the given String
- def constantize(name_string)
- namespace(name_string).constantize
- end
- # Returns the complete class namespace for a given name String
- # independend of the prefix.
- #
- # @param [String] sequence the name String for the requested class namespace
- #
- # @example
- # Sequencer::Sequence.namespace('ExampleSequence')
- # #=> 'Sequencer::Sequence::ExampleSequence'
- #
- # @example
- # Sequencer::Unit.namespace('Sequencer::Unit::Example::Unit')
- # #=> 'Sequencer::Unit::Example::Unit'
- #
- # @return [String] the class namespace for the given String
- def namespace(name_string)
- prefix = const_get(:PREFIX)
- return name_string if name_string.start_with?(prefix)
- "#{prefix}#{name_string}"
- end
- end
|