Module:File link

local image = {}

function image.new local obj, data = {}, {} function data:name(s) self.theName = s	end function data:format(s, filename) local validFormats = { thumb = true, thumbnail = true, frame = true, framed = true, frameless = true }		if validFormats[s] then self.theFormat = s			self.theFormatFilename = filename else error('invalid format') end end function data:width(px) self.theWidth = px	end function data:height(px) self.theHeight = px	end function data:upright(factor) self.isUpright = true self.uprightFactor = factor end function data:resetSize for i, field in ipairs{'theWidth', 'theHeight', 'isUpright', 'uprightFactor'} do			self[field] = nil end end function data:location(s) local validLocations = { right = true, left = true, center = true, none = true }		if s and validLocations[s] then self.theLocation = s		else error(string.format( "bad argument #1 to 'image:location'" .. " (must be one of 'right', 'left', 'center' or 'none'; got '%s').", tostring(s) ))		end end function data:alignment(s) local validAlignments = { baseline = true, middle = true, sub = true, super = true, ['text-top'] = true, ['text-bottom'] = true, top = true, bottom = true }		if s and validAlignments[s] then self.theAlignment = s		else error(string.format( "bad argument #1 to 'data:alignment'" ))		end end function data:border self.hasBorder = true end function data:link(s) self.theLink = s	end function data:alt(s) self.theAlt = s	end function data:caption(s) self.theCaption = s	end function data:render end return obj end

return image