public static object Each(RubyContext /*!*/ context, BlockParam block, RubyIO /*!*/ self, [DefaultProtocol] MutableString separator)
{
self.RequireReadable();
MutableString line;
while ((line = self.ReadLineOrParagraph(separator)) != null)
{
if (block == null)
{
throw RubyExceptions.NoBlockGiven();
}
line.IsTainted = true;
context.InputProvider.LastInputLineNumber = ++self.LineNumber;
object result;
if (block.Yield(line, out result))
{
return(result);
}
}
return(self);
}