Difference between revisions of "Module:Silent1/sandbox"

From Idlescape Wiki
Jump to navigation Jump to search
m
m (Undo revision 7548 by Silent1 (talk))
Tag: Undo
 
(56 intermediate revisions by the same user not shown)
Line 1: Line 1:
-- <nowiki>
+
local p = {}
-- [[Template:T]]
+
local origArgs = {}
-- Shamelessly stolen from the OSRS wiki. Basically just gives an easy way to nowiki Template formatting
+
local name
 +
local width = 'auto'
 +
local height = 'auto'
 +
local add_word
 +
local only_url
 +
local no_link
 +
local link
  
local p = {}
+
local data_module_names = {
 +
--item = 'Module:Items/data',
 +
item = 'Module:Silent1/sandbox/data',
 +
other = 'Module:OtherImages/data'
 +
}
 +
local loaded_data_modules = {}
 +
 
 +
function p.loadData (data_type)
 +
local module_name = data_module_names[data_type]
 +
if loaded_data_modules[module_name] == nil then
 +
loaded_data_modules[module_name] = mw.loadData(module_name)
 +
end
 +
 +
return loaded_data_modules[module_name]
 +
end
 +
 
 +
--Search the item data for item name and return its id
 +
function p.findItemID(name)
 +
local items = p.loadData('item')
 +
local lname = string.lower(name)
 +
local id = nil
 +
 +
for k,v in pairs(items) do
 +
if lname == string.lower(v['name']) then
 +
id = k
 +
return id
 +
end
 +
end
 +
return id
 +
end
 +
 
 +
--Find the image from the name
 +
-- function p.findImage(name)
 +
-- local id
 +
-- name = string.lower(name)
 +
-- local image = p.loadData('other')[name]
 +
 +
-- --If name is a number, pass in as an item ID
 +
-- if tonumber(name) then
 +
-- id = name
 +
-- else
 +
-- id = p.findItemID(name)
 +
-- end
 +
 +
-- --If id is valid
 +
-- if id then
 +
-- local item = p.loadData('item')[id]
 +
-- local url = item['itemImage']
 +
-- local icon = item['itemIcon']
 +
-- local realname = item['name']
 +
 +
-- if icon then url = icon end
 +
-- image = {name = realname, image = url}
 +
 +
-- if not (image['name'] and image['image']) then
 +
-- image = nil
 +
-- end
 +
-- end
 +
 +
-- return image
 +
-- end
  
function p.main(frame)
+
function p.findImage(name)
    local args = frame:getParent().args
+
local id
    return p._main(args)
+
name = string.lower(name)
 +
local image = p.loadData('other')[name]
 +
 +
if not image then
 +
image = p.loadData('item')[name]
 +
end
 +
return image
 
end
 
end
  
function p._main(args)
+
--Create a string to output
    local link = args[1]
+
local function _image()
    local uri
+
local image = p.findImage(name)
    local targs = {}
+
local s = ''
    local ns
+
local rs = nil
    local i = 1
+
   
