Jump to content

Module:Get cell: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
mNo edit summary
Tag: Reverted
mNo edit summary
Line 31: Line 31:
-- Replace any placeholders (A1, B2, etc) in the given expression for the real values
-- Replace any placeholders (A1, B2, etc) in the given expression for the real values
local expression = args[1]
local expression = args[1]
local e = expression
expression = frame:preprocess( expression )
local lang = mw.language.getContentLanguage()
local lang = mw.language.getContentLanguage()
local rowLetter, rowNumber, rowData, cellNumber, cellValue
local rowLetter, rowNumber, rowData, cellNumber, cellValue
Line 41: Line 39:
cellNumber = tonumber( string.match( placeholder, '[0-9]+' ) )
cellNumber = tonumber( string.match( placeholder, '[0-9]+' ) )
cellValue = rowData[ cellNumber ]
cellValue = rowData[ cellNumber ]
--cellValue = lang:parseFormattedNumber( cellValue )
cellValue = lang:parseFormattedNumber( cellValue )
expression = string.gsub( expression, placeholder, cellValue )
expression = string.gsub( expression, placeholder, cellValue )
end
end


return e--frame:callParserFunction( '#expr', expression )
return frame:callParserFunction( '#expr', expression )
end
end



Revision as of 19:32, 29 April 2024

-- This module serves to calculate a table cell out of the values of other cells
-- Documentation: https://en.wikipedia.org/wiki/Module:Calculated_cell
-- Authors: Sophivorus
-- License: GNU General Public License 3 or later (http://www.gnu.org/licenses/gpl-3.0.html)
local CalculatedCell = {}

local WikitextParser = require( 'Module:WikitextParser' )

function CalculatedCell.main( frame )

	-- Let page-level args override template-level args
	local args = frame.args
	local pageArgs = frame:getParent().args
	for key, value in pairs( pageArgs ) do
		args[ key ] = value
	end

	-- Get the page wikitext
	local pageTitle = mw.title.getCurrentTitle()
	local page = args[3]
	if page then
		pageTitle = mw.title.new( page )
	end
	local pageWikitext = pageTitle:getContent()

	-- Get the table data
	local tableId = args[2]
	local tableWikitext = WikitextParser.getTableById( pageWikitext, tableId )
	local tableData = WikitextParser.getTableData( tableWikitext )

	-- Replace any placeholders (A1, B2, etc) in the given expression for the real values
	local expression = args[1]
	local lang = mw.language.getContentLanguage()
	local rowLetter, rowNumber, rowData, cellNumber, cellValue
	for placeholder in string.gmatch( expression, '[A-Z]+[0-9]+' ) do
		rowLetter = string.match( placeholder, '[A-Z]+' )
		rowNumber = string.find( 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', rowLetter )
		rowData = tableData[ rowNumber ]
		cellNumber = tonumber( string.match( placeholder, '[0-9]+' ) )
		cellValue = rowData[ cellNumber ]
		cellValue = lang:parseFormattedNumber( cellValue )
		expression = string.gsub( expression, placeholder, cellValue )
	end

	return frame:callParserFunction( '#expr', expression )
end

return CalculatedCell