Module:Sandbox/User:Alsang: Difference between revisions

No edit summary
No edit summary
 
(44 intermediate revisions by the same user not shown)
Line 1: Line 1:
p = {}


local p = {}
function p.main()

return nil
function p.gathererPages1()
local queryString = '[[Variant of::Globeplant||Dandelion||Apple||Haleberries||Chestnut||Catkin||Clover||Snake Scale||Orchid||Dock Leaf||Sage||Thistle]]'
return p.main(queryString)
end
end


function p.stone()
function p.gathererPages2()
local queryString = '[[Variant of::Bone Spike||Femur Shard||Goat Horn||Rams Horn]]'
return p.makeTable('stone')
return p.main(queryString)
end
end


function p.metal()
function p.gathererPages3()
local queryString = '[[Variant of::Leek||Bitterfruit||Tangfruit]]'
return p.makeTable('metal')
return p.main(queryString)
end
end


function p.bone()
function p.main(queryString)

return p.makeTable('bone')
local query = {
end
queryString,
'? #- = name',
'?Profession Level A = level',
'?Variant of #-= variant',
'sort = Variant of,Profession Level A',
'limit = 500'
}
local results = mw.smw.ask(query)
for _,page in ipairs(results) do
function p.makeTable(args)
if string.find(page.name,'Mine') then
page.node = page.name
local variants = {'Basic','Moderate','Fine','Strong','Superior','Perfect'}
page.nodevar = page.variant
local weaponsStone = {
else
'Hammerfist',
page.node = page.name .. ' (skill node)'
'Throwing Stones',
page.nodevar = page.variant .. ' (skill node)'
'Stone Slab Shield',
'Stone Mace',
'Stone Discs',
'War Hammer',
'Bolas',
'Stone Chunk Shield',
'Double Headed Hammer',
'Throwing Clubs',
'Great Stone Mace',
' Polished Stone Shield',
'Throwing Hammers',
'Great Hammer',
'Sling'}
local weaponsMetal = {
'Rapier ',
'Throwing Twinblades',
'Metal Kite Shield',
'Flanged Mace',
'Throwing Rings',
'Shortsword',
'Metal Javelins',
'Metal Heater Shield',
'Longsword',
'Throwing Knives',
'Broadsword',
'Metal Buckler',
'Throwing Axes',
'Battleaxe',
'Metal Bow'}
local weaponsBone = {
'Truncheon',
'Blowpipe',
'Wooden Round Shield',
'Cudgel',
'Javelins',
'Club',
'Light Crossbow',
'Wooden Square Shield',
'Quarterstaff',
'Recurve Bow',
'Spear',
'Wooden Hexagon Shield',
'Longbow',
'Poleaxe',
'Heavy Crossbow'}
if args=='stone' then
weapons = weaponsStone
elseif args=='metal' then
weapons = weaponsMetal
elseif args=='bone' then
weapons = weaponsBone
else
return nil
end
local allWeapons = {}
for j,jtem in ipairs(weapons) do
table.insert(allWeapons,{suffixPage='[[' .. jtem .. ']]',prefixPage=''})
end

for i,item in ipairs(variants) do
for j,jtem in ipairs(weapons) do
table.insert(allWeapons,{suffixPage='[[' .. jtem .. ' (' .. item .. ')]]',prefixPage='[[' .. item .. ' ' .. jtem .. ']]'})
end
end
local result = mw.smw.ask('[['..page.node..']]|?Activity JSON = data')
end
page.JSON = (result and result[1] and result[1].data) or ''
for i,item in ipairs(allWeapons) do
if type(page.JSON)=='table' then
page.JSON = table.concat(page.JSON,'<br>')
local query = mw.smw.ask(item.suffixPage .. '|?Name #- = data|mainlabel=-')
if type(query)=='table' then
item.suffixItem = query[1].data
end
end
local query = mw.smw.ask(item.suffixPage .. '|?Uses facility #- = data|mainlabel=-')
if type(query)=='table' then
item.suffixFacility = query[1].data
end
local query = mw.smw.ask(item.prefixPage .. '|?Name #- = data|mainlabel=-')
if type(query)=='table' then
item.prefixItem = query[1].data
end
local query = mw.smw.ask(item.prefixPage .. '|?Uses facility #- = data|mainlabel=-')
if type(query)=='table' then
item.prefixFacility = query[1].data
end
end
end
Line 118: Line 48:
:tag('tr')
:tag('tr')
:tag('th')
:tag('th')
:wikitext('Suffix suffixPage')
:wikitext('Variant')
:done()
:done()
:tag('th')
:tag('th')
:wikitext('Suffix suffixItem')
:wikitext('Node Variant')
:done()
:done()
:tag('th')
:tag('th')
:wikitext('Suffix Recipe Facility')
:wikitext('Level')
:done()
:done()
:tag('th')
:tag('th')
:wikitext('Prefix suffixPage')
:wikitext('Page')
:done()
:done()
:tag('th')
:tag('th')
:wikitext('Prefix suffixItem')
:wikitext('Node')
:done()
:done()
:tag('th')
:tag('th')
:wikitext('Prefix Recipe Facility')
:wikitext('Node JSON')
:done()
:done()
:done()
:done()

