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 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] DistinguishedName Base Reloadable::Deprecated Reloadable::Subclasses Enumerable Ldif Collection EntryAttribute StandardError Children HasManyWrap HasMany BelongsToMany Proxy BelongsTo Common Find LDIF Delete Update Normalizable 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 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 Update Common ModifyNameRecordLoadable AddOperationModifiable DeleteOperationModifiable ReplaceOperationModifiable ModifyRecordLoadable DeleteRecordLoadable AddRecordLoadable ContentRecordLoadable LDIF Delete Find Operations GetTextSupport Escape ClassMethods Normalizable Attributes ClassMethods Configuration ClassMethods ObjectClass lib/active_ldap/get_text/parser.rb GetText ClassMethods Callbacks 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/jndi.rb Adapter Helper GetTextFallback 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 500
500:       def initialize(source)
501:         @source = source
502:         @scanner = StringScanner.new(@source)
503:         @sub_scanner = nil
504:         @sub_scanner = next_segment || StringScanner.new("")
505:       end

Public Instance methods

[Source]

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

[Source]

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

[Source]

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

[Source]

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

[Source]

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

[Source]

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

[Source]

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

[Source]

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

[Source]

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

[Source]

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

Private Instance methods

[Source]

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

[Source]

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

[Validate]