| Class | ActiveLdap::Ldif::Scanner |
| In: |
lib/active_ldap/ldif.rb
|
| Parent: | Object |
| SEPARATOR | = | /(?:\r\n|\n)/ |
| SEPARATORS | = | /(?:(?:^#.*)?#{SEPARATOR})+/ |
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# File lib/active_ldap/ldif.rb, line 587
587: def consumed_source
588: @source[0, position]
589: end