Class ActiveLdap::Ldif::Scanner
In: lib/active_ldap/ldif.rb
Parent: Object
Error AttributeAssignmentError AdapterNotSpecified OperationNotPermitted RequiredObjectClassMissed ConnectionError RequiredAttributeMissed LdifInvalid DistinguishedNameNotSetError EntryNotFound LdapError SaveError StrongAuthenticationRequired NotImplemented AdapterNotFound TimeoutError AuthenticationError AttributeValueInvalid EntryNotSaved DistinguishedNameInputInvalid EntryAlreadyExist ObjectClassError UnknownAttribute EntryInvalid DeleteError ConfigurationError ConnectionNotSetup DistinguishedNameInvalid Schema\n[lib/active_ldap/schema.rb\nlib/active_ldap/schema/syntaxes.rb] Base DistinguishedName Reloadable::Deprecated Reloadable::Subclasses Enumerable Ldif Collection EntryAttribute StandardError Children HasManyWrap HasMany BelongsToMany Proxy BelongsTo Normalizable Common Find LDIF Delete Update ActiveRecord::Callbacks GetText Parser Base\n[lib/active_ldap/adapter/base.rb\nlib/active_ldap/adapter/jndi.rb\nlib/active_ldap/adapter/ldap.rb\nlib/active_ldap/adapter/net_ldap.rb] Jndi Ldap NetLdap GetTextSupport ActiveRecord::Validations Xml JndiConnection lib/active_ldap/distinguished_name.rb lib/active_ldap/base.rb lib/active_ldap/xml.rb lib/active_ldap/schema.rb lib/active_ldap/entry_attribute.rb lib/active_ldap/ldif.rb lib/active_ldap/ldap_error.rb Compatible ClassMethods Associations LdapBenchmarking ActionController Populate lib/active_ldap/association/has_many_wrap.rb lib/active_ldap/association/children.rb lib/active_ldap/association/collection.rb lib/active_ldap/association/proxy.rb lib/active_ldap/association/belongs_to_many.rb lib/active_ldap/association/belongs_to.rb lib/active_ldap/association/has_many.rb HasManyUtils Association ClassMethods Tree Acts Command ClassMethods Normalizable Attributes Update Common ModifyNameRecordLoadable AddOperationModifiable DeleteOperationModifiable ReplaceOperationModifiable ModifyRecordLoadable DeleteRecordLoadable AddRecordLoadable ContentRecordLoadable LDIF Delete Find Operations GetTextSupport Escape ClassMethods Configuration ClassMethods ObjectClass ClassMethods Callbacks lib/active_ldap/get_text/parser.rb GetText lib/active_ldap/adapter/jndi_connection.rb lib/active_ldap/adapter/net_ldap.rb lib/active_ldap/adapter/ldap.rb lib/active_ldap/adapter/base.rb lib/active_ldap/adapter/jndi.rb Adapter Validations GetTextFallback Helper ClassMethods HumanReadable Salt UserPassword ClassMethods Connection ActiveLdap dot/m_46_0.png

Methods

Constants

SEPARATOR = /(?:\r\n|\n)/
SEPARATORS = /(?:(?:^#.*)?#{SEPARATOR})+/

Public Class methods

[Source]

     # File lib/active_ldap/ldif.rb, line 501
501:       def initialize(source)
502:         @source = source
503:         @scanner = StringScanner.new(@source)
504:         @sub_scanner = nil
505:         @sub_scanner = next_segment || StringScanner.new("")
506:       end

Public Instance methods

[Source]

     # File lib/active_ldap/ldif.rb, line 543
543:       def [](*args)
544:         @sub_scanner[*args]
545:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 513
513:       def check(regexp)
514:         @sub_scanner = next_segment if @sub_scanner.eos?
515:         @sub_scanner.check(regexp)
516:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 524
524:       def check_separator
525:         return @scanner.check(SEPARATOR) if @sub_scanner.eos?
526: 
527:         check(SEPARATOR)
528:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 561
561:       def column
562:         _consumed_source = consumed_source
563:         return 1 if _consumed_source.empty?
564: 
565:         position - (_consumed_source.rindex("\n") || -1)
566:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 547
547:       def eos?
548:         @sub_scanner = next_segment if @sub_scanner.eos?
549:         @sub_scanner.eos? and @scanner.eos?
550:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 552
552:       def line
553:         _consumed_source = consumed_source
554:         return 1 if _consumed_source.empty?
555: 
556:         n = Compatible.string_to_lines(_consumed_source).size
557:         n += 1 if _consumed_source[-1, 1] == "\n"
558:         n
559:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 568
568:       def position
569:         sub_scanner_string = @sub_scanner.string
570:         if sub_scanner_string.respond_to?(:bytesize)
571:           sub_scanner_string_size = sub_scanner_string.bytesize
572:         else
573:           sub_scanner_string_size = sub_scanner_string.size
574:         end
575:         @scanner.pos - (sub_scanner_string_size - @sub_scanner.pos)
576:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 508
508:       def scan(regexp)
509:         @sub_scanner = next_segment if @sub_scanner.eos?
510:         @sub_scanner.scan(regexp)
511:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 518
518:       def scan_separator
519:         return @scanner.scan(SEPARATOR) if @sub_scanner.eos?
520: 
521:         scan(SEPARATOR)
522:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 530
530:       def scan_separators
531:         return @scanner.scan(SEPARATORS) if @sub_scanner.eos?
532: 
533:         sub_result = scan(SEPARATORS)
534:         return nil if sub_result.nil?
535:         return sub_result unless @sub_scanner.eos?
536: 
537:         result = @scanner.scan(SEPARATORS)
538:         return sub_result if result.nil?
539: 
540:         sub_result + result
541:       end

Private Instance methods

[Source]

     # File lib/active_ldap/ldif.rb, line 588
588:       def consumed_source
589:         @source[0, position]
590:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 579
579:       def next_segment
580:         loop do
581:           segment = @scanner.scan(/.+(?:#{SEPARATOR} .*)*#{SEPARATOR}?/)
582:           return @sub_scanner if segment.nil?
583:           next if segment[0, 1] == "#"
584:           return StringScanner.new(segment.gsub(/\r?\n /, ''))
585:         end
586:       end

[Validate]