<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="he">
	<id>https://chabadpedia.co.il/index.php?action=history&amp;feed=atom&amp;title=%D7%99%D7%97%D7%99%D7%93%D7%94%3AChess</id>
	<title>יחידה:Chess - היסטוריית גרסאות</title>
	<link rel="self" type="application/atom+xml" href="https://chabadpedia.co.il/index.php?action=history&amp;feed=atom&amp;title=%D7%99%D7%97%D7%99%D7%93%D7%94%3AChess"/>
	<link rel="alternate" type="text/html" href="https://chabadpedia.co.il/index.php?title=%D7%99%D7%97%D7%99%D7%93%D7%94:Chess&amp;action=history"/>
	<updated>2026-04-19T16:49:36Z</updated>
	<subtitle>היסטוריית הגרסאות של הדף הזה בוויקי</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://chabadpedia.co.il/index.php?title=%D7%99%D7%97%D7%99%D7%93%D7%94:Chess&amp;diff=804343&amp;oldid=prev</id>
		<title>מ. רובין: יצירת דף עם התוכן &quot;local p = {} local pgnModule = require(&#039;Module:Pgn&#039;)  --Fetch pgn from Wikidata  local function wdEntityToPgn(entity) 	local moveList = mw.wikibase.getBestStatements(entity, &#039;P5286&#039;) 	local participants = mw.wikibase.getBestStatements(entity, &#039;P710&#039;) 	local gameDate = mw.wikibase.getBestStatements(entity, &#039;P585&#039;) 	local metadata = {} 	 	-- metadata: participants P710 (player), P2868 (color) 	for k, v in pairs(participants) do 		local playId = v and v.ma...&quot;</title>
		<link rel="alternate" type="text/html" href="https://chabadpedia.co.il/index.php?title=%D7%99%D7%97%D7%99%D7%93%D7%94:Chess&amp;diff=804343&amp;oldid=prev"/>
		<updated>2025-09-29T21:53:28Z</updated>

		<summary type="html">&lt;p&gt;יצירת דף עם התוכן &amp;quot;local p = {} local pgnModule = require(&amp;#039;Module:Pgn&amp;#039;)  --&lt;a href=&quot;/index.php?title=Fetch_pgn_from_Wikidata&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Fetch pgn from Wikidata (הדף אינו קיים)&quot;&gt;Fetch pgn from Wikidata &lt;/a&gt; local function wdEntityToPgn(entity) 	local moveList = mw.wikibase.getBestStatements(entity, &amp;#039;P5286&amp;#039;) 	local participants = mw.wikibase.getBestStatements(entity, &amp;#039;P710&amp;#039;) 	local gameDate = mw.wikibase.getBestStatements(entity, &amp;#039;P585&amp;#039;) 	local metadata = {} 	 	-- metadata: participants P710 (player), P2868 (color) 	for k, v in pairs(participants) do 		local playId = v and v.ma...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;דף חדש&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local pgnModule = require(&amp;#039;Module:Pgn&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
--[[Fetch pgn from Wikidata&lt;br /&gt;
]]&lt;br /&gt;
local function wdEntityToPgn(entity)&lt;br /&gt;
	local moveList = mw.wikibase.getBestStatements(entity, &amp;#039;P5286&amp;#039;)&lt;br /&gt;
	local participants = mw.wikibase.getBestStatements(entity, &amp;#039;P710&amp;#039;)&lt;br /&gt;
	local gameDate = mw.wikibase.getBestStatements(entity, &amp;#039;P585&amp;#039;)&lt;br /&gt;
	local metadata = {}&lt;br /&gt;
	&lt;br /&gt;
	-- metadata: participants P710 (player), P2868 (color)&lt;br /&gt;
	for k, v in pairs(participants) do&lt;br /&gt;
		local playId = v and v.mainsnak and v.mainsnak.datavalue and v.mainsnak.datavalue.value.id&lt;br /&gt;
		local roleId = v.qualifiers and v.qualifiers[&amp;#039;P2868&amp;#039;] and v.qualifiers[&amp;#039;P2868&amp;#039;][1].datavalue.value.id&lt;br /&gt;
		if playId and roleId then&lt;br /&gt;
			local player = mw.wikibase.label(playId)&lt;br /&gt;
			local role = roleId&lt;br /&gt;
			if role == &amp;#039;Q23444&amp;#039; then &lt;br /&gt;
				table.insert(metadata, &amp;#039;[White &amp;quot;&amp;#039;..player..&amp;#039;&amp;quot;]&amp;#039;)&lt;br /&gt;
			elseif role == &amp;#039;Q23445&amp;#039; then&lt;br /&gt;
				table.insert(metadata, &amp;#039;[Black &amp;quot;&amp;#039;..player..&amp;#039;&amp;quot;]&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- metadata: event date&lt;br /&gt;
	if gameDate and gameDate[1] and gameDate[1].mainsnak and gameDate[1].mainsnak.datavalue and gameDate[1].mainsnak.datavalue.value then&lt;br /&gt;
		local DateModule = require(&amp;#039;יחידה:תאריך&amp;#039;)&lt;br /&gt;
		local eventDate = DateModule.newFromWikidataValue(gameDate[1].mainsnak.datavalue.value):toString()&lt;br /&gt;
		table.insert(metadata, &amp;#039;[EventDate &amp;quot;&amp;#039;..eventDate..&amp;#039;&amp;quot;]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- moves to algebric notation&lt;br /&gt;
	local moves = {}&lt;br /&gt;
	for k, v in pairs(moveList) do&lt;br /&gt;
		local move = mw.ustring.format(&amp;#039;%s. %s&amp;#039;, v.qualifiers[&amp;#039;P1545&amp;#039;][1].datavalue.value, v.mainsnak.datavalue.value)&lt;br /&gt;
		table.insert(moves, {v.qualifiers[&amp;#039;P1545&amp;#039;][1].datavalue.value, move})&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(moves, function(a,b) return tonumber(a[1])&amp;lt;tonumber(b[1]) end) -- dont assume the moves are sort in wikidata&lt;br /&gt;
	local algebricNotation={}&lt;br /&gt;
	for k, v in pairs( moves ) do table.insert(algebricNotation, v[2]) end&lt;br /&gt;
	algebricNotation = table.concat(algebricNotation, &amp;#039; &amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- concat metadata and moves&lt;br /&gt;
	if #metadata&amp;gt;0 then &lt;br /&gt;
		res = table.concat(metadata, &amp;#039;\n&amp;#039;)..&amp;#039;\n\n&amp;#039; ..algebricNotation&lt;br /&gt;
		mw.log(&amp;#039;PGN for &amp;#039; .. entity .. &amp;#039;:&amp;#039;)&lt;br /&gt;
		mw.logObject(res)&lt;br /&gt;
		return res&lt;br /&gt;
	else&lt;br /&gt;
		mw.log(&amp;#039;Algebric notiation for &amp;#039; .. entity .. &amp;#039;:&amp;#039;)&lt;br /&gt;
		mw.logObject(algebricNotation)&lt;br /&gt;
		return algebricNotation&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[Translates PGN to FEN]]&lt;br /&gt;
local function wdEntityToFen(entity, index)&lt;br /&gt;
	local pgn = wdEntityToPgn(entity)&lt;br /&gt;
	local metadata, moves = pgnModule.main(pgn)&lt;br /&gt;
	mw.log(&amp;#039;moves:&amp;#039;)&lt;br /&gt;
	mw.logObject(moves)&lt;br /&gt;
	mw.log(&amp;#039;index: &amp;#039;, index)&lt;br /&gt;
	mw.log(&amp;#039;moves[index]&amp;#039;)&lt;br /&gt;
	mw.logObject(moves[index])&lt;br /&gt;
	-- the default is to take the last move&lt;br /&gt;
	if index==nil then&lt;br /&gt;
		index = #moves&lt;br /&gt;
	end&lt;br /&gt;
	return moves[tonumber(index)]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Create dynamic chess game&lt;br /&gt;
]]&lt;br /&gt;
function pgnFromWikidata(frame)&lt;br /&gt;
	local allArgs = {}&lt;br /&gt;
	&lt;br /&gt;
	for k, v in pairs(frame:getParent().args) do allArgs[k] = v end&lt;br /&gt;
	for k, v in pairs(frame.args) do allArgs[k] = v end&lt;br /&gt;
	local dynamicStyle = (allArgs[&amp;#039;type&amp;#039;] ~= &amp;#039;static&amp;#039;)&lt;br /&gt;
	local templateArgs &lt;br /&gt;
	local pgnExtractor&lt;br /&gt;
	if dynamicStyle then&lt;br /&gt;
		templateArgs = { &amp;#039;pgn&amp;#039; }&lt;br /&gt;
		pgnExtractor = wdEntityToPgn&lt;br /&gt;
	else&lt;br /&gt;
		templateArgs = { &amp;#039;לוח שחמט מ-FEN&amp;#039; }&lt;br /&gt;
		pgnExtractor = wdEntityToFen&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for k, v in pairs(allArgs) do&lt;br /&gt;
		if type(k) == &amp;#039;number&amp;#039; then&lt;br /&gt;
			table.insert(templateArgs, pgnExtractor(v, allArgs[&amp;#039;index&amp;#039;]))  -- quick and dirty. this is needed to set the game to specific move&lt;br /&gt;
		elseif k ~= &amp;#039;type&amp;#039; and k~= &amp;#039;index&amp;#039; then&lt;br /&gt;
			table.insert(templateArgs, mw.ustring.format(&amp;#039; %s = %s &amp;#039;, k, v))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local template = mw.ustring.format(&amp;#039;{{%s}}&amp;#039;, table.concat(templateArgs, &amp;#039;|&amp;#039;))&lt;br /&gt;
	return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Extract PGN from Wikidata&lt;br /&gt;
]]&lt;br /&gt;
function rawPgnFromWikidata(frame)&lt;br /&gt;
	local allArgs = {}&lt;br /&gt;
	local entityId = frame.args[1]&lt;br /&gt;
	if entityId == nil then&lt;br /&gt;
		entityId = mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
	end&lt;br /&gt;
	return wdEntityToPgn(entityId)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.pgnFromWikidata = pgnFromWikidata&lt;br /&gt;
p.rawPgnFromWikidata = rawPgnFromWikidata&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>מ. רובין</name></author>
	</entry>
</feed>