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

Module:Dimensions

From the Star Citizen Wiki, the fidelity™ encyclopedia
Revision as of 03:38, 25 October 2024 by Alistair3149 (talk | contribs)
Module documentation[view][edit][history][purge]
This documentation is transcluded from Module:Dimensions/doc. Changes can be proposed in the talk page.
Function list
L 11 — t
L 16 — getObjectHTML
L 29 — getOutputHTML
L 37 — getBiggestNumber
L 55 — getDimensionsData
L 70 — p.main

require( 'strict' )

local p = {}

local i18n = require( 'Module:i18n' ):new()

--- Wrapper function for Module:i18n.translate
---
--- @param key string The translation key
--- @return string If the key was not found, the key is returned
local function t( key )
	return i18n:translate( key )
end


local function getObjectHTML( data )
    local html = mw.html.create( 'div' )
        :addClass( 'template-dimensions-isometric' )
        :css( {
            [ '--object-length' ] = data.length or data.longestSide,
            [ '--object-width' ] = data.width or data.longestSide,
            [ '--object-height' ] = data.height or data.longestSide,
            [ '--object-longest-side' ] = data.longestSide
        } )
    return html
end


local function getOutputHTML( data )
    
end

--- Return the biggest number
---
--- @param numbers table
--- @return number|nil
local function getBiggestNumber( numbers )
    local biggest = 0
    for i = 1, #numbers do
        local number = numbers[ i ]
        -- Attempt to convert to number if it is string
        if type( number ) == 'string' then
            number = tonumber( number )
        end
        if type( number ) == 'number' then
            if number > biggest then
                biggest = number
            end
        end
    end
    return biggest
end


local function getDimensionsData( args )
    local longestSide = getBiggestNumber( {
        args.length,
        args.width,
        args.height
    } )
    return {
        longestSide = longestSide,
        length = tonumber( args.length ),
        width = tonumber( args.width ),
        height = tonumber( args.height ),
        mass = tonumber( args.mass )
    }
end

function p.main( frame )
    local args = require( 'Module:Arguments' ).getArgs( frame )
    local data = getDimensionsData( args )

    return tostring( getObjectHTML( data ) ) .. frame:extensionTag{
        name = 'templatestyles', args = { src = 'Module:Dimensions/styles.css' }
    }
end

return p