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 ConnectionNotEstablished TimeoutError AuthenticationError AttributeValueInvalid EntryNotSaved DistinguishedNameInputInvalid EntryAlreadyExist ObjectClassError UnknownAttribute EntryInvalid DeleteError ConfigurationError DistinguishedNameInvalid 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 Schema\n[lib/active_ldap/schema.rb\nlib/active_ldap/schema/syntaxes.rb] JndiConnection lib/active_ldap/distinguished_name.rb lib/active_ldap/base.rb lib/active_ldap/schema.rb lib/active_ldap/entry_attribute.rb lib/active_ldap/ldif.rb lib/active_ldap/ldap_error.rb 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_44_0.png

Methods

Constants

SEPARATOR = /(?:\r\n|\n)/u

Public Class methods

[Source]

     # File lib/active_ldap/ldif.rb, line 479
479:       def initialize(source)
480:         @source = source
481:         @scanner = StringScanner.new(@source)
482:         @sub_scanner = nil
483:         @sub_scanner = next_segment || StringScanner.new("")
484:       end

Public Instance methods

[Source]

     # File lib/active_ldap/ldif.rb, line 521
521:       def [](*args)
522:         @sub_scanner[*args]
523:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 491
491:       def check(regexp)
492:         @sub_scanner = next_segment if @sub_scanner.eos?
493:         @sub_scanner.check(regexp)
494:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 502
502:       def check_separator
503:         return @scanner.check(SEPARATOR) if @sub_scanner.eos?
504: 
505:         check(SEPARATOR)
506:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 539
539:       def column
540:         _consumed_source = consumed_source
541:         return 1 if _consumed_source.empty?
542: 
543:         position - (_consumed_source.rindex("\n") || -1)
544:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 525
525:       def eos?
526:         @sub_scanner = next_segment if @sub_scanner.eos?
527:         @sub_scanner.eos? and @scanner.eos?
528:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 530
530:       def line
531:         _consumed_source = consumed_source
532:         return 1 if _consumed_source.empty?
533: 
534:         n = _consumed_source.to_a.size
535:         n += 1 if _consumed_source[-1, 1] == "\n"
536:         n
537:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 546
546:       def position
547:         @scanner.pos - (@sub_scanner.string.length - @sub_scanner.pos)
548:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 486
486:       def scan(regexp)
487:         @sub_scanner = next_segment if @sub_scanner.eos?
488:         @sub_scanner.scan(regexp)
489:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 496
496:       def scan_separator
497:         return @scanner.scan(SEPARATOR) if @sub_scanner.eos?
498: 
499:         scan(SEPARATOR)
500:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 508
508:       def scan_separators
509:         return @scanner.scan(/#{SEPARATOR}+/u) if @sub_scanner.eos?
510: 
511:         sub_result = scan(/#{SEPARATOR}+/u)
512:         return nil if sub_result.nil?
513:         return sub_result unless @sub_scanner.eos?
514: 
515:         result = @scanner.scan(/#{SEPARATOR}+/u)
516:         return sub_result if result.nil?
517: 
518:         sub_result + result
519:       end

Private Instance methods

[Source]

     # File lib/active_ldap/ldif.rb, line 560
560:       def consumed_source
561:         @source[0,  position]
562:       end

[Source]

     # File lib/active_ldap/ldif.rb, line 551
551:       def next_segment
552:         loop do
553:           segment = @scanner.scan(/.+(?:#{SEPARATOR} .*)*#{SEPARATOR}?/u)
554:           return @sub_scanner if segment.nil?
555:           next if segment[0, 1] == "#"
556:           return StringScanner.new(segment.gsub(/\r?\n /u, ''))
557:         end
558:       end

[Validate]