Class
Class Methods
lib/rexml/source.rb
View on GitHub
# File tmp/rubies/ruby-2.6.10/lib/rexml/source.rb, line 163
def initialize(arg, block_size=500, encoding=nil)
@er_source = @source = arg
@to_utf = false
@pending_buffer = nil
if encoding
super("", encoding)
else
super(@source.read(3) || "")
end
if !@to_utf and
@buffer.respond_to?(:force_encoding) and
@source.respond_to?(:external_encoding) and
@source.external_encoding != ::Encoding::UTF_8
@force_utf8 = true
else
@force_utf8 = false
end
end
block_size has been deprecated
Instance Methods
lib/rexml/source.rb
View on GitHub
# File tmp/rubies/ruby-2.6.10/lib/rexml/source.rb, line 215
def consume( pattern )
match( pattern, true )
end
No documentation available
lib/rexml/source.rb
View on GitHub
# File tmp/rubies/ruby-2.6.10/lib/rexml/source.rb, line 244
def current_line
begin
pos = @er_source.pos # The byte position in the source
lineno = @er_source.lineno # The XML < position in the source
@er_source.rewind
line = 0 # The \r\n position in the source
begin
while @er_source.pos < pos
@er_source.readline
line += 1
end
rescue
end
@er_source.seek(pos)
rescue IOError
pos = -1
line = -1
end
[pos, lineno, line]
end
@return the current line in the source
#
lib/rexml/source.rb
View on GitHub
# File tmp/rubies/ruby-2.6.10/lib/rexml/source.rb, line 235
def empty?
super and ( @source.nil? || @source.eof? )
end
No documentation available
lib/rexml/source.rb
View on GitHub
# File tmp/rubies/ruby-2.6.10/lib/rexml/source.rb, line 286
def encoding_updated
case @encoding
when "UTF-16BE", "UTF-16LE"
@source.binmode
@source.set_encoding(@encoding, @encoding)
end
@line_break = encode(">")
@pending_buffer, @buffer = @buffer, ""
@pending_buffer.force_encoding(@encoding)
super
end
No documentation available
lib/rexml/source.rb
View on GitHub
# File tmp/rubies/ruby-2.6.10/lib/rexml/source.rb, line 219
def match( pattern, cons=false )
rv = pattern.match(@buffer)
@buffer = $' if cons and rv
while !rv and @source
begin
@buffer << readline
rv = pattern.match(@buffer)
@buffer = $' if cons and rv
rescue
@source = nil
end
end
rv.taint
rv
end
No documentation available
#
lib/rexml/source.rb
View on GitHub
# File tmp/rubies/ruby-2.6.10/lib/rexml/source.rb, line 239
def position
@er_source.pos rescue 0
end
No documentation available
#
lib/rexml/source.rb
View on GitHub
# File tmp/rubies/ruby-2.6.10/lib/rexml/source.rb, line 207
def read
begin
@buffer << readline
rescue Exception, NameError
@source = nil
end
end
No documentation available
#
lib/rexml/source.rb
View on GitHub
# File tmp/rubies/ruby-2.6.10/lib/rexml/source.rb, line 266
def readline
str = @source.readline(@line_break)
if @pending_buffer
if str.nil?
str = @pending_buffer
else
str = @pending_buffer + str
end
@pending_buffer = nil
end
return nil if str.nil?
if @to_utf
decode(str)
else
str.force_encoding(::Encoding::UTF_8) if @force_utf8
str
end
end
No documentation available
lib/rexml/source.rb
View on GitHub
# File tmp/rubies/ruby-2.6.10/lib/rexml/source.rb, line 184
def scan(pattern, cons=false)
rv = super
# You'll notice that this next section is very similar to the same
# section in match(), but just a liiittle different. This is
# because it is a touch faster to do it this way with scan()
# than the way match() does it; enough faster to warrant duplicating
# some code
if rv.size == 0
until @buffer =~ pattern or @source.nil?
begin
@buffer << readline
rescue Iconv::IllegalSequence
raise
rescue
@source = nil
end
end
rv = super
end
rv.taint
rv
end
No documentation available