Sha256: 1c1724a8d0851298d71483bc2db9531e2c5515ebe70fd5fabb5926c8f14f3ec5

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 KB

Contents

# Experimental work-in-progress LDIF implementation.
# Don't care this file for now.

require 'strscan'

module ActiveLdap
  class Ldif
    include GetTextSupport

    class Parser
      include GetTextSupport

      attr_reader :ldif
      def initialize(source)
        @ldif = nil
        source = source.to_s if source.is_a?(LDIF)
        @source = source
      end

      def parse
        return @ldif if @ldif

        scanner = StringScanner.new(@source)
        raise version_spec_is_missing unless scanner.scan(/version:\s*(\d+)/)

        version = Integer(scanner[1])
        raise unsupported_version(version) if version != "1"
      end

      private
      def invalid_ldif(reason)
        LdifInvalid.new(@source, reason)
      end

      def version_spec_is_missing
        invalid_ldif(_("version spec is missing"))
      end

      def unsupported_version(version)
        invalid_ldif(_("unsupported version: %d") % version)
      end
    end

    class << self
      def parse(ldif)
        Parser.new(ldif).parse
      end
    end
  end

  LDIF = Ldif
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
activeldap-0.9.0 lib/active_ldap/ldif.rb