Module:Get cell explained

-- This module gets the content of a specified table cell-- Documentation: https://en.wikipedia.org/wiki/Module:Get_cell-- Authors: Sophivorus-- License: GNU General Public License 3 or later (http://www.gnu.org/licenses/gpl-3.0.html)local p =

local WikitextParser = require('Module:WikitextParser')

local function getError(key) local messages = local frame = mw.getCurrentFrame local message = frame.args[key ] or messages[key ] return mw.html.create('span'):addClass('error'):wikitext(message)end

function p.main(frame)

-- Get the template parameters local params = frame:getParent.args

-- Get the page wikitext local pageTitle = mw.title.getCurrentTitle local page = params[3] if page then pageTitle = mw.title.new(page) end if not pageTitle then return getError('page-not-valid') end local pageWikitext = pageTitle:getContent if not pageWikitext then return getError('page-not-found') end

-- Get the table data local tableId = params[2] if not tableId then return getError('table-not-given') end local tableWikitext = WikitextParser.getTableById(pageWikitext, tableId) local tableData = WikitextParser.getTableData(tableWikitext)

-- Replace the cell reference (A1, B2, etc) for the real value local cellReference = params[1] if not cellReference then getError('cell-not-given') end if not string.match(cellReference, '[A-Z]+[0-9]+') then getError('cell-not-valid') end local rowReference = string.match(cellReference, '[A-Z]+') local rowNumber = string.find('ABCDEFGHIJKLMNOPQRSTUVWXYZ', rowReference) local rowData = tableData[rowNumber ] if not rowData then getError('row-not-found') end local columnReference = string.match(cellReference, '[0-9]+') local columnNumber = tonumber(columnReference) local value = rowData[columnNumber ] if not value then getError('column-not-found') end

-- If the cell value is numeric, format it to simplify subsequent calculations local language = mw.language.getContentLanguage local number = language:parseFormattedNumber(value) if number then return number end return valueend

return p