diff options
author | Emil Renner Berthing <esmil@mailme.dk> | 2013-01-29 21:58:53 +0100 |
---|---|---|
committer | Emil Renner Berthing <esmil@mailme.dk> | 2013-01-29 23:17:32 +0100 |
commit | d12ebbbd9ee55305e0017e1ed3ef13523a9a8334 (patch) | |
tree | f2420ec2fb924f45680c2d15a397269c4fe8cb87 | |
parent | 06ce139fd4d2cb18090442ce4c7c3992bf26f9a8 (diff) | |
download | lem-d12ebbbd9ee55305e0017e1ed3ef13523a9a8334.tar.gz lem-d12ebbbd9ee55305e0017e1ed3ef13523a9a8334.tar.xz lem-d12ebbbd9ee55305e0017e1ed3ef13523a9a8334.zip |
io: implement io.lines() and lines() methods
-rw-r--r-- | lem/io.lua | 25 | ||||
-rwxr-xr-x | test/lines.lua | 44 |
2 files changed, 66 insertions, 3 deletions
@@ -45,6 +45,19 @@ do function io.read(...) return stdin:read(...) end + + local open, error = io.open, error + function io.lines(filename, fmt) + if not filename then return stdin:lines(fmt) end + if not fmt then fmt = '*l' end + local file, err = open(filename) + if not file then error(err, 2) end + return function(s) + local line = s:read(fmt) + if not line then s:close() end + return line + end, file + end end do @@ -69,13 +82,19 @@ do end end +function io.File:lines(fmt) + if not fmt then fmt = '*l' end + return function(s) + return s:read(fmt) + end, self +end +io.Stream.lines = io.File.lines + if not io.Stream.cork then function io.Stream:cork() return nil, 'Operation not supported' end - function io.Stream:uncork() - return nil, 'Operation not supported' - end + io.Stream.uncork = io.Stream.cork end do diff --git a/test/lines.lua b/test/lines.lua new file mode 100755 index 0000000..2558184 --- /dev/null +++ b/test/lines.lua @@ -0,0 +1,44 @@ +#!bin/lem +-- +-- This file is part of LEM, a Lua Event Machine. +-- Copyright 2013 Emil Renner Berthing +-- +-- LEM is free software: you can redistribute it and/or modify it +-- under the terms of the GNU Lesser General Public License as +-- published by the Free Software Foundation, either version 3 of +-- the License, or (at your option) any later version. +-- +-- LEM is distributed in the hope that it will be useful, but +-- WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU Lesser General Public License for more details. +-- +-- You should have received a copy of the GNU Lesser General Public +-- License along with LEM. If not, see <http://www.gnu.org/licenses/>. +-- + +package.path = '?.lua' +package.cpath = '?.so' + +local utils = require 'lem.utils' +local io = require 'lem.io' + +local format, write = string.format, io.write + +local n = 0 +---[[ +local file = assert(io.open('PKGBUILD')) + +for line in file:lines() do + n = n+1 + write(format("%4d: %s\n", n, line)) +end +--[=[ +--]] +for line in io.lines('PKGBUILD') do + n = n+1 + write(format("%4d: %s\n", n, line)) +end +--]=] + +-- vim: syntax=lua ts=3 sw=3 et: |