public static MutableString /*!*/ Read(RubyIO /*!*/ self, [DefaultProtocol] int bytes, [DefaultProtocol, Optional] MutableString buffer)
{
self.AssertOpenedForReading();
if (self.IsEndOfStream())
{
return(null);
}
if (buffer == null)
{
buffer = MutableString.CreateBinary();
}
buffer.Clear();
if (!self.PreserveEndOfLines)
{
for (int i = 0; i < bytes; ++i)
{
int c = self.ReadByteNormalizeEoln();
if (c == -1)
{
return(buffer);
}
else
{
buffer.Append((byte)c);
}
}
}
else
{
var fixedBuffer = new byte[bytes];
bytes = self.ReadBytes(fixedBuffer, 0, bytes);
buffer.Append(fixedBuffer, 0, bytes);
}
return(buffer);
}