class 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