class HikiDoc::LineInput
Public Class Methods
Source
# File lib/hikidoc.rb, line 764 def initialize(f) @input = f @buf = [] @lineno = 0 @eof_p = false end
Public Instance Methods
Source
# File lib/hikidoc.rb, line 843 def each while line = gets() yield line end end
Source
# File lib/hikidoc.rb, line 899 def getblock(term_re) buf = [] until_terminator(term_re) do |line| buf.push line end buf end
Source
# File lib/hikidoc.rb, line 881 def getlines_until(re) buf = [] until_match(re) do |line| buf.push line end buf end
Also aliased as: break
Source
# File lib/hikidoc.rb, line 860 def getlines_while(re) buf = [] while_match(re) do |line| buf.push line end buf end
Also aliased as: span
Source
# File lib/hikidoc.rb, line 783 def gets unless @buf.empty? @lineno += 1 return @buf.pop end return nil if @eof_p # to avoid ARGF blocking. line = @input.gets line = line.sub(/\r\n/, "\n") if line @eof_p = line.nil? @lineno += 1 line end
Source
# File lib/hikidoc.rb, line 825 def gets_if(re) line = gets() if not line or not (re =~ line) ungets line return nil end line end
Source
# File lib/hikidoc.rb, line 834 def gets_unless(re) line = gets() if not line or re =~ line ungets line return nil end line end
Source
# File lib/hikidoc.rb, line 771 def inspect "\#<#{self.class} file=#{@input.inspect} line=#{lineno()}>" end
Source
# File lib/hikidoc.rb, line 813 def skip_blank_lines n = 0 while line = gets() unless line.strip.empty? ungets line return n end n += 1 end n end
Source
# File lib/hikidoc.rb, line 796 def ungets(line) return unless line @lineno -= 1 @buf.push line line end
Source
# File lib/hikidoc.rb, line 870 def until_match(re) while line = gets() if re =~ line ungets line return end yield line end nil end
Source
# File lib/hikidoc.rb, line 891 def until_terminator(re) while line = gets() return if re =~ line # discard terminal line yield line end nil end
Source
# File lib/hikidoc.rb, line 849 def while_match(re) while line = gets() unless re =~ line ungets line return end yield line end nil end