Jump to content

ᱢᱳᱰᱩᱞ:Weather box

ᱣᱤᱠᱤᱯᱤᱰᱤᱭᱟ, ᱨᱟᱲᱟ ᱜᱮᱭᱟᱱ ᱯᱩᱛᱷᱤ ᱠᱷᱚᱱ

This module is used by {{Weather box}}.

{{#invoke:Weather box|function_name}}


Edmonton City Centre (Blatchford Field) Airport (1981−2010)ᱨᱮᱭᱟᱜ ᱦᱚᱭᱼᱦᱤᱥᱤᱫ ᱵᱟᱵᱚᱛ ᱠᱟᱛᱷᱟ
ᱪᱟᱸᱫᱚ ᱡᱟᱱ ᱯᱷᱮᱵᱽ ᱢᱟᱨᱪ ᱮᱯᱨᱤᱞ ᱢᱮᱹ ᱡᱩᱱ ᱡᱩᱞᱟᱭ ᱟᱜᱚᱥᱴ ᱥᱮᱯ ᱚᱠᱴᱚ ᱱᱚᱵᱷᱮ ᱰᱤᱥᱮ ᱥᱮᱨᱢᱟ
ᱡᱟᱹᱥᱛᱤ ᱨᱮᱠᱳᱨᱰ °ᱥᱮ (°ᱯᱷᱟ) 11.7
(53.1)
14.0
(57.2)
23.9
(75.0)
31.1
(88.0)
32.3
(90.1)
34.9
(94.8)
34.6
(94.3)
34.5
(94.1)
33.9
(93.0)
28.6
(83.5)
21.7
(71.1)
16.7
(62.1)
34.9
(94.8)
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱪᱮᱛᱟᱱ °ᱥᱮ (°ᱯᱷᱟ) −6.0
(21.2)
−2.7
(27.1)
2.2
(36.0)
11.2
(52.2)
17.5
(63.5)
21.0
(69.8)
23.1
(73.6)
22.6
(72.7)
17.1
(62.8)
10.4
(50.7)
0.0
(32.0)
−4.5
(23.9)
9.3
(48.7)
ᱫᱤᱱᱟᱹᱢ ᱮᱵᱷᱚᱨᱮᱡᱽ °ᱥᱮ (°ᱥᱮ) −10.4
(13.3)
−7.6
(18.3)
−2.5
(27.5)
5.4
(41.7)
11.5
(52.7)
15.5
(59.9)
17.7
(63.9)
16.9
(62.4)
11.4
(52.5)
5.1
(41.2)
−4.1
(24.6)
−8.8
(16.2)
4.2
(39.6)
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱞᱟᱛᱟᱨ °ᱥᱮ (°ᱯᱷᱟ) −14.8
(5.4)
−12.5
(9.5)
−7.2
(19.0)
−0.5
(31.1)
5.4
(41.7)
9.9
(49.8)
12.3
(54.1)
11.3
(52.3)
5.8
(42.4)
−0.2
(31.6)
−8.2
(17.2)
−13.1
(8.4)
−1.0
(30.2)
ᱥᱟᱱᱟᱢ ᱠᱷᱚᱱ ᱡᱚᱢ ᱨᱮᱠᱳᱨᱰ °ᱥᱮ (°ᱯᱷᱟ) −44.4
(−47.9)
−46.1
(−51.0)
−36.1
(−33.0)
−25.6
(−14.1)
−12.2
(10.0)
−1.1
(30.0)
0.6
(33.1)
−1.2
(29.8)
−11.7
(10.9)
−25.0
(−13.0)
−34.1
(−29.4)
−48.3
(−54.9)
−48.3
(−54.9)
ᱥᱟᱱᱟᱢ ᱠᱷᱚᱱ ᱡᱚᱢ ᱦᱚᱭ ᱨᱮᱭᱟᱜ ᱨᱮᱭᱟᱲ ᱨᱮᱠᱳᱨᱰ −52.8 −50.7 −44.6 −37.5 −14.5 0.0 0.0 −3.7 −13.3 −34.3 −50.2 −55.5 −55.5
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ ᱢᱤᱢᱤ (ᱤᱧᱪᱤ) 21.7
(0.85)
12.0
(0.47)
15.8
(0.62)
28.8
(1.13)
46.1
(1.81)
77.5
(3.05)
93.8
(3.69)
61.9
(2.44)
43.5
(1.71)
21.7
(0.85)
18.0
(0.71)
15.0
(0.59)
455.7
(17.94)
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ ᱢᱤᱢᱤ (ᱤᱧᱪᱤ) 1.3
(0.05)
0.76
(0.03)
1.7
(0.07)
14.5
(0.57)
40.7
(1.60)
77.5
(3.05)
93.8
(3.69)
61.8
(2.43)
42.4
(1.67)
10.9
(0.43)
1.6
(0.06)
0.73
(0.03)
347.8
(13.69)
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱵᱚᱨᱚᱯᱷᱼᱡᱟᱹᱲᱤ ᱥᱮᱢᱤ (ᱤᱧᱪᱤ) 24.5
(9.6)
13.4
(5.3)
17.4
(6.9)
15.3
(6.0)
4.9
(1.9)
0.0
(0.0)
0.0
(0.0)
0.0
(0.0)
1.0
(0.4)
11.6
(4.6)
19.1
(7.5)
16.4
(6.5)
123.5
(48.6)
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ ᱢᱟᱦᱟᱸ (≥ 0.2 mm) 11.0 7.9 8.3 8.8 11.0 14.2 14.6 11.1 9.8 8.0 8.8 9.4 122.9
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ ᱢᱟᱦᱟᱸ (≥ 0.2 mm) 1.1 0.83 1.4 5.9 10.5 14.2 14.6 11.1 9.6 5.6 1.5 0.75 77.3
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱵᱚᱨᱚᱯᱷᱼᱡᱟᱹᱲᱤ ᱢᱟᱦᱟᱸ (≥ 0.2 cm) 10.7 7.7 7.7 4.2 1.2 0.0 0.0 0.0 0.50 3.2 7.9 9.3 52.4
ᱮᱵᱷᱚᱨᱮᱡᱽ relative humidity (%) 65.2 61.2 56.5 42.9 40.4 48.2 52.6 51.4 50.1 50.5 64.7 65.4 54.1
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱪᱟᱸᱫᱚᱠᱤᱭᱟᱹ ᱥᱤᱛᱩᱝ ᱚᱠᱛᱚ 100.8 121.7 176.3 244.2 279.9 285.9 307.5 282.3 192.7 170.8 98.4 84.5 ᱒,᱓᱔᱔.᱘
ᱥᱤᱛᱩᱝ ᱟᱹᱥ ᱨᱮᱭᱟᱜ ᱥᱟᱭᱠᱚᱲᱟ 40.2 44.1 48.1 58.2 56.8 56.2 60.2 61.5 50.4 52.0 37.8 36.0 50.1
ᱮᱵᱷᱚᱨᱮᱡᱽ ultraviolet index 0 1 3 5 7 9 11 9 7 5 3 1 5
ᱯᱷᱮᱰᱟᱛ: Environment Canada,[] Weather Atlas[]

References

  1. "Edmonton City Centre Airport". Canadian Climate Normals 1981−2010. Environment Canada. August 19, 2013. Retrieved September 10, 2013.
  2. "Monthly weather forecast and Climate: Edmonton, Canada". Weather Atlas. Retrieved March 12, 2019.

-- Implement [[Template:Weather box]].

local precision = require('Module:Math')._precision

local function stripToNil(text)
	-- If text is a non-empty string, return its trimmed content.
	-- Otherwise, return nothing (text is an empty string or is not a string).
	if type(text) == 'string' then
		return text:match('(%S.-)%s*$')
	end
end

local function isAny(args, suffix)
	local months = { 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' }
	for _, month in ipairs(months) do
		if stripToNil(args[month .. suffix]) then
			return true
		end
	end
end

local function makeLabel(args, is_first, base, what)
	local first
	if isAny(args, ' ' .. what .. ' cm') then
		first = 'ᱥᱮᱢᱤ'
	else
		if isAny(args, ' ' .. what .. ' mm') then
			first = 'ᱢᱤᱢᱤ'
		else
			first = (what == 'snow' or
				precision(args['Jan ' .. what .. ' inch'] or '0') < 1)
					and 'ᱥᱮᱢᱤ'
					or 'ᱢᱤᱢᱤ'
		end
	end
	local second = 'ᱤᱧᱪᱤ'
	if not stripToNil(args['metric first']) then
		first, second = second, first
	end
	if is_first then
		if stripToNil(args['single line']) then
			first = first .. ' (' .. second .. ')'
		end
	else
		first = second
	end
	return base .. ' ' .. first
end

local function makeSources(frame, args)
	local source1 = stripToNil(args.source) or stripToNil(args['source 1'])
	local source2 = stripToNil(args['source 2']) or stripToNil(args['source2'])
	local result = '|-\n|colspan="14" style="text-align:center;font-size:95%;"|'
	local text
	if source1 or source2 then
		if source1 and source2 then
			text = 'ᱯᱷᱮᱰᱟᱛ ᱑: ' .. source1 .. '\n' .. result .. 'ᱯᱷᱮᱰᱟᱛ ᱒: ' .. source2
		else
			text = 'ᱯᱷᱮᱰᱟᱛ: ' .. (source1 and source1 or source2)
		end
	else
		text = frame:expandTemplate({ title = 'citation needed', args = {date = stripToNil(args.date)} })
	end
	return result .. text .. '\n|}'
end

local function getDefinitions(frame, args)
	-- Return a list of tables or strings that define each row.
	local navbar = require('Module:Navbar')._navbar
	local function _if(parm, a, b)
		return stripToNil(args[parm]) and a or b or ''
	end
	local function _ifset(parm, a)
		return stripToNil(args[parm]) and args[parm] or a
	end
	local function _ifany(suffix)
		return isAny(args, suffix)
	end
	return {

----------- HEADER ----------
'{| class="wikitable ' .. _if('open', '', 'collapsible' .. _if('collapsed', ' collapsed')) ..
'" style="width:' .. _ifset('width', '100%') ..
'; text-align:center; line-height: 1.2em; margin:' ..
_ifset('margin', 'auto') .. ';"' ..
_if('open',
		'\n|+ ' .. _if('location', args.location, '{{{location}}}') .. 'ᱨᱮᱭᱟᱜ ᱦᱚᱭᱼᱦᱤᱥᱤᱫ ᱵᱟᱵᱚᱛ ᱠᱟᱛᱷᱟ',
'\n|-' ..
'\n!colspan="14" | ' ..
_if('name',
	navbar({_if('location', args.location, '{{{location}}}'), args.name, collapsible=1 .. 'ᱨᱮᱭᱟᱜ ᱦᱚᱭᱼᱦᱤᱥᱤᱫ ᱵᱟᱵᱚᱛ ᱠᱟᱛᱷᱟ'}),
	_if('location', args.location, '{{{location}}}') .. 'ᱨᱮᱭᱟᱜ ᱦᱚᱭᱼᱦᱤᱥᱤᱫ ᱵᱟᱵᱚᱛ ᱠᱟᱛᱷᱟ'
)
) ..
[=[

|-
!scope="row" |ᱪᱟᱸᱫᱚ
!scope="col" |ᱡᱟᱱ
!scope="col" |ᱯᱷᱮᱵᱽ
!scope="col" |ᱢᱟᱨᱪ
!scope="col" |ᱮᱯᱨᱤᱞ
!scope="col" |ᱢᱮᱹ
!scope="col" |ᱡᱩᱱ
!scope="col" |ᱡᱩᱞᱟᱭ
!scope="col" |ᱟᱜᱚᱥᱴ
!scope="col" |ᱥᱮᱯ
!scope="col" |ᱚᱠᱴᱚ
!scope="col" |ᱱᱚᱵᱷᱮ
!scope="col" |ᱰᱤᱥᱮ
!scope="col" style="border-left-width:medium" |ᱥᱮᱨᱢᱟ
]=],

{---------- FIRST LINE MAXIMUM HUMIDEX ----------
	WANTROW = _ifany(' maximum humidex') and (_ifset('metric first') or _ifset('single line')),
	mode = 'basic',
	group_name = 'maximum humidex',
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = 'ᱥᱟᱱᱟᱢ ᱠᱷᱚᱱ ᱰᱷᱮᱨ ᱨᱮᱠᱳᱨᱰ [[:en:humidex|ᱞᱚᱦᱚᱫ]]',
	annual_mode = 'max',
},
{---------- FIRST LINE RECORD HIGH TEMPERATURES ----------
	WANTROW = _ifany(' record high C') or _ifany(' record high F'),
	mode = 'temperature',
	group_name = 'record high',
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = 'ᱡᱟᱹᱥᱛᱤ ᱨᱮᱠᱳᱨᱰ °' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. _if('single line', ' (°' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ') .. ')'),
	annual_mode = 'max',
},
{---------- FIRST-SECOND LINE AVG MONTHLY MAXIMUM TEMPERATURES ----------
	WANTROW = _ifany(' avg record high C') or _ifany(' avg record high F'),
	mode = 'temperature',
	group_name = 'avg record high',
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = 'ᱪᱟᱸᱫᱚᱠᱤᱭᱟᱹ ᱮᱵᱷᱚᱨᱮᱡᱽ ᱪᱮᱛᱟᱱ °' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. _if('single line', ' (°' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ') .. ')'),
	annual_mode = 'max',
},
{---------- FIRST LINE AVERAGE HIGH TEMPERATURES ----------
	WANTROW = _ifany(' high C') or _ifany(' high F'),
	mode = 'temperature',
	group_name = 'high',
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱪᱮᱛᱟᱱ °' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. _if('single line', ' (°' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ') .. ')'),
	annual_mode = 'avg',
},
{---------- FIRST LINE DAILY MEAN TEMPERATURES ----------
	WANTROW = _ifany(' mean C') or _ifany(' mean F'),
	mode = 'temperature',
	group_name = 'mean',
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = 'ᱫᱤᱱᱟᱹᱢ ᱮᱵᱷᱚᱨᱮᱡᱽ °' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. _if('single line', ' (°' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. ')'),
	annual_mode = 'avg',
},
{---------- FIRST LINE AVERAGE LOW TEMPERATURES ----------
	WANTROW = _ifany(' low C') or _ifany(' low F'),
	mode = 'temperature',
	group_name = 'low',
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱞᱟᱛᱟᱨ °' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. _if('single line', ' (°' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ') .. ')'),
	annual_mode = 'avg',
},
{---------- FIRST-SECOND LINE AVG MONTHLY MINIMUM TEMPERATURES ----------
	WANTROW = _ifany(' avg record low C') or _ifany(' avg record low F'),
	mode = 'temperature',
	group_name = 'avg record low',
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = 'ᱪᱟᱸᱫᱚᱠᱤᱭᱟᱹ ᱮᱵᱷᱚᱨᱮᱡᱽ ᱠᱚᱢ °' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. _if('single line', ' (°' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ') .. ')'),
	annual_mode = 'min',
},
{---------- FIRST LINE RECORD LOW TEMPERATURES ----------
	WANTROW = _ifany(' record low C') or _ifany(' record low F'),
	mode = 'temperature',
	group_name = 'record low',
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = 'ᱥᱟᱱᱟᱢ ᱠᱷᱚᱱ ᱡᱚᱢ ᱨᱮᱠᱳᱨᱰ °' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. _if('single line', ' (°' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ') .. ')'),
	annual_mode = 'min',
},
{---------- FIRST LINE MINIMUM WIND CHILL ----------
	WANTROW = _ifany(' chill') and (_ifset('metric first') or _ifset('single line')),
	mode = 'basic',
	group_name = 'chill',
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = 'ᱥᱟᱱᱟᱢ ᱠᱷᱚᱱ ᱡᱚᱢ ᱦᱚᱭ ᱨᱮᱭᱟᱜ ᱨᱮᱭᱟᱲ ᱨᱮᱠᱳᱨᱰ',
	annual_mode = 'min',
},
{---------- FIRST LINE TOTAL PRECIPITATION ----------
	WANTROW = _ifany(' precipitation cm') or _ifany(' precipitation mm') or _ifany(' precipitation inch'),
	mode = 'precipitation',
	group_name = 'precipitation',
	color_scheme = _ifset('precipitation colour', 'p'),
	date_mode = true,
	scale_factor = '1',
	prefer_cm = precision(_ifset('Jan precipitation inch', '0')) < 1,
	label = makeLabel(args, true, 'ᱮᱵᱷᱚᱨᱮᱡᱽ [[ᱡᱟᱹᱲᱤ|ᱫᱟᱜᱼᱡᱟᱹᱲᱤ]]', 'precipitation'),
	annual_mode = 'sum',
},
{---------- FIRST LINE RAINFALL ----------
	WANTROW = _ifany(' rain cm') or _ifany(' rain mm') or _ifany(' rain inch'),
	mode = 'precipitation',
	group_name = 'rain',
	color_scheme = _ifset('rain colour', 'p'),
	date_mode = true,
	scale_factor = '1',
	prefer_cm = precision(_ifset('Jan rain inch', '0')) < 1,
	label = makeLabel(args, true, 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ', 'rain'),
	annual_mode = 'sum',
},
{---------- FIRST LINE SNOWFALL ----------
	WANTROW = _ifany(' snow cm') or _ifany(' snow mm') or _ifany(' snow inch'),
	mode = 'precipitation',
	group_name = 'snow',
	prefer_cm = true,
	color_scheme = _ifset('snow colour', 'p'),
	date_mode = true,
	scale_factor = '1',
	label = makeLabel(args, true, 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱵᱚᱨᱚᱯᱷᱼᱡᱟᱹᱲᱤ', 'snow'),
	annual_mode = 'sum',
},
{---------- SECOND LINE MAXIMUM HUMIDEX ----------
	WANTROW = not _ifset('single line') and _ifany(' maximum humidex'),
	mode = 'basic',
	group_name = 'maximum humidex',
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = 'ᱞᱚᱦᱚᱫ ᱩᱱᱩᱫᱩᱜ',
	annual_mode = 'max',
	second_line = true,
},
{---------- SECOND LINE RECORD HIGH TEMPERATURES ----------
	WANTROW = not _ifset('single line') and (_ifany(' record high C') or _ifany(' record high F')),
	mode = 'temperature',
	group_name = 'record high',
	second_line = true,
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = 'ᱡᱟᱹᱥᱛᱤ ᱨᱮᱠᱳᱨᱰ °' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ'),
	annual_mode = 'max',
},
{---------- SECOND LINE AVERAGE HIGH TEMPERATURES ----------
	WANTROW = not _ifset('single line') and (_ifany(' high C') or _ifany(' high F')),
	mode = 'temperature',
	group_name = 'high',
	second_line = true,
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱪᱮᱛᱟᱱ °' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ'),
	annual_mode = 'avg',
},
{---------- SECOND LINE DAILY MEAN TEMPERATURES ----------
	WANTROW = not _ifset('single line') and (_ifany(' mean C') or _ifany(' mean F')),
	mode = 'temperature',
	group_name = 'mean',
	second_line = true,
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = 'ᱫᱤᱱᱟᱹᱢ ᱮᱵᱷᱚᱨᱮᱡᱽ °' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ'),
	show = _if('metric first', '2', '1'),
	annual_mode = 'avg',
},
{---------- SECOND LINE AVERAGE LOW TEMPERATURES ----------
	WANTROW = not _ifset('single line') and (_ifany(' low C') or _ifany(' low F')),
	mode = 'temperature',
	group_name = 'low',
	second_line = true,
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱞᱟᱛᱟᱨ °' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ'),
	show = _if('metric first', '2', '1'),
	annual_mode = 'avg',
},
{---------- SECOND LINE RECORD LOW TEMPERATURES ----------
	WANTROW = not _ifset('single line') and (_ifany(' record low C') or _ifany(' record low F')),
	mode = 'temperature',
	group_name = 'record low',
	second_line = true,
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = 'ᱥᱟᱱᱟᱢ ᱠᱷᱚᱱ ᱡᱚᱢ ᱨᱮᱠᱳᱨᱰ °' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ'),
	show = _if('metric first', '2', '1'),
	annual_mode = 'min',
},
{---------- SECOND LINE MINIMUM WIND CHILL ----------
	WANTROW = not _ifset('single line') and (_ifany(' chill') and _if('metric first')),
	mode = 'basic',
	group_name = 'chill',
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = '[[:en:Wind chill|ᱦᱚᱭ ᱨᱮᱭᱟᱜ ᱨᱮᱭᱟᱲ]]',
	annual_mode = 'min',
},
{---------- SECOND LINE TOTAL PRECIPITATION ----------
	WANTROW = not _ifset('single line') and (_ifany(' precipitation cm') or _ifany(' precipitation mm') or _ifany(' precipitation inch')),
	mode = 'precipitation',
	group_name = 'precipitation',
	second_line = true,
	color_scheme = _ifset('precipitation colour', 'p'),
	date_mode = true,
	scale_factor = '1',
	prefer_cm = precision(_ifset('Jan precipitation inch', '0')) < 1,
	label = makeLabel(args, false, 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ', 'precipitation'),
	annual_mode = 'sum',
},
{---------- SECOND LINE RAINFALL ----------
	WANTROW = not _ifset('single line') and (_ifany(' rain cm') or _ifany(' rain mm') or _ifany(' rain inch')),
	mode = 'precipitation',
	group_name = 'rain',
	second_line = true,
	color_scheme = _ifset('rain colour', 'p'),
	date_mode = true,
	scale_factor = '1',
	prefer_cm = precision(_ifset('Jan rain inch', '0')) < 1,
	label = makeLabel(args, false, 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ', 'rain'),
	annual_mode = 'sum',
},
{---------- SECOND LINE SNOWFALL ----------
	WANTROW = not _ifset('single line') and (_ifany(' snow cm') or _ifany(' snow mm') or _ifany(' snow inch')),
	mode = 'precipitation',
	group_name = 'snow',
	second_line = true,
	prefer_cm = true,
	color_scheme = _ifset('snow colour', 'p'),
	date_mode = true,
	scale_factor = '1',
	label = makeLabel(args, false, 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱵᱚᱨᱚᱯᱷᱼᱡᱟᱹᱲᱤ', 'snow'),
	annual_mode = 'sum',
},
{---------- PRECIPITATION DAYS ----------
	WANTROW = _ifany(' precipitation days'),
	mode = 'basic',
	group_name = 'precipitation days',
	color_scheme = _ifset('precip days colour', 'd'),
	date_mode = true,
	scale_factor = '1',
	label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ ᱢᱟᱦᱟᱸ' .. _if('unit precipitation days', ' <span style="font-size:90%;" class="nowrap">(≥ ' .. _ifset('unit precipitation days', '') .. ')</span>'),
	annual_mode = 'sum',
},
{---------- RAINY DAYS ----------
	WANTROW = _ifany(' rain days'),
	mode = 'basic',
	group_name = 'rain days',
	color_scheme = _ifset('precip days colour', 'd'),
	date_mode = true,
	scale_factor = '1',
	label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ ᱢᱟᱦᱟᱸ' .. _if('unit rain days', ' <span style="font-size:90%;" class="nowrap">(≥ ' .. _ifset('unit rain days', '') .. ')</span>'),
	annual_mode = 'sum',
},
{---------- SNOWY DAYS ----------
	WANTROW = _ifany(' snow days'),
	mode = 'basic',
	group_name = 'snow days',
	color_scheme = _ifset('precip days colour', 'd'),
	date_mode = true,
	scale_factor = '1',
	label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱵᱚᱨᱚᱯᱷᱼᱡᱟᱹᱲᱤ ᱢᱟᱦᱟᱸ' .. _if('unit snow days', ' <span style="font-size:90%;" class="nowrap">(≥ ' .. _ifset('unit snow days', '') .. ')</span>'),
	annual_mode = 'sum',
},
{---------- PERCENT RELATIVE HUMIDITY ----------
	WANTROW = _ifany(' humidity'),
	mode = 'basic',
	group_name = 'humidity',
	color_scheme = _ifset('humidity colour', 'h'),
	scale_factor = '1',
	label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ [[:en:relative humidity|relative humidity]] (%)' ..
		_if('time day', ' <span style="font-size:90%;" class="nowrap">(at {{{time day}}})</span>') ..
		_if('daily', ' <span style="font-size:90%;" class="nowrap">(daily average)</span>'),
	annual_mode = 'avg',
},
{---------- AFTERNOON PERCENT RELATIVE HUMIDITY ----------
	WANTROW = _ifany(' afthumidity'),
	mode = 'basic',
	group_name = 'afthumidity',
	color_scheme = _ifset('humidity colour', 'h'),
	scale_factor = '1',
	label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱟᱹᱭᱩᱵ [[:en:relative humidity|relative humidity]] (%)' ..
		_if('time day', ' <span style="font-size:90%;" class="nowrap">(at {{{time day}}})</span>') ..
		_if('daily', ' <span style="font-size:90%;" class="nowrap">(ᱫᱤᱱᱟᱹᱢ ᱮᱵᱷᱚᱨᱮᱡᱽ)</span>'),
	annual_mode = 'avg',
},
{---------- FIRST LINE AVERAGE DEW POINT ----------
	WANTROW = _ifany(' dew point C') or _ifany(' dew point F'),
	mode = 'temperature',
	group_name = 'dew point',
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱥᱤᱥᱤᱨ ᱴᱩᱰᱟᱹᱜ °' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. _if('single line', ' (°' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ') .. ')'),
	annual_mode = 'avg',
},
{---------- SECOND LINE AVERAGE DEW POINT----------
	WANTROW = not _ifset('single line') and (_ifany(' dew point C') or _ifany(' dew point F')),
	mode = 'temperature',
	group_name = 'dew point',
	second_line = true,
	color_scheme = _ifset('temperature colour', 't'),
	scale_factor = '1',
	label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱥᱤᱥᱤᱨ ᱴᱩᱰᱟᱹᱜ °' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ'),
	show = _if('metric first', '2', '1'),
	annual_mode = 'avg',
},
{---------- MONTHLY SUNSHINE HOURS ----------
	WANTROW = _ifany(' sun'),
	mode = 'basic',
	group_name = 'sun',
	color_scheme = _ifset('sun colour', 's'),
	date_mode = true,
	scale_factor = '1',
	label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱪᱟᱸᱫᱚᱠᱤᱭᱟᱹ [[:en:Sunshine duration|ᱥᱤᱛᱩᱝ ᱚᱠᱛᱚ]]',
	annual_mode = 'sum',
},
{---------- DAILY SUNSHINE HOURS ----------
	WANTROW = _ifany('d sun'),
	mode = 'basic',
	group_name = 'd sun',
	color_scheme = _ifset('sun colour', 's'),
	include_space = false,
	scale_factor = '30.44',
	label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱤᱱᱟᱹᱢ ᱥᱤᱛᱩᱝ ᱴᱟᱲᱟᱝ',
	annual_mode = 'avg',
},
{---------- DAILY DAYLIGHT HOURS ----------
	WANTROW = _ifany(' light'),
	mode = 'basic',
	group_name = ' light',
	color_scheme = _ifset('sun colour', 's'),
	include_space = false,
	scale_factor = '30.44',
	label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱤᱱᱟᱹᱢ [[:en:Daytime|ᱢᱟᱨᱥᱟᱞ ᱴᱟᱲᱟᱝ]]',
	annual_mode = 'avg',
},
{---------- PERCENT SUNSHINE ----------
	WANTROW = _ifany(' percentsun'),
	mode = 'basic',
	group_name = 'percentsun',
	color_scheme = _ifset('sun colour', 's'),
	scale_factor = '7.2',
	label = 'ᱥᱤᱛᱩᱝ ᱟᱹᱥ ᱨᱮᱭᱟᱜ ᱥᱟᱭᱠᱚᱲᱟ',
	annual_mode = 'avg',
},
{---------- ULTRAVIOLET INDEX ----------
	WANTROW = _ifany(' uv'),
	mode = 'basic',
	group_name = 'uv',
	color_scheme = _ifset('uv colour', 'u'),
	scale_factor = '1',
	label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ [[:en:ultraviolet index|ultraviolet index]]',
	annual_mode = 'avg',
},
----------- SOURCES ----------
makeSources(frame, args),
}
end

local function makeFrame(self_args, parent_args)
	-- Kludge to pass arguments for a single row to buildRow.
	-- Later: Refactor buildRow so this is not needed.
	return {
		args = self_args,
		getParent = function (self) return makeFrame(parent_args, nil) end,
	}
end

local function main(frame)
	local buildRow = require('Module:Weather box/row').buildRow
	local args = frame:getParent().args
	local results = {}
	for i, def in ipairs(getDefinitions(frame, args)) do
		local row
		if type(def) == 'string' then
			row = def
		elseif def.WANTROW then
			row = buildRow(makeFrame(def, args))
		else
			row = ''
		end
		results[i] = row
	end
	return '<div>\n'..table.concat(results)..'\n</div>'  -- prevent Scribunto from inserting a blank line before the table
end

return {
	main = main,
}