Changes
allow specifying height and width values as strings ending in px
local fileLink = {}
local function checkTypeStringOrNum(funcName, pos, arg)
	local argType = type(arg)
	if argType ~= 'nil' and argType ~= 'string' and argType ~= 'number' then
		error(string.format(
			"bad argument #%d to '%s' (string or number expected, got %s)",
			pos,
			funcName,
			argType
		), 3)
	end
end
function fileLink.new(filename)
	end
	local function sizeErrorvalidateSize(methodNamemethod, px)		-- Used Validate input for formatting duplication errors in size-related methodsfunctions.The px type is checked		-- using checkTypeStringOrNum, so will be a string, a number, or nil.		if px and data.isUpright then			error(string.format(							"duplicate size argument detected in '%s'"			.. " ('upright' cannot be "					.. ' used in conjunction with height or width)',				method			), 3)		end		if type(px) == 'string' then			local origPx = px			px = px:match('^(%d+)px$') or px			px = tonumber(px)			if not px then				error(string.format(					"invalid string '%s' passed to '%s'",					origPx,					method				),3)			methodNameend		end		-- px is now a number or nil.		if px and px < 1 or math.floor(px) ~= px then			error(string.format(				"invalid image size specified in '%s' (size must be a positive"					.. 'integer)',				method			), 3)		end		return px
	end
	function data:width(px)
		checkSelf(self, 'width')
		data.theWidth = px
		return self
	function data:height(px)
		checkSelf(self, 'height')
		data.theHeight = px
		return self
		data.theLang = s
		return self
	end