strfile = { } function strfile.open(s) return { _buf = s, _pos = 1, _readline = function(self) if self._pos == nil then return nil end local nl = self._buf:find("\n", self._pos, true) local line if nl then line = self._buf:sub(self._pos, nl - 1) nl = nl + 1 else line = self._buf:sub(self._pos) end self._pos = nl return line end, lines = function(self) return self._readline, self, true end, close = function(self) end, } end