for i, item in ipairs(results) do
local row = out:tag('tr')
--level
for i,item in ipairs(allWeapons) do
local row = out:tag('tr')
:tag('td')
:tag('td')
:wikitext('[['..item.variant..']]')
:wikitext(item.suffixPage)
:done()
:tag('td')
:wikitext(item.suffixItem)
:done()
:tag('td')
:wikitext(item.suffixFacility)
:done()
:tag('td')
:wikitext(item.prefixPage)
:done()
:tag('td')
:wikitext(item.prefixItem)
:done()
:tag('td')
:wikitext(item.prefixFacility)
:done()
:done()
:done()
:tag('td')
:wikitext('[['..item.nodevar..']]')
:done()
:done()
:tag('td')
end
:wikitext(item.level)
:done()
return out
:tag('td')
:wikitext('[['..item.name..']]')
--for debugging
:done()
--return '<pre>'..mw.text.jsonEncode(args, mw.text.JSON_PRETTY)..'</pre>'
:tag('td')
:wikitext('[['..item.node..']]')
:done()
:tag('td')
:wikitext(item.JSON)
:done()
end
return out

end
end



Latest revision as of 16:27, 23 December 2024

Module documentation
This documentation is transcluded from Module:Sandbox/User:Alsang/doc. [edit] [history] [purge]
This module does not have any documentation. Please consider adding documentation at Module:Sandbox/User:Alsang/doc. [edit]
Module:Sandbox/User:Alsang's function main is invoked by Template:Sandbox/User:Alsang.

local p = {}

function p.gathererPages1()
	local queryString = '[[Variant of::Globeplant||Dandelion||Apple||Haleberries||Chestnut||Catkin||Clover||Snake Scale||Orchid||Dock Leaf||Sage||Thistle]]'
	return p.main(queryString)
end

function p.gathererPages2()
	local queryString = '[[Variant of::Bone Spike||Femur Shard||Goat Horn||Rams Horn]]'
	return p.main(queryString)
end

function p.gathererPages3()
	local queryString = '[[Variant of::Leek||Bitterfruit||Tangfruit]]'
	return p.main(queryString)
end

function p.main(queryString)

	local query = {
		queryString,
		'? #- = name',
		'?Profession Level A = level',
		'?Variant of #-= variant',
		'sort = Variant of,Profession Level A',
		'limit = 500'
	}
	local results = mw.smw.ask(query)
	
	for _,page in ipairs(results) do
		if string.find(page.name,'Mine') then
			page.node = page.name
			page.nodevar = page.variant
		else
			page.node = page.name .. ' (skill node)'
			page.nodevar = page.variant .. ' (skill node)'
		end
		local result = mw.smw.ask('[['..page.node..']]|?Activity JSON = data')
		page.JSON = (result and result[1] and result[1].data) or ''
		if type(page.JSON)=='table' then
			page.JSON = table.concat(page.JSON,'<br>')
		end
	end
	
	local out = mw.html.create('table')
		:addClass('wikitable sortable')
		:tag('tr')
			:tag('th')
				:wikitext('Variant')
			:done()
			:tag('th')
				:wikitext('Node Variant')
			:done()
			:tag('th')
				:wikitext('Level')
			:done()
			:tag('th')
				:wikitext('Page')
			:done()
			:tag('th')
				:wikitext('Node')
			:done()
			:tag('th')
				:wikitext('Node JSON')
			:done()
		:done()

	for i, item in ipairs(results) do
		local row = out:tag('tr')
		
			--level
			:tag('td')
				:wikitext('[['..item.variant..']]')
			:done()
			:tag('td')
				:wikitext('[['..item.nodevar..']]')
			:done()
			:tag('td')
				:wikitext(item.level)
			:done()
			:tag('td')
				:wikitext('[['..item.name..']]')
			:done()
			:tag('td')
				:wikitext('[['..item.node..']]')
			:done()
			:tag('td')
				:wikitext(item.JSON)
			:done()
			
	end
	
	return out

end

return p