+
if image then
    -- strip transclusion modifiers ([[mw:Help:Magic words#Transclusion modifiers]])
+
local realname = image['name']
    link = link
+
local url = image['image']
        :gsub('safesubst:', '')
+
        :gsub('subst:', '')
+
if url:sub(1,1) ~= '/' then url = '/' .. url end
        :gsub('int:', '')
+
url = 'https://idlescape.com' .. url
        :gsub('msg:', '')
+
s = url
        :gsub('msgnw:', '')
+
        :gsub('raw:', '')
+
if only_url == '1' then rs = s end
       
+
    ns = mw.text.split(link, ':')[1]
+
s = 'src="' .. s .. '"'
   
+
s = s .. ' alt="' .. realname .. '"'
    -- check for valid namespace else prepend Template:
+
s = s .. ' width="' .. width .. '"'
    if not (ns == '' or mw.site.namespaces[ns]) then
+
s = s .. ' height="' .. height .. '"'
        link = 'Template:' .. link
+
s = '<img ' .. s .. '>'
    end
+
   
+
if add_word == '1' then  
    -- use fullUrl so it doesn't cause any wanted pages
+
s = s .. ' ' .. realname
    uri = mw.uri.fullUrl(link)
+
end
   
+
    -- generate a list of args and params   
+
if no_link == '1' then rs = s end
    for k, v in ipairs(args) do
+
        -- because lua has no continue statement
+
if not (link and link:match('%S')) then link = realname end
        if k ~= 1 then
+
s = '[[' .. link .. '|' .. s .. ']]'
            if type(k) == 'string' then
+
else
                v = k .. '=' .. v
+
s = '[[' .. name .. ']]' .. '{{?}}'
            end
+
end
       
+
if not rs then rs = s end  
            targs[i] = v
+
return rs
            i = i + 1
+
end
        end
 
    end
 
    for k, v in pairs(args) do
 
        -- because lua has no continue statement
 
        if k ~= 1 then
 
            if type(k) == 'string' then
 
                v = k .. '=' .. v
 
targs[i] = v
 
i = i + 1
 
            end
 
       
 
        end
 
    end
 
   
 
    targs = table.concat(targs, '&#124;')
 
  
    if targs ~= '' then
+
function p.image(frame)
        targs = '&#124;' .. targs
+
return p._image(frame:getParent())
    end
+
end
   
 
    return '<code>{{[' .. tostring(uri) ..  ' ' .. args[1] .. ']' .. targs .. '}}</code>'
 
  
 +
function p._image(frame)
 +
origArgs = frame.args
 +
name = origArgs[1]
 +
arg = origArgs[2]
 +
if not arg then
 +
width = 20
 +
else arg:match('%S')
 +
width = arg
 +
end
 +
arg = origArgs[3]
 +
if arg and arg:match('%S') then height = arg end
 +
add_word = origArgs['word']
 +
only_url = origArgs['url']
 +
no_link = origArgs['nolink']
 +
link = origArgs['link']
 +
 +
if not name then return '' end
 +
return _image()
 
end
 
end
  
 
return p
 
return p

Latest revision as of 19:07, 14 February 2022

Documentation for this module may be created at Module:Silent1/sandbox/doc

local p = {}
local origArgs = {}
local name
local width = 'auto'
local height = 'auto'
local add_word
local only_url
local no_link
local link

local data_module_names = {
	--item = 'Module:Items/data',
	item = 'Module:Silent1/sandbox/data',
	other = 'Module:OtherImages/data'
}
local loaded_data_modules = {}

function p.loadData (data_type) 
	local module_name = data_module_names[data_type]
	if loaded_data_modules[module_name] == nil then
		loaded_data_modules[module_name] = mw.loadData(module_name)
	end
	
	return loaded_data_modules[module_name]
end

--Search the item data for item name and return its id
function p.findItemID(name)
	local items = p.loadData('item')
	local lname = string.lower(name)
	local id = nil
	
	for k,v in pairs(items) do
		if lname == string.lower(v['name']) then 
			id = k
			return id
		end
	end
	return id
end

--Find the image from the name
-- function p.findImage(name)
	-- local id
	-- name = string.lower(name)
	-- local image = p.loadData('other')[name]
	
	-- --If name is a number, pass in as an item ID
	-- if tonumber(name) then
		-- id = name
	-- else 
		-- id = p.findItemID(name)
	-- end
		
	-- --If id is valid
	-- if id then
		-- local item = p.loadData('item')[id]
		-- local url = item['itemImage']
		-- local icon = item['itemIcon']
		-- local realname = item['name']
		
		-- if icon then url = icon end
		-- image = {name = realname, image = url}
		
		-- if not (image['name'] and image['image']) then
			-- image = nil
		-- end
	-- end
	
	-- return image
-- end

function p.findImage(name)
	local id
	name = string.lower(name)
	local image = p.loadData('other')[name]
	
	if not image then
		image = p.loadData('item')[name]
	end
	return image
end

--Create a string to output
local function _image()
	local image = p.findImage(name)
	local s = ''
	local rs = nil
	
	if image then 
		local realname = image['name']
		local url = image['image']
		
		if url:sub(1,1) ~= '/' then url = '/' .. url end
		url = 'https://idlescape.com' .. url
		s = url
		
		if only_url == '1' then rs = s end
		
		s = 'src="' .. s .. '"'
		s = s .. ' alt="' .. realname .. '"'
		s = s .. ' width="' .. width .. '"'
		s = s .. ' height="' .. height .. '"'
		s = '<img ' .. s .. '>'
		
		if add_word == '1' then 
			s = s .. ' ' .. realname
		end
		
		if no_link == '1' then rs = s end
		
		if not (link and link:match('%S')) then link = realname end
		s = '[[' .. link .. '|' .. s .. ']]'
	else
		s = '[[' .. name .. ']]' .. '{{?}}'
	end
	if not rs then rs = s end 
	return rs
end

function p.image(frame)
	return p._image(frame:getParent())
end

function p._image(frame)
	origArgs = frame.args
	name = origArgs[1]
	arg = origArgs[2]
	if not arg then 
		width = 20 
	else arg:match('%S')
		width = arg
	end
	arg = origArgs[3]
	if arg and arg:match('%S') then height = arg end
	add_word = origArgs['word']
	only_url = origArgs['url']
	no_link = origArgs['nolink']
	link = origArgs['link']
	
	if not name then return '' end
	return _image()
end

return p