class ROM::LDAP::DSML::Exporter

Export Entry objects as DSML files.

@param tuple [Entry]

@api private

Public Instance Methods

to_dsml() click to toggle source
<?xml version="1.0" encoding="UTF-8"?>
<dsml>
  <directory-entries>
    <entry dn="dn">

@return [String]

@api private

# File lib/rom/ldap/extensions/dsml.rb, line 41
def to_dsml
  doc = XML::Document.new
  doc.encoding = XML::Encoding::UTF_8
  doc.root = root = create_node('dsml')
  root << (entries = create_node('directory-entries'))
  map_tuples { |entry| entries << entry }
  doc.to_s
end

Private Instance Methods

attributes(attrs) { |attr_node| ... } click to toggle source

@example

{'cn'=>['Peter']}
  => <attr name="cn"><value>Peter</value></attr>

@yield [LibXML::XML::Node]

# File lib/rom/ldap/extensions/dsml.rb, line 98
def attributes(attrs)
  attrs.each do |attr_name, attr_values|
    attr_node = create_node('attr', name: attr_name)
    attr_values.each do |value|
      value_node = create_node('value')
      value_node.content = value
      attr_node << value_node
    end
    yield(attr_node)
  end
end
classes(values) { |class_node| ... } click to toggle source

Returns “<objectclass/>” if param is nil

<oc-value>inetOrgPerson</oc-value>

@param [Array, Nil] values

@yield [LibXML::XML::Node]

# File lib/rom/ldap/extensions/dsml.rb, line 81
def classes(values)
  class_node = create_node('objectclass')
  values.to_a.each do |value|
    value_node = create_node('oc-value')
    value_node.content = value
    class_node << value_node
  end
  yield(class_node)
end
create_node(type, params = EMPTY_OPTS) click to toggle source

@return [LibXML::XML::Node]

# File lib/rom/ldap/extensions/dsml.rb, line 113
def create_node(type, params = EMPTY_OPTS)
  node = XML::Node.new(type)
  unless params.empty?
    params.each do |key, value|
      XML::Attr.new(node, key.to_s, value.to_s)
    end
  end
  node
end
map_tuples() { |entry_node| ... } click to toggle source

<entry dn=“dn”>

@yield [LibXML::XML::Node]

# File lib/rom/ldap/extensions/dsml.rb, line 56
def map_tuples
  tuples.each do |tuple|
    next if tuple.empty?

    dn   = tuple.delete('dn')
    objc = tuple.delete('objectClass')

    entry_node = create_node('entry', dn: dn&.first)

    classes(objc) { |c| entry_node << c }

    attributes(tuple) { |a| entry_node << a }

    yield(entry_node)
  end
end