Class: Lutaml::Model::Type::QName

Inherits:
Value
  • Object
show all
Defined in:
lib/lutaml/model/type/qname.rb

Overview

QName (Qualified Name) type

Represents XML qualified names in prefix:localName format

Examples:

Using QName type

attribute :ref_type, :qname

Constant Summary

Constants inherited from Value

Value::EMPTY_OPTIONS

Instance Attribute Summary collapse

Attributes inherited from Value

#value

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Value

format_type_serializer_for, from_format, #initialized?, register_format_to_from_methods, register_format_type_serializer

Methods included from Xml::Type::Configurable

included

Methods included from UninitializedClassGuard

#cast, #serialize

Constructor Details

#initialize(value) ⇒ QName

Returns a new instance of QName.



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/lutaml/model/type/qname.rb', line 16

def initialize(value)
  if value.is_a?(QName)
    @prefix = value.prefix
    @local_name = value.local_name
    @namespace_uri = value.namespace_uri
    @value = value.to_s
  else
    @value = self.class.cast(value)
    parse_qname(@value) if @value
  end
end

Instance Attribute Details

#local_nameObject (readonly)

Returns the value of attribute local_name.



13
14
15
# File 'lib/lutaml/model/type/qname.rb', line 13

def local_name
  @local_name
end

#namespace_uriObject

Returns the value of attribute namespace_uri.



14
15
16
# File 'lib/lutaml/model/type/qname.rb', line 14

def namespace_uri
  @namespace_uri
end

#prefixObject (readonly)

Returns the value of attribute prefix.



13
14
15
# File 'lib/lutaml/model/type/qname.rb', line 13

def prefix
  @prefix
end

Class Method Details

.cast(value, _options = {}) ⇒ Object



28
29
30
31
32
33
34
# File 'lib/lutaml/model/type/qname.rb', line 28

def self.cast(value, _options = {})
  return nil if value.nil?
  return value if Utils.uninitialized?(value)
  return value.to_s if value.is_a?(QName)

  value.to_s
end

.default_xsd_typeString

XSD type for QName

Returns:



46
47
48
# File 'lib/lutaml/model/type/qname.rb', line 46

def self.default_xsd_type
  "xs:QName"
end

.from_parts(local_name:, prefix: nil, namespace_uri: nil) ⇒ QName

Create QName from components

Parameters:

  • prefix (String, nil) (defaults to: nil)

    the namespace prefix

  • local_name (String)

    the local name

  • namespace_uri (String, nil) (defaults to: nil)

    the namespace URI

Returns:

  • (QName)

    the QName instance



60
61
62
63
64
65
# File 'lib/lutaml/model/type/qname.rb', line 60

def self.from_parts(local_name:, prefix: nil, namespace_uri: nil)
  qname_str = prefix ? "#{prefix}:#{local_name}" : local_name
  new(qname_str).tap do |qname|
    qname.namespace_uri = namespace_uri
  end
end

.serialize(value) ⇒ Object



36
37
38
39
40
41
# File 'lib/lutaml/model/type/qname.rb', line 36

def self.serialize(value)
  return nil if value.nil?
  return value.to_s if value.is_a?(QName)

  value.to_s
end

Instance Method Details

#to_sObject



50
51
52
# File 'lib/lutaml/model/type/qname.rb', line 50

def to_s
  @value
end