[](*args)
click to toggle source
def [](*args)
@sub_scanner[*args]
end
check(regexp)
click to toggle source
def check(regexp)
@sub_scanner = next_segment if @sub_scanner.eos?
@sub_scanner.check(regexp)
end
check_separator()
click to toggle source
def check_separator
return @scanner.check(SEPARATOR) if @sub_scanner.eos?
check(SEPARATOR)
end
column()
click to toggle source
def column
_consumed_source = consumed_source
return 1 if _consumed_source.empty?
position - (_consumed_source.rindex("\n") || -1)
end
eos?()
click to toggle source
def eos?
@sub_scanner = next_segment if @sub_scanner.eos?
@sub_scanner.eos? and @scanner.eos?
end
line()
click to toggle source
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
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
def scan(regexp)
@sub_scanner = next_segment if @sub_scanner.eos?
@sub_scanner.scan(regexp)
end
scan_separator()
click to toggle source
def scan_separator
return @scanner.scan(SEPARATOR) if @sub_scanner.eos?
scan(SEPARATOR)
end
scan_separators()
click to toggle source
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