Module:Cargo orders

From Space Station 14 Wiki
Revision as of 09:55, 18 May 2025 by Aliser (talk | contribs) (Created page with "local p = {} --p stands for package local getArgs = require('Module:Arguments').getArgs local yesNo = require('Module:Yesno') local orders_table = mw.loadJsonData("Module:Cargo orders/data/auto/orders.json") -- ======================= local function numeric_table_length(t) local count = 0 for _ in ipairs(t) do count = count + 1 end return count end local function table_length(t) local count = 0 for _ in pairs(t) do count = count + 1 end retu...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Module documentation
View or edit this documentation (about module documentation)

Implements {{Cargo orders}}.


local p = {} --p stands for package
local getArgs = require('Module:Arguments').getArgs
local yesNo = require('Module:Yesno')

local orders_table =  mw.loadJsonData("Module:Cargo orders/data/auto/orders.json")

-- =======================


local function numeric_table_length(t)
    local count = 0
    for _ in ipairs(t) do count = count + 1 end
    return count
end

local function table_length(t)
    local count = 0
    for _ in pairs(t) do count = count + 1 end
    return count
end

local function table_has_value(tab, val)
    for _, value in ipairs(tab) do
        if value == val then
            return true
        end
    end

    return false
end

local function assert_value_not_nil(value, error_message)
    if value == nil then
        if error_message == nil then
            error("value is nil")
        else
            error(error_message)
        end
    end
end

-- Makes the first letter uppercase.
-- Source: https://stackoverflow.com/a/2421746
local function capitalize(str)
    return (str:gsub("^%l", string.upper))
end

-- Makes the first letter in every word uppercase.
local function capitalize_all(str)
    local res = { }
    for _, word in ipairs(mw.text.split(str, ' ', true)) do
        table.insert(res, capitalize(word))
    end
    return table.concat(res, " ")
end

local function passthrough_assert_true(value, valueToReturnIfTrue, errorMessageOnFalse)
    if value then
        return valueToReturnIfTrue
    else
        error(errorMessageOnFalse)
    end
end


-- Lookup a field in a json table by key.
-- Json tables are assumed to be tables with lowercase keys. The `key` is automatically lowercased for the lookup.
-- If a value is a string, it's treated as an alias (another key), triggering a new lookup.
-- 
-- Returns the value by the specified key, or by aliased key if the value was an alias.
-- If value doesn't exist, returns `nil`.
local function lookup_json_table(t, key)
	local result = t[string.lower(key)]
	if type(result) == "string" then
		-- alias. lookup actual definition.
		return t[result]
	else
		return result
	end
end

-- ===========================

function p.main(frame)
    local args = getArgs(frame)

    -- =======================

    local orders_section = mw.html.create('h2')
        :wikitext("Orders")
    
    return orders_section
end