Parent

Class/Module Index [+]

Quicksearch

ActiveLdap::Ldif::Scanner

Constants

SEPARATOR
SEPARATORS

Public Class Methods

new(source) click to toggle source
# File lib/active_ldap/ldif.rb, line 501
def initialize(source)
  @source = source
  @scanner = StringScanner.new(@source)
  @sub_scanner = nil
  @sub_scanner = next_segment || StringScanner.new("")
end

Public Instance Methods

[](*args) click to toggle source
# File lib/active_ldap/ldif.rb, line 543
def [](*args)
  @sub_scanner[*args]
end
check(regexp) click to toggle source
# File lib/active_ldap/ldif.rb, line 513
def check(regexp)
  @sub_scanner = next_segment if @sub_scanner.eos?
  @sub_scanner.check(regexp)
end
check_separator() click to toggle source
# File lib/active_ldap/ldif.rb, line 524
def check_separator
  return @scanner.check(SEPARATOR) if @sub_scanner.eos?

  check(SEPARATOR)
end
column() click to toggle source
# File lib/active_ldap/ldif.rb, line 561
def column
  _consumed_source = consumed_source
  return 1 if _consumed_source.empty?

  position - (_consumed_source.rindex("\n") || -1)
end
eos?() click to toggle source
# File lib/active_ldap/ldif.rb, line 547
def eos?
  @sub_scanner = next_segment if @sub_scanner.eos?
  @sub_scanner.eos? and @scanner.eos?
end
line() click to toggle source
# File lib/active_ldap/ldif.rb, line 552
def line
  _consumed_source = consumed_source
  return 1 if _consumed_source.empty?

  n = Compatible.string_to_lines(_consumed_source).size
  n += 1 if _consumed_source[-1, 1] == "\n"
  n
end
position() click to toggle source
# File lib/active_ldap/ldif.rb, line 568
def position
  sub_scanner_string = @sub_scanner.string
  if sub_scanner_string.respond_to?(:bytesize)
    sub_scanner_string_size = sub_scanner_string.bytesize
  else
    sub_scanner_string_size = sub_scanner_string.size
  end
  @scanner.pos - (sub_scanner_string_size - @sub_scanner.pos)
end
scan(regexp) click to toggle source
# File lib/active_ldap/ldif.rb, line 508
def scan(regexp)
  @sub_scanner = next_segment if @sub_scanner.eos?
  @sub_scanner.scan(regexp)
end
scan_separator() click to toggle source
# File lib/active_ldap/ldif.rb, line 518
def scan_separator
  return @scanner.scan(SEPARATOR) if @sub_scanner.eos?

  scan(SEPARATOR)
end
scan_separators() click to toggle source
# File lib/active_ldap/ldif.rb, line 530
def scan_separators
  return @scanner.scan(SEPARATORS) if @sub_scanner.eos?

  sub_result = scan(SEPARATORS)
  return nil if sub_result.nil?
  return sub_result unless @sub_scanner.eos?

  result = @scanner.scan(SEPARATORS)
  return sub_result if result.nil?

  sub_result + result
end

Private Instance Methods

consumed_source() click to toggle source
# File lib/active_ldap/ldif.rb, line 588
def consumed_source
  @source[0, position]
end
next_segment() click to toggle source
# File lib/active_ldap/ldif.rb, line 579
def next_segment
  loop do
    segment = @scanner.scan(/.+(?:#{SEPARATOR} .*)*#{SEPARATOR}?/)
    return @sub_scanner if segment.nil?
    next if segment[0, 1] == "#"
    return StringScanner.new(segment.gsub(/\r?\n /, ''))
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.