seqlua

annotate seqlua_c_example_test.lua @ 45:35eb59c51be6

Minor change in README
author jbe
date Mon Aug 25 04:02:06 2014 +0200 (2014-08-25)
parents 332216604f83
children
rev   line source
jbe@35 1 require "seqlua_c_example" -- defines function "printcsv"
jbe@0 2
jbe@0 3 function alphabet()
jbe@0 4 local letter = nil
jbe@0 5 return function()
jbe@0 6 if letter == nil then
jbe@0 7 letter = "a"
jbe@0 8 elseif letter == "z" then
jbe@0 9 return nil
jbe@0 10 else
jbe@0 11 letter = string.char(string.byte(letter) + 1)
jbe@0 12 end
jbe@0 13 return letter
jbe@0 14 end
jbe@0 15 end
jbe@0 16
jbe@35 17 t = {"a", "b", "c"}
jbe@35 18
jbe@35 19 printcsv(t)
jbe@0 20 -- prints:
jbe@0 21 -- a,b,c
jbe@0 22
jbe@0 23 printcsv(alphabet())
jbe@0 24 -- prints:
jbe@0 25 -- a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
jbe@0 26
jbe@35 27 call_proxy = setmetatable({}, {__ipairs = function() return "call", alphabet() end})
jbe@35 28
jbe@35 29 printcsv(call_proxy)
jbe@35 30 -- prints:
jbe@35 31 -- a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
jbe@35 32
jbe@35 33 random_access_alphabet = setmetatable({}, {
jbe@35 34 __index = function(self, i)
jbe@35 35 if type(i) == "number" and i >= 1 and i <= 26 then
jbe@35 36 return string.char(string.byte("a") + i - 1)
jbe@35 37 end
jbe@35 38 end
jbe@35 39 })
jbe@35 40
jbe@35 41 printcsv(random_access_alphabet)
jbe@35 42 -- prints:
jbe@35 43 -- a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
jbe@35 44
jbe@35 45 index_proxy = setmetatable({}, {
jbe@35 46 __ipairs = function() return "index", random_access_alphabet end
jbe@35 47 })
jbe@35 48
jbe@35 49 printcsv(index_proxy)
jbe@35 50 -- prints:
jbe@35 51 -- a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
jbe@35 52
jbe@35 53 raw_proxy = setmetatable({"dummy"}, {
jbe@35 54 __ipairs = function() return "raw", t end
jbe@35 55 })
jbe@35 56
jbe@35 57 printcsv(raw_proxy)
jbe@35 58 -- prints:
jbe@35 59 -- a,b,c
jbe@35 60
jbe@35 61 require "seqlua"
jbe@35 62
jbe@35 63 do
jbe@35 64 local function ipairsaux(s, i)
jbe@35 65 i = i + 1
jbe@35 66 if i <= s.count then
jbe@35 67 return i, s.entry
jbe@35 68 end
jbe@35 69 end
jbe@35 70 custom_proxy = setmetatable({entry = "zebra", count=5}, {
jbe@35 71 __ipairs = function(self)
jbe@35 72 return ipairsaux, self, 0
jbe@35 73 end
jbe@35 74 })
jbe@35 75 end
jbe@35 76
jbe@35 77 printcsv(custom_proxy)
jbe@35 78 -- prints: zebra,zebra,zebra,zebra,zebra
jbe@35 79

Impressum / About Us