Module:File link: Difference between revisions
Content added Content deleted
Enwikipedia>Mr. Stradivarius (seperate treatment of private fields and read-only fields, and add a __pairs metamethod) |
Enwikipedia>Mr. Stradivarius (reduce redundant error code) |
||
Line 247: | Line 247: | ||
for field in pairs(data) do |
for field in pairs(data) do |
||
readOnlyFields[field] = true |
readOnlyFields[field] = true |
||
end |
|||
local function restrictedFieldError(key, restriction) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
restriction |
|||
⚫ | |||
end |
end |
||
Line 252: | Line 260: | ||
__index = function (t, key) |
__index = function (t, key) |
||
if privateFields[key] then |
if privateFields[key] then |
||
restrictedFieldError(key, 'private') |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
else |
else |
||
return data[key] |
return data[key] |
||
Line 262: | Line 267: | ||
__newindex = function (t, key, value) |
__newindex = function (t, key, value) |
||
if privateFields[key] then |
if privateFields[key] then |
||
restrictedFieldError(key, 'private') |
|||
error(string.format( |
|||
"image object field '%s' is private", |
|||
tostring(key) |
|||
), 2) |
|||
elseif readOnlyFields[key] then |
elseif readOnlyFields[key] then |
||
restrictedFieldError(key, 'read-only') |
|||
error(string.format( |
|||
"image object field '%s' is read-only", |
|||
tostring(key) |
|||
), 2) |
|||
else |
else |
||
data[key] = value |
data[key] = value |