Jump to content

Module:File link: Difference between revisions

135 bytes added ,  10 years ago
rename the image table to a fileLink table, seeing as this code is applicable to all file links
m (Mr. Stradivarius moved page Module:Image to Module:File link without leaving a redirect: this is applicable to all file links, not just images)
(rename the image table to a fileLink table, seeing as this code is applicable to all file links)
Line 1: Line 1:
-- This module provides a library for formatting image wikilinks.
-- This module provides a library for formatting file wikilinks.


local libraryUtil = require('libraryUtil')
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkType = libraryUtil.checkType


local image = {}
local fileLink = {}


function image.new(filename)
function fileLink.new(filename)
checkType('image.new', 1, filename, 'string', true)
checkType('fileLink.new', 1, filename, 'string', true)
local obj, data = {}, {}
local obj, data = {}, {}
local checkSelf = libraryUtil.makeCheckSelfFunction(
local checkSelf = libraryUtil.makeCheckSelfFunction(
'image',
'fileLink',
'image',
'fileLink',
obj,
obj,
'image object'
'fileLink object'
)
)
-- Set the filename if we were passed it as an input to image.new.
-- Set the filename if we were passed it as an input to fileLink.new.
if filename then
if filename then
data.theName = filename
data.theName = filename
Line 23: Line 23:
function data:name(s)
function data:name(s)
checkSelf(self, 'image:name')
checkSelf(self, 'fileLink:name')
checkType('image:name', 1, s, 'string')
checkType('fileLink:name', 1, s, 'string')
data.theName = s
data.theName = s
return self
return self
Line 30: Line 30:
function data:format(s, filename)
function data:format(s, filename)
checkSelf(self, 'image:format')
checkSelf(self, 'fileLink:format')
checkType('image:format', 1, s, 'string', true)
checkType('fileLink:format', 1, s, 'string', true)
checkType('image:format', 2, format, 'string', true)
checkType('fileLink:format', 2, format, 'string', true)
local validFormats = {
local validFormats = {
thumb = true,
thumb = true,
Line 45: Line 45:
else
else
error(string.format(
error(string.format(
"bad argument #1 to 'image:format' ('%s' is not a valid format)",
"bad argument #1 to 'fileLink:format' ('%s' is not a valid format)",
s
s
), 2)
), 2)
Line 62: Line 62:
function data:width(px)
function data:width(px)
checkSelf(self, 'image:width')
checkSelf(self, 'fileLink:width')
checkType('image:width', 1, px, 'number', true)
checkType('fileLink:width', 1, px, 'number', true)
if px and data.isUpright then
if px and data.isUpright then
sizeError('image:width')
sizeError('fileLink:width')
end
end
data.theWidth = px
data.theWidth = px
Line 72: Line 72:
function data:height(px)
function data:height(px)
checkSelf(self, 'image:height')
checkSelf(self, 'fileLink:height')
checkType('image:height', 1, px, 'number', true)
checkType('fileLink:height', 1, px, 'number', true)
if px and data.isUpright then
if px and data.isUpright then
sizeError('image:height')
sizeError('fileLink:height')
end
end
data.theHeight = px
data.theHeight = px
Line 82: Line 82:
function data:upright(isUpright, factor)
function data:upright(isUpright, factor)
checkSelf(self, 'image:upright')
checkSelf(self, 'fileLink:upright')
checkType('image:upright', 1, isUpright, 'boolean', true)
checkType('fileLink:upright', 1, isUpright, 'boolean', true)
checkType('image:upright', 2, factor, 'number', true)
checkType('fileLink:upright', 2, factor, 'number', true)
if isUpright and (data.theWidth or data.theHeight) then
if isUpright and (data.theWidth or data.theHeight) then
sizeError('image:upright')
sizeError('fileLink:upright')
end
end
data.isUpright = isUpright
data.isUpright = isUpright
Line 94: Line 94:
function data:resetSize()
function data:resetSize()
checkSelf(self, 'image:resetSize')
checkSelf(self, 'fileLink:resetSize')
for i, field in ipairs{'theWidth', 'theHeight', 'isUpright', 'uprightFactor'} do
for i, field in ipairs{'theWidth', 'theHeight', 'isUpright', 'uprightFactor'} do
data[field] = nil
data[field] = nil
Line 102: Line 102:
function data:location(s)
function data:location(s)
checkSelf(self, 'image:location')
checkSelf(self, 'fileLink:location')
checkType('image:location', 1, s, 'string', true)
checkType('fileLink:location', 1, s, 'string', true)
local validLocations = {
local validLocations = {
right = true,
right = true,
Line 114: Line 114:
else
else
error(string.format(
error(string.format(
"bad argument #1 to 'image:location' ('%s' is not a valid location)",
"bad argument #1 to 'fileLink:location' ('%s' is not a valid location)",
s
s
), 2)
), 2)
Line 122: Line 122:
function data:alignment(s)
function data:alignment(s)
checkSelf(self, 'image:alignment')
checkSelf(self, 'fileLink:alignment')
checkType('image:alignment', 1, s, 'string', true)
checkType('fileLink:alignment', 1, s, 'string', true)
local validAlignments = {
local validAlignments = {
baseline = true,
baseline = true,
Line 138: Line 138:
else
else
error(string.format(
error(string.format(
"bad argument #1 to 'image:alignment' ('%s' is not a valid alignment)",
"bad argument #1 to 'fileLink:alignment' ('%s' is not a valid alignment)",
s
s
), 2)
), 2)
Line 146: Line 146:
function data:border(hasBorder)
function data:border(hasBorder)
checkSelf(self, 'image:border')
checkSelf(self, 'fileLink:border')
checkType('image:border', 1, hasBorder, 'boolean', true)
checkType('fileLink:border', 1, hasBorder, 'boolean', true)
data.hasBorder = hasBorder
data.hasBorder = hasBorder
return self
return self
Line 153: Line 153:
function data:link(s)
function data:link(s)
checkSelf(self, 'image:link')
checkSelf(self, 'fileLink:link')
checkType('image:link', 1, s, 'string', true)
checkType('fileLink:link', 1, s, 'string', true)
data.theLink = s
data.theLink = s
return self
return self
Line 160: Line 160:
function data:alt(s)
function data:alt(s)
checkSelf(self, 'image:alt')
checkSelf(self, 'fileLink:alt')
checkType('image:alt', 1, s, 'string', true)
checkType('fileLink:alt', 1, s, 'string', true)
data.theAlt = s
data.theAlt = s
return self
return self
Line 167: Line 167:
function data:page(num)
function data:page(num)
checkSelf(self, 'image:page')
checkSelf(self, 'fileLink:page')
checkType('image:page', 1, num, 'number', true)
checkType('fileLink:page', 1, num, 'number', true)
data.thePage = s
data.thePage = s
return self
return self
Line 174: Line 174:
function data:class(s)
function data:class(s)
checkSelf(self, 'image:class')
checkSelf(self, 'fileLink:class')
checkType('image:class', 1, s, 'string', true)
checkType('fileLink:class', 1, s, 'string', true)
data.theClass = s
data.theClass = s
return self
return self
Line 181: Line 181:
function data:lang(s)
function data:lang(s)
checkSelf(self, 'image:lang')
checkSelf(self, 'fileLink:lang')
checkType('image:lang', 1, s, 'string', true)
checkType('fileLink:lang', 1, s, 'string', true)
data.theLang = s
data.theLang = s
return self
return self
Line 188: Line 188:
function data:caption(s)
function data:caption(s)
checkSelf(self, 'image:caption')
checkSelf(self, 'fileLink:caption')
checkType('image:caption', 1, s, 'string', true)
checkType('fileLink:caption', 1, s, 'string', true)
data.theCaption = s
data.theCaption = s
return self
return self
Line 195: Line 195:
function data:render()
function data:render()
checkSelf(self, 'image:render')
checkSelf(self, 'fileLink:render')
local ret = {}
local ret = {}
-- Image name.
-- Filename
if not data.theName then
if not data.theName then
error('image:render: no image name was found')
error('fileLink:render: no filename was found')
end
end
ret[#ret + 1] = 'File:' .. data.theName
ret[#ret + 1] = 'File:' .. data.theName
-- Image format
-- Format
if data.theFormat and data.theFormatFilename then
if data.theFormat and data.theFormatFilename then
ret[#ret + 1] = data.theFormat .. '=' .. data.theFormatFilename
ret[#ret + 1] = data.theFormat .. '=' .. data.theFormatFilename
Line 277: Line 277:
readOnlyFields[field] = true
readOnlyFields[field] = true
end
end
readOnlyFields.theName = nil -- This is set if a filename is given to image.new, so remove it.
readOnlyFields.theName = nil -- This is set if a filename is given to fileLink.new, so remove it.
local function restrictedFieldError(key, restriction)
local function restrictedFieldError(key, restriction)
error(string.format(
error(string.format(
"image object field '%s' is %s",
"fileLink object field '%s' is %s",
tostring(key),
tostring(key),
restriction
restriction
Line 321: Line 321:
end
end


return image
return fileLink
Cookies help us deliver our services. By using our services, you agree to our use of cookies.