<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="he">
	<id>https://tzefunotwiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=46.31.101.103</id>
	<title>צפונות ויקי - תרומות המשתמש [he]</title>
	<link rel="self" type="application/atom+xml" href="https://tzefunotwiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=46.31.101.103"/>
	<link rel="alternate" type="text/html" href="https://tzefunotwiki.com/index.php/%D7%9E%D7%99%D7%95%D7%97%D7%93:%D7%AA%D7%A8%D7%95%D7%9E%D7%95%D7%AA/46.31.101.103"/>
	<updated>2026-04-12T21:35:55Z</updated>
	<subtitle>תרומות המשתמש</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://tzefunotwiki.com/index.php?title=%D7%99%D7%97%D7%99%D7%93%D7%94:%D7%98%D7%95%D7%95%D7%97_%D7%96%D7%9E%D7%A0%D7%99%D7%9D&amp;diff=23411</id>
		<title>יחידה:טווח זמנים</title>
		<link rel="alternate" type="text/html" href="https://tzefunotwiki.com/index.php?title=%D7%99%D7%97%D7%99%D7%93%D7%94:%D7%98%D7%95%D7%95%D7%97_%D7%96%D7%9E%D7%A0%D7%99%D7%9D&amp;diff=23411"/>
		<updated>2023-03-02T15:49:02Z</updated>

		<summary type="html">&lt;p&gt;46.31.101.103: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local Date = require(&#039;Module:תאריך&#039;)&lt;br /&gt;
local Arguments = require( &amp;quot;Module:Arguments&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
local function WikidataSimpleFill(parameter, entityId, property) &lt;br /&gt;
	-- this doesnt handle unkown values, multi value etc&lt;br /&gt;
	if parameter~=nil then return parameter, false end&lt;br /&gt;
	local wikidataVal = mw.wikibase.getBestStatements( entityId, property )&lt;br /&gt;
	if #wikidataVal &amp;gt; 0 then&lt;br /&gt;
		local propValue = wikidataVal[1].mainsnak&lt;br /&gt;
		return mw.wikibase.renderSnak( propValue ) , true&lt;br /&gt;
	end&lt;br /&gt;
	return nil, false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function render(frame)&lt;br /&gt;
	local args = Arguments.getArgs(frame, { [&#039;trim&#039;] = true, [&#039;removeBlanks&#039;] = true })&lt;br /&gt;
	local res = &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	local entityId = args[&#039;qid&#039;] or mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
	if (entityId == &#039;-&#039; or entityId==&#039;&#039;) then entityId = nil end&lt;br /&gt;
	local pointInTime = args[&#039;נקודת זמן&#039;]&lt;br /&gt;
	local startDate = args[&#039;תאריך התחלה&#039;]&lt;br /&gt;
	local endDate = args[&#039;תאריך סיום&#039;]&lt;br /&gt;
	&lt;br /&gt;
	local wikidataStartDate = args[&#039;תאריך התחלה-ויקינתונים&#039;] or &#039;P580&#039;&lt;br /&gt;
	local wikidataEndDate = args[&#039;תאריך סיום-ויקינתונים&#039;] or &#039;P582&#039;&lt;br /&gt;
	local showEditWikidata = true&lt;br /&gt;
	&lt;br /&gt;
	-- text to show if we have only end date. Example: &amp;quot;Last even - %s&amp;quot; where %s is time. nil - will not show end date&lt;br /&gt;
	local onlyEndDateText = args[&#039;טקסט סיום&#039;]&lt;br /&gt;
	&lt;br /&gt;
	local duration = args[&#039;משך&#039;] --P2047&lt;br /&gt;
	-- Whether to show time diff between start and end day when applicable. Example: כן.&lt;br /&gt;
	local showTimeDiff = args[&#039;הצגת הפרשת זמנים&#039;]&lt;br /&gt;
	local dateRangeDiffFormat = args[&#039;פורמט הצגה&#039;] or &#039;%s (%s)&#039;&lt;br /&gt;
&lt;br /&gt;
	local usingWikidata = false&lt;br /&gt;
	&lt;br /&gt;
	if  entityId~=nil then&lt;br /&gt;
		-- todo: support different fallbacks for properties&lt;br /&gt;
		local usingWikidataStartDate = false&lt;br /&gt;
		local usingWikidataEndDate = false&lt;br /&gt;
		local usingWikidataPointInTime = false&lt;br /&gt;
		local usingWikidataDuration = false&lt;br /&gt;
		&lt;br /&gt;
		wikidataStartDate = mw.text.split( wikidataStartDate, &#039; *, *&#039;, false )&lt;br /&gt;
		wikidataEndDate = mw.text.split( wikidataEndDate, &#039; *, *&#039;, false )&lt;br /&gt;
		for _, wikidataStartProp in pairs(wikidataStartDate) do&lt;br /&gt;
			startDate, usingWikidataStartDate = WikidataSimpleFill(startDate, entityId, wikidataStartProp )&lt;br /&gt;
		end&lt;br /&gt;
		for _, wikidataEndProp in pairs(wikidataEndDate) do&lt;br /&gt;
			endDate, usingWikidataEndDate = WikidataSimpleFill(endDate, entityId, wikidataEndProp )&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		usingWikidata = usingWikidata or usingWikidataStartDate or usingWikidataEndDate&lt;br /&gt;
		if startDate == nil and endDate == nil then&lt;br /&gt;
			pointInTime, usingWikidataPointInTime  = WikidataSimpleFill(pointInTime, entityId, &#039;P585&#039; )&lt;br /&gt;
			usingWikidata = usingWikidata or usingWikidataPointInTime&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if showTimeDiff == &#039;כן&#039; then&lt;br /&gt;
			duration, usingWikidataDuration = WikidataSimpleFill(duration, entityId, &#039;P2047&#039; )&lt;br /&gt;
			if usingWikidataDuration then &lt;br /&gt;
				-- workaround for T261543&lt;br /&gt;
				duration = mw.ustring.gsub( duration, &#039;(%d+) יממה&#039;, &#039;%1 ימים&#039; )&lt;br /&gt;
			end&lt;br /&gt;
			usingWikidata = usingWikidata or usingWikidataDuration&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Whether the event still continues. this will show &amp;lt;START&amp;gt;-present. Example: כן&lt;br /&gt;
	local defaultOngoingEvent = args[&#039;נמשך&#039;] == &#039;כן&#039;&lt;br /&gt;
	local ongoingEvent = defaultOngoingEvent&lt;br /&gt;
	local endDateOngoingEvent = args[&#039;הווה&#039;]&lt;br /&gt;
	local presentText = args[&#039;טקסט הווה&#039;]&lt;br /&gt;
	local diffFormat = &#039;auto&#039; -- TODO: better handling for different scales&lt;br /&gt;
	&lt;br /&gt;
	if  endDate~=nil and endDate~=&#039;&#039; then&lt;br /&gt;
		if endDateOngoingEvent~=nil then&lt;br /&gt;
			-- set default ongoingEvent as false&lt;br /&gt;
			ongoingEvent = false&lt;br /&gt;
			for v in string.gmatch(endDateOngoingEvent, &amp;quot;[^,]+&amp;quot;) do&lt;br /&gt;
				if v:match(&#039;^%s*(.-)%s*$&#039;) == endDate then&lt;br /&gt;
					-- set as true if end date specific that match endDateOngoingEvent&lt;br /&gt;
					ongoingEvent = true&lt;br /&gt;
					if presentText then endDate=presentText end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- explicity end date was specified, hence it is not ongoing&lt;br /&gt;
			ongoingEvent = false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- simple case of single point in time&lt;br /&gt;
	if pointInTime~=nil  or  startDate==endDate then&lt;br /&gt;
		if pointInTime == nil and startDate==endDate  then&lt;br /&gt;
			pointInTime = startDate&lt;br /&gt;
		end&lt;br /&gt;
		res = pointInTime&lt;br /&gt;
	else -- date ranges&lt;br /&gt;
		if startDate == nil and endDate~=nil  then&lt;br /&gt;
			if onlyEndDateText == nil then return end -- ignore only end date&lt;br /&gt;
			res = mw.ustring.format(onlyEndDateText, endDate)&lt;br /&gt;
		elseif startDate ~= nil and (endDate==nil or (ongoingEvent and endDate~=nil))  then&lt;br /&gt;
			if ongoingEvent then&lt;br /&gt;
				dateFormat = &#039;%s–%s&#039;&lt;br /&gt;
				if mw.ustring.match(startDate, &#039; &#039;) or (endDate and mw.ustring.match(endDate, &#039; &#039;)) then&lt;br /&gt;
					dateFormat = &#039;%s – %s&#039;&lt;br /&gt;
				end&lt;br /&gt;
				res = mw.ustring.format(dateFormat, startDate, endDate or &#039;הווה&#039;)&lt;br /&gt;
				-- try to fallback to automatic duration if duration is not available&lt;br /&gt;
				if showTimeDiff == &#039;כן&#039; and duration==nil then&lt;br /&gt;
					local success, automaicDuration = pcall(Date.parseDateRange, startDate, diffFormat, true)&lt;br /&gt;
					if success then duration = automaicDuration end&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				res = startDate&lt;br /&gt;
			end&lt;br /&gt;
		elseif startDate~=nil and endDate~=nil  then&lt;br /&gt;
			dateFormat = &#039;%s–%s&#039;&lt;br /&gt;
			if mw.ustring.match(startDate, &#039; &#039;) or mw.ustring.match(endDate, &#039; &#039;) then&lt;br /&gt;
				dateFormat = &#039;%s – %s&#039;&lt;br /&gt;
			end&lt;br /&gt;
			res = mw.ustring.format(dateFormat, startDate, endDate)&lt;br /&gt;
			if showTimeDiff == &#039;כן&#039; and duration==nil then&lt;br /&gt;
				local success, automaicDuration = pcall(Date.parseDateRange, res, diffFormat, true)&lt;br /&gt;
				if success then duration = automaicDuration end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- append the duration&lt;br /&gt;
	if showTimeDiff == &#039;כן&#039; and duration~=nil and duration~=&#039;&#039; and res~=nil then&lt;br /&gt;
		res = mw.ustring.format(dateRangeDiffFormat, res, duration)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if showEditWikidata and usingWikidata and res~=nil and res~=&#039;&#039; and entityId~=nil then&lt;br /&gt;
		local link = mw.title.makeTitle( 0, entityId, &#039;&#039;, &#039;wikidata&#039; ):fullUrl(&#039;uselang=he&#039;)&lt;br /&gt;
		res = res .. mw.ustring.format(&#039; [[File:Blue pencil RTL.svg|link=%s|עריכת הנתון בוויקינתונים]]&#039;, link)&lt;br /&gt;
	end&lt;br /&gt;
	return res&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return 	{&lt;br /&gt;
	[&#039;טווח זמנים&#039;]=render&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>46.31.101.103</name></author>
	</entry>
</feed>