# # Copyright (c) 2016-2018 Patrick Thomas. All rights reserved. # module Cayuga module Object # Named Object Class module NamedObjectClass def valid_name?(_factory, name) name != nil end def primary?(_name) true end def primary(name) name end def create(factory, name) if primary?(name) primary = name alternate = nil else primary = primary(name) alternate = name end verify_name_validity(factory, primary, alternate) instance = create_primary(factory, primary(name)) factory.register(instance, self, alternate) unless alternate.nil? instance end private def verify_name_validity(factory, name, alternate) # check validity of name unless valid_name?(factory, name) raise "'#{self}['#{name}'] is not a valid #{self}" end # name valid # check alternate valid if exists unless alternate.nil? unless valid_name?(factory, alternate) raise "'#{self}['#{alternate}'] is not a valid #{self}" end end # alternate valid true end def create_primary(factory, name) if factory.registered?(self, name) instance = factory[self, name] else instance = new(factory, name) factory.register(instance, self, name) end instance end end end end