Class ActiveLdap::Ldif::Scanner
In: lib/active_ldap/ldif.rb
Parent: Object
Error AttributeAssignmentError AdapterNotSpecified OperationNotPermitted RequiredObjectClassMissed ConnectionError RequiredAttributeMissed LdifInvalid LdapError DistinguishedNameNotSetError EntryNotFound 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 HasMany HasManyWrap BelongsToMany Proxy BelongsTo Normalizable Common Find LDIF Delete Update GetText Parser ActiveRecord::Callbacks ActiveRecord::Validations 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 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 LdapBenchmarking ActionController ClassMethods Associations Compatible ClassMethods Tree Acts 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 Populate Command ClassMethods Normalizable Attributes Escape GetTextSupport Update Common ModifyNameRecordLoadable AddOperationModifiable DeleteOperationModifiable ReplaceOperationModifiable ModifyRecordLoadable DeleteRecordLoadable AddRecordLoadable ContentRecordLoadable LDIF Delete Find Operations ClassMethods Configuration lib/active_ldap/get_text/parser.rb GetText ClassMethods Callbacks ClassMethods ObjectClass Validations 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 Helper GetTextFallback ClassMethods HumanReadable Salt UserPassword ClassMethods Connection ActiveLdap dot/m_45_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]