Class: Tilia::Xml::Element::Uri

Inherits:
Object
  • Object
show all
Includes:
Tilia::Xml::Element
Defined in:
lib/tilia/xml/element/uri.rb

Overview

Uri element.

This represents a single uri. An example of how this may be encoded:

<link>/foo/bar</link>
<d:href xmlns:d="DAV:">http://example.org/hi</d:href>

If the uri is relative, it will be automatically expanded to an absolute url during writing and reading, if the contextUri property is set on the reader and/or writer.

Class Method Summary collapse

Instance Method Summary collapse

Methods included from XmlDeserializable

#xml_deserialize

Constructor Details

#initialize(value) ⇒ Uri

Constructor

Parameters:

  • value (String)


29
30
31
# File 'lib/tilia/xml/element/uri.rb', line 29

def initialize(value)
  @value = value
end

Class Method Details

.xml_deserialize(reader) ⇒ Object

This method is called during xml parsing.

This method is called statically, this is because in theory this method may be used as a type of constructor, or factory method.

Often you want to return an instance of the current class, but you are free to return other data as well.

Important note 2: You are responsible for advancing the reader to the next element. Not doing anything will result in a never-ending loop.

If you just want to skip parsing for this element altogether, you can just call reader->next();

reader->parseSubTree() will parse the entire sub-tree, and advance to the next element.

Parameters:

Returns:

  • mixed



78
79
80
81
82
83
84
85
# File 'lib/tilia/xml/element/uri.rb', line 78

def self.xml_deserialize(reader)
  new(
    ::Tilia::Uri.resolve(
      reader.context_uri,
      reader.read_text
    )
  )
end

Instance Method Details

#==(other) ⇒ Object

TODO: document



88
89
90
91
92
93
94
# File 'lib/tilia/xml/element/uri.rb', line 88

def ==(other)
  if other.is_a? self.class
    other.instance_eval { @value } == @value
  else
    false
  end
end

#xml_serialize(writer) ⇒ void

This method returns an undefined value.

The xml_serialize metod is called during xml writing.

Use the writer argument to write its own xml serialization.

An important note: do not create a parent element. Any element implementing XmlSerializble should only ever write what’s considered its ‘inner xml’.

The parent of the current element is responsible for writing a containing element.

This allows serializers to be re-used for different element names.

If you are opening new elements, you must also close them again.

Parameters:



50
51
52
53
54
55
56
57
# File 'lib/tilia/xml/element/uri.rb', line 50

def xml_serialize(writer)
  writer.write_string(
    ::Tilia::Uri.resolve(
      writer.context_uri,
      @value
    )
  )
end