Class: ActiveLdap::Ldif::Scanner
- Inherits:
-
Object
- Object
- ActiveLdap::Ldif::Scanner
- Defined in:
- lib/active_ldap/ldif.rb
Constant Summary collapse
- SEPARATOR =
/(?:\r\n|\n)/
- SEPARATORS =
/(?:(?:^#.*)?#{SEPARATOR})+/
Instance Method Summary collapse
- #[](*args) ⇒ Object
- #check(regexp) ⇒ Object
- #check_separator ⇒ Object
- #column ⇒ Object
- #eos? ⇒ Boolean
-
#initialize(source) ⇒ Scanner
constructor
A new instance of Scanner.
- #line ⇒ Object
- #position ⇒ Object
- #scan(regexp) ⇒ Object
- #scan_separator ⇒ Object
- #scan_separators ⇒ Object
Constructor Details
#initialize(source) ⇒ Scanner
Returns a new instance of Scanner.
501 502 503 504 505 506 |
# 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 |
Instance Method Details
#[](*args) ⇒ Object
543 544 545 |
# File 'lib/active_ldap/ldif.rb', line 543 def [](*args) @sub_scanner[*args] end |
#check(regexp) ⇒ Object
513 514 515 516 |
# 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 ⇒ Object
524 525 526 527 528 |
# File 'lib/active_ldap/ldif.rb', line 524 def check_separator return @scanner.check(SEPARATOR) if @sub_scanner.eos? check(SEPARATOR) end |
#column ⇒ Object
561 562 563 564 565 566 |
# 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? ⇒ Boolean
547 548 549 550 |
# 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 ⇒ Object
552 553 554 555 556 557 558 559 |
# 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 ⇒ Object
568 569 570 571 572 573 574 575 576 |
# 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) ⇒ Object
508 509 510 511 |
# 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 ⇒ Object
518 519 520 521 522 |
# File 'lib/active_ldap/ldif.rb', line 518 def scan_separator return @scanner.scan(SEPARATOR) if @sub_scanner.eos? scan(SEPARATOR) end |
#scan_separators ⇒ Object
530 531 532 533 534 535 536 537 538 539 540 541 |
# 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 |