Class: Tilia::Xml::Element::Uri
- Inherits:
-
Object
- Object
- Tilia::Xml::Element::Uri
- 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
-
.xml_deserialize(reader) ⇒ Object
This method is called during xml parsing.
Instance Method Summary collapse
-
#==(other) ⇒ Object
TODO: document.
-
#initialize(value) ⇒ Uri
constructor
Constructor.
-
#xml_serialize(writer) ⇒ void
The xml_serialize metod is called during xml writing.
Methods included from XmlDeserializable
Constructor Details
#initialize(value) ⇒ Uri
Constructor
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.
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.
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 |