class Lutaml::Model::Type::Reference
def self.cast_with_metadata(value, model_class, key_attribute)
def self.cast_with_metadata(value, model_class, key_attribute) return value if value.is_a?(Reference) new(model_class, key_attribute, value) end
def self.serialize(value)
def self.serialize(value) case value when Reference value.key else value.to_s end end
def self.xsd_type(target_xsd_type = nil)
-
(String)- xs:IDREF or xs:string
Parameters:
-
target_xsd_type(String, nil) -- the XSD type of the target attribute
def self.xsd_type(target_xsd_type = nil) target_xsd_type == "xs:ID" ? "xs:IDREF" : "xs:string" end
def initialize(model_class, key_attribute, key = nil)
def initialize(model_class, key_attribute, key = nil) @model_class = model_class.to_s @key_attribute = key_attribute @key = key super(object) end
def model_instance?(value)
def model_instance?(value) return false unless value klass = Object.const_get(@model_class) value.instance_of?(klass) rescue NameError false end
def object
def object return @value if resolved? return nil unless @key @value = Lutaml::Model::Store.resolve(@model_class, @key_attribute, @key) @value end
def pretty_print_instance_variables
def pretty_print_instance_variables (instance_variables - %i[@value @key_attribute @model_class]).sort end
def resolved?
def resolved? model_instance?(@value) end