Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Please sign up or log in to edit the wiki.

Module:ItemPorts

From the Star Citizen Wiki, the fidelity™ encyclopedia
Revision as of 03:17, 6 March 2024 by Alistair3149 (talk | contribs)
Module documentation[view][edit][history][purge]
This documentation is transcluded from Module:ItemPorts/doc. Changes can be proposed in the talk page.

require( 'strict' )

local ItemPorts = {}

local metatable = {}
local methodtable = {}

metatable.__index = methodtable


--- Creates the object that is used to query the SMW store
---
--- @param page string the vehicle page containing data
--- @return table
local function makeSmwQueryObject( page )
    return {
        mw.ustring.format(
            '[[-Has subobject::' .. page .. ']][[%s::+]]',
            'Item port name'
        ),
        mw.ustring.format( '?%s#-=name', 'Item port name' ),
        mw.ustring.format( '?%s#-=min_size', 'Item port minimum size' ),
        mw.ustring.format( '?%s#-=max_size', 'Item port maximum size' ),
        mw.ustring.format( '?%s#-=equipped_name', 'Equipped item name' ),
        --mw.ustring.format( '?%s#-=equipped_uuid', 'Equipped item UUID' ),
        mw.ustring.format(
            'sort=%s,%s',
            'Item port name',
            'Item port maximum size'
        ),
        'order=asc,desc',
        'limit=1000'
    }
end


--- Queries the SMW Store
--- @return table
function methodtable.getSmwData( self, page )
	-- Cache multiple calls
    if self.smwData ~= nil then
        return self.smwData
    end

	local smwData = mw.smw.ask( makeSmwQueryObject( page ) )

    if smwData == nil or smwData[ 1 ] == nil then
        return nil
    end

	mw.logObject( smwData, 'getSmwData' )
    self.smwData = smwData

    return self.smwData
end


--- Generates template output
function methodtable.out( self )
	local smwData = self:getSmwData( self.page )
end


--- New Instance
---
--- @return table ItemPorts
function ItemPorts.new( self, page )
    local instance = {
        page = page or nil
    }

    setmetatable( instance, metatable )

    return instance
end


--- Parser call for generating the table
function ItemPorts.outputTable( frame )
    local args = require( 'Module:Arguments' ).getArgs( frame )
    local page = 'Rattler II Missile'
    --local page = args[ 1 ] or mw.title.getCurrentTitle().rootText

    local instance = ItemPorts:new( page )
    local out = instance:out()

    return out
end


return ItemPorts