From Wikipedia, the free encyclopedia

-- This module gets the content of a specified table cell

-- Documentation: /info/en/?search=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 = {

		'page-not-found' = 'Page not found',

		'page-not-valid' = 'Invalid title',

		'table-not-given' = 'No table id given',

		'table-not-found' = 'Table not found',

		'cell-not-given' = 'No cell reference given',

		'cell-not-valid' = 'Invalid cell reference',

		'row-not-found' = 'Row not found',

		'column-not-found' = 'Column not found',

	}

	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 = params3

	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 = params2

	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 = params1

	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 value

end



return p
From Wikipedia, the free encyclopedia

-- This module gets the content of a specified table cell

-- Documentation: /info/en/?search=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 = {

		'page-not-found' = 'Page not found',

		'page-not-valid' = 'Invalid title',

		'table-not-given' = 'No table id given',

		'table-not-found' = 'Table not found',

		'cell-not-given' = 'No cell reference given',

		'cell-not-valid' = 'Invalid cell reference',

		'row-not-found' = 'Row not found',

		'column-not-found' = 'Column not found',

	}

	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 = params3

	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 = params2

	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 = params1

	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 value

end



return p

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook