Class: Tilia::VObject::Writer

Inherits:
Object
  • Object
show all
Defined in:
lib/tilia/v_object/writer.rb

Overview

iCalendar/vCard/jCal/jCard/xCal/xCard writer object.

This object provides a few (static) convenience methods to quickly access the serializers.

Class Method Summary collapse

Class Method Details

.write(component) ⇒ String

Serializes a vCard or iCalendar object.

Parameters:

Returns:

  • (String)


14
15
16
# File 'lib/tilia/v_object/writer.rb', line 14

def self.write(component)
  component.serialize
end

.write_json(component) ⇒ String

Serializes a jCal or jCard object.

Parameters:

Returns:

  • (String)


24
25
26
# File 'lib/tilia/v_object/writer.rb', line 24

def self.write_json(component)
  component.json_serialize.to_json
end

.write_xml(component) ⇒ String

Serializes a xCal or xCard object.

Parameters:

Returns:

  • (String)


33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/tilia/v_object/writer.rb', line 33

def self.write_xml(component)
  writer = Tilia::Xml::Writer.new
  writer.open_memory
  writer.set_indent(true)

  writer.start_document(encoding: LibXML::XML::Encoding::UTF_8)

  if component.is_a? Tilia::VObject::Component::VCalendar
    writer.start_element('icalendar')
    writer.write_attribute('xmlns', Tilia::VObject::Parser::Xml::XCAL_NAMESPACE)
  else
    writer.start_element('vcards')
    writer.write_attribute('xmlns', Tilia::VObject::Parser::Xml::XCARD_NAMESPACE)
  end

  component.xml_serialize(writer)

  writer.end_element

  writer.output_memory
end