<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ml">
	<id>https://schoolwiki.in/index.php?action=history&amp;feed=atom&amp;title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82%3ACore</id>
	<title>ഘടകം:Core - നാൾവഴി</title>
	<link rel="self" type="application/atom+xml" href="https://schoolwiki.in/index.php?action=history&amp;feed=atom&amp;title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82%3ACore"/>
	<link rel="alternate" type="text/html" href="https://schoolwiki.in/index.php?title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Core&amp;action=history"/>
	<updated>2026-06-13T22:52:11Z</updated>
	<subtitle>വിക്കിയിൽ ഈ താളിന്റെ നാൾവഴി</subtitle>
	<generator>MediaWiki 1.43.4</generator>
	<entry>
		<id>https://schoolwiki.in/index.php?title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Core&amp;diff=1077698&amp;oldid=prev</id>
		<title>07:03, 2 നവംബർ 2021 സമയത്ത് Ranjithsiji</title>
		<link rel="alternate" type="text/html" href="https://schoolwiki.in/index.php?title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Core&amp;diff=1077698&amp;oldid=prev"/>
		<updated>2021-11-02T07:03:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://schoolwiki.in/index.php?title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Core&amp;amp;diff=1077698&amp;amp;oldid=1025146&quot;&gt;മാറ്റങ്ങൾ കാണിക്കുക&lt;/a&gt;</summary>
		<author><name>Ranjithsiji</name></author>
	</entry>
	<entry>
		<id>https://schoolwiki.in/index.php?title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Core&amp;diff=1025146&amp;oldid=prev</id>
		<title>Adithyak1997: വിക്കിമീഡിയ കോമ്മൺസിൽ നിന്നും പകർത്തി</title>
		<link rel="alternate" type="text/html" href="https://schoolwiki.in/index.php?title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Core&amp;diff=1025146&amp;oldid=prev"/>
		<updated>2020-09-28T19:55:06Z</updated>

		<summary type="html">&lt;p&gt;വിക്കിമീഡിയ കോമ്മൺസിൽ നിന്നും പകർത്തി&lt;/p&gt;
&lt;p&gt;&lt;b&gt;പുതിയ താൾ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[  &lt;br /&gt;
  __  __           _       _         ____               &lt;br /&gt;
 |  \/  | ___   __| |_   _| | ___ _ / ___|___  _ __ ___ &lt;br /&gt;
 | |\/| |/ _ \ / _` | | | | |/ _ (_) |   / _ \| &amp;#039;__/ _ \&lt;br /&gt;
 | |  | | (_) | (_| | |_| | |  __/_| |__| (_) | | |  __/&lt;br /&gt;
 |_|  |_|\___/ \__,_|\__,_|_|\___(_)\____\___/|_|  \___|&lt;br /&gt;
                                                        &lt;br /&gt;
This module is intended as collection of core functions shared among several Lua modules &lt;br /&gt;
creating infobox templates on Commons. &lt;br /&gt;
&lt;br /&gt;
Authors and maintainers:&lt;br /&gt;
* User:Jarekt  &lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local core = {}&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
-- Based on frame structure create &amp;quot;args&amp;quot; table with all the input parameters.&lt;br /&gt;
-- All inputs are not not case-sensitive and underscored are treated the same &lt;br /&gt;
-- way as speces. Input values are trimmed and empty string are converted to &lt;br /&gt;
-- nils. If &amp;quot;lang&amp;quot; is not provided than we substitute user&amp;#039;s prefered language.&lt;br /&gt;
function core.getArgs(frame)&lt;br /&gt;
	local function normalize_input_args(input_args, output_args)&lt;br /&gt;
		for name, value in pairs( input_args ) do &lt;br /&gt;
			value = string.gsub(value, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;) -- trim whitespaces from the beggining and the end of the string&lt;br /&gt;
			if value ~= &amp;#039;&amp;#039; then -- nuke empty strings&lt;br /&gt;
				if type(name)==&amp;#039;string&amp;#039; then &lt;br /&gt;
					name = string.gsub( string.lower(name), &amp;#039; &amp;#039;, &amp;#039;_&amp;#039;)&lt;br /&gt;
				end&lt;br /&gt;
				output_args[name] = value&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return output_args&lt;br /&gt;
	end&lt;br /&gt;
	local args = {}&lt;br /&gt;
	args = normalize_input_args(frame:getParent().args, args)&lt;br /&gt;
	args = normalize_input_args(frame.args, args)&lt;br /&gt;
	if (args.lang and mw.language.isSupportedLanguage(args.lang)) then &lt;br /&gt;
		args.lang = string.lower(args.lang)&lt;br /&gt;
	else&lt;br /&gt;
		args.lang = frame:callParserFunction(&amp;quot;int&amp;quot;,&amp;quot;lang&amp;quot;)  -- get user&amp;#039;s chosen language&lt;br /&gt;
	end&lt;br /&gt;
	return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
-- code equivalent to https://commons.wikimedia.org/wiki/Template:LangSwitch&lt;br /&gt;
function core.langSwitch(list,lang)&lt;br /&gt;
	local langList = mw.language.getFallbacksFor(lang)&lt;br /&gt;
	table.insert(langList,1,lang)&lt;br /&gt;
	for i,language in ipairs(langList) do&lt;br /&gt;
		if list[language] then&lt;br /&gt;
			return list[language]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
-- Function allowing for consistent treatment of boolean-like wikitext input.&lt;br /&gt;
-- It works similarly to Module:Yesno&lt;br /&gt;
function core.yesno(val, default)&lt;br /&gt;
	if type(val) == &amp;#039;boolean&amp;#039; then&lt;br /&gt;
		return val&lt;br /&gt;
	elseif type(val) == &amp;#039;number&amp;#039; then&lt;br /&gt;
		if val==1 then &lt;br /&gt;
			return true&lt;br /&gt;
		elseif val==0 then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	elseif type(val) == &amp;#039;string&amp;#039; then&lt;br /&gt;
	    val = mw.ustring.lower(val)  -- put in lower case&lt;br /&gt;
	    if val == &amp;#039;no&amp;#039;  or val == &amp;#039;n&amp;#039; or val == &amp;#039;false&amp;#039; or val == &amp;#039;0&amp;#039; then&lt;br /&gt;
	        return false&lt;br /&gt;
	    elseif val == &amp;#039;yes&amp;#039; or val == &amp;#039;y&amp;#039; or val == &amp;#039;true&amp;#039;  or val == &amp;#039;1&amp;#039; then&lt;br /&gt;
	        return true&lt;br /&gt;
	    end&lt;br /&gt;
    end&lt;br /&gt;
    return default&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
-- read Commons Data:SOMENAME.tab dataset and look for message identified by a &lt;br /&gt;
-- &amp;quot;key&amp;quot; in a language &amp;quot;lang&amp;quot;. See editAtWikidata as an example.&lt;br /&gt;
function core.formatMessage(dataset, key, lang)&lt;br /&gt;
	for _, row in pairs(mw.ext.data.get(dataset, lang).data) do&lt;br /&gt;
		local id, msg = unpack(row)&lt;br /&gt;
		if id == key then&lt;br /&gt;
			return mw.message.newRawMessage(msg):plain()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	error(&amp;#039;Invalid message key &amp;quot;&amp;#039; .. key .. &amp;#039;&amp;quot;&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Assembles the &amp;quot;Edit at Wikidata&amp;quot; pen icon and returns it as wikitext string.&lt;br /&gt;
-- Dependencies: Data:I18n/EditAt.tab&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
function core.editAtWikidata(entityID, propertyID, lang)&lt;br /&gt;
	local msg  = core.formatMessage(&amp;#039;I18n/EditAt.tab&amp;#039;, &amp;#039;EditAtWikidata&amp;#039;, lang)&lt;br /&gt;
	local link = &amp;#039;https://www.wikidata.org/wiki/&amp;#039; .. entityID .. (propertyID == &amp;quot;&amp;quot; and &amp;quot;&amp;quot; or (&amp;quot;#&amp;quot; .. propertyID))&lt;br /&gt;
	return &amp;quot;&amp;amp;nbsp;[[File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=&amp;quot;..msg..&amp;quot;|link=&amp;quot;..link..&amp;quot;|&amp;quot;..msg..&amp;quot;]]&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Assembles the &amp;quot;Edit at SDC&amp;quot; pen icon and returns it as wikitext string.&lt;br /&gt;
-- Dependencies: Data:I18n/EditAt.tab&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
function core.editAtSDC(propertyID, lang)&lt;br /&gt;
	local msg  = core.formatMessage(&amp;#039;I18n/EditAt.tab&amp;#039;, &amp;#039;EditAtSDC&amp;#039;, lang)&lt;br /&gt;
	local link =  mw.title.getCurrentTitle():fullUrl() .. (propertyID == &amp;quot;&amp;quot; and &amp;quot;&amp;quot; or (&amp;quot;#&amp;quot; .. propertyID))&lt;br /&gt;
	return &amp;quot;&amp;amp;nbsp;[[File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=&amp;quot;..msg..&amp;quot;|link=&amp;quot;..link..&amp;quot;|&amp;quot;..msg..&amp;quot;]]&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
function core.getLabel(id, userLang) &lt;br /&gt;
-- code equivalent to require(&amp;quot;Module:Wikidata label&amp;quot;)._getLabel&lt;br /&gt;
	local label, link&lt;br /&gt;
	-- build language fallback list&lt;br /&gt;
	local langList = mw.language.getFallbacksFor(userLang)&lt;br /&gt;
	table.insert(langList, 1, userLang)&lt;br /&gt;
	for _, lang in ipairs(langList) do  -- loop over language fallback list looking for label in the specific language&lt;br /&gt;
		label = mw.wikibase.getLabelByLang(id, lang)&lt;br /&gt;
		if label then break end                    -- label found and we are done&lt;br /&gt;
	end	&lt;br /&gt;
	for _, lang in ipairs(langList) do  -- loop over language fallback list looking for label in the specific language&lt;br /&gt;
		link =  mw.wikibase.getSitelink(id, lang .. &amp;#039;wiki&amp;#039;)&lt;br /&gt;
		if link then&lt;br /&gt;
			link = mw.ustring.format(&amp;#039;w:%s:%s&amp;#039;, lang, link)&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end	&lt;br /&gt;
	link  = link  or (&amp;#039;d:&amp;#039;..id)&lt;br /&gt;
	label = label or id&lt;br /&gt;
    return &amp;#039;[[&amp;#039;..link..&amp;#039;|&amp;#039;..label..&amp;#039;]]&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return core&lt;/div&gt;</summary>
		<author><name>Adithyak1997</name></author>
	</entry>
</feed>