# module ActiveLdap::Attributes::Normalizable

### Public Instance Methods

normalize_attribute(name, value) click to toggle source

Enforce typing: Hashes are for subtypes Arrays are for multiple entries

    # File lib/active_ldap/attributes.rb, line 69
    def normalize_attribute(name, value)
      if name.nil?
        raise RuntimeError, _('The first argument, name, must not be nil. '                                  'Please report this as a bug!')
      end

      name = normalize_attribute_name(name)
      [name, schema.attribute(name).normalize_value(value)]
    end

normalize_attribute_name(name) click to toggle source

    # File lib/active_ldap/attributes.rb, line 62
    def normalize_attribute_name(name)
      name.to_s.downcase
    end

normalize_attribute_options(attr, value) click to toggle source

#normalize_attribute_options

Makes the Hashized value from the full attribute name e.g. userCertificate;binary => “some_bin”

    becomes userCertificate => {"binary" => "some_bin"}

    # File lib/active_ldap/attributes.rb, line 114
    def normalize_attribute_options(attr, value)
      return [attr, value] unless attr.match(/;/)

      ret_attr, *options = attr.split(/;/)
      [ret_attr,
       [options.reverse.inject(value) {|result, option| {option => result}}]]
    end

unnormalize_attribute(name, values, result={}) click to toggle source

    # File lib/active_ldap/attributes.rb, line 87
    def unnormalize_attribute(name, values, result={})
      if values.empty?
        result[name] = []
      else
        values.each do |value|
          if value.is_a?(Hash)
            suffix, real_value = unnormalize_attribute_options(value)
            new_name = name + suffix
            unnormalize_attribute(new_name, real_value, result)
          else
            result[name] ||= []
            if value.is_a?(DN)
              result[name] << value.to_s
            else
              result[name] << value.dup
            end
          end
        end
      end
      result
    end

unnormalize_attribute_options(value) click to toggle source

#unnormalize_attribute_options

Unnormalizes all of the subtypes from a given set of nested hashes and returns the attribute suffix and the final true value

    # File lib/active_ldap/attributes.rb, line 126
    def unnormalize_attribute_options(value)
      options = ''
      ret_val = value
      if value.class == Hash
        options = ';' + value.keys[0]
        ret_val = value[value.keys[0]]
        if ret_val.class == Hash
          sub_options, ret_val = unnormalize_attribute_options(ret_val)
          options += sub_options
        end
      end
      ret_val = [ret_val] unless ret_val.class == Array
      [options, ret_val]
    end

unnormalize_attributes(attributes) click to toggle source

    # File lib/active_ldap/attributes.rb, line 79
    def unnormalize_attributes(attributes)
      result = {}
      attributes.each do |name, values|
        unnormalize_attribute(name, values, result)
      end
      result
    end