Comparison

util/template.lua @ 7207:14ea924a036d

Merge 0.10->trunk
author Kim Alvefur <zash@zash.se>
date Sun, 28 Feb 2016 15:06:56 +0100
parent 7197:ff514c1b1c27
child 8418:ad1e10c93b41
comparison
equal deleted inserted replaced
7195:39b7ea9141c0 7207:14ea924a036d
1 1 -- luacheck: ignore 213/i
2 local stanza_mt = require "util.stanza".stanza_mt; 2 local stanza_mt = require "util.stanza".stanza_mt;
3 local setmetatable = setmetatable; 3 local setmetatable = setmetatable;
4 local pairs = pairs; 4 local pairs = pairs;
5 local ipairs = ipairs; 5 local ipairs = ipairs;
6 local error = error; 6 local error = error;
65 return lookup[stanza]; 65 return lookup[stanza];
66 end 66 end
67 local function create_cloner(stanza, chunkname) 67 local function create_cloner(stanza, chunkname)
68 local lookup = {}; 68 local lookup = {};
69 local name = create_clone_string(stanza, lookup, ""); 69 local name = create_clone_string(stanza, lookup, "");
70 local f = "local setmetatable,stanza_mt=...;return function(data)"; 70 local src = "local setmetatable,stanza_mt=...;return function(data)";
71 for i=1,#lookup do 71 for i=1,#lookup do
72 f = f.."local _"..i.."="..lookup[i]..";"; 72 src = src.."local _"..i.."="..lookup[i]..";";
73 end 73 end
74 f = f.."return "..name..";end"; 74 src = src.."return "..name..";end";
75 local f,err = loadstring(f, chunkname); 75 local f,err = loadstring(src, chunkname);
76 if not f then error(err); end 76 if not f then error(err); end
77 return f(setmetatable, stanza_mt); 77 return f(setmetatable, stanza_mt);
78 end 78 end
79 79
80 local template_mt = { __tostring = function(t) return t.name end }; 80 local template_mt = { __tostring = function(t) return t.name end };