This module needs documentation.
Please document this module by describing its purpose and usage on the documentation page.

local u = require("Module:string/char")

local casing = {
	['common'] = {
		-- Internally unsupported mappings
		['DŽ'] = {'dž', 'Dž', 'DŽ'},            -- LATIN CAPITAL LETTER DZ WITH CARON
		['Dž'] = {'dž', 'Dž', 'DŽ'},            -- LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
		['dž'] = {'dž', 'Dž', 'DŽ'},            -- LATIN SMALL LETTER DZ WITH CARON
		['LJ'] = {'lj', 'Lj', 'LJ'},            -- LATIN CAPITAL LETTER LJ
		['Lj'] = {'lj', 'Lj', 'LJ'},            -- LATIN CAPITAL LETTER L WITH SMALL LETTER J
		['lj'] = {'lj', 'Lj', 'LJ'},            -- LATIN SMALL LETTER LJ
		['NJ'] = {'nj', 'Nj', 'NJ'},            -- LATIN CAPITAL LETTER NJ
		['Nj'] = {'nj', 'Nj', 'NJ'},            -- LATIN CAPITAL LETTER N WITH SMALL LETTER J
		['nj'] = {'nj', 'Nj', 'NJ'},            -- LATIN SMALL LETTER NJ
		['DZ'] = {'dz', 'Dz', 'DZ'},            -- LATIN CAPITAL LETTER DZ
		['Dz'] = {'dz', 'Dz', 'DZ'},            -- LATIN CAPITAL LETTER D WITH SMALL LETTER Z
		['dz'] = {'dz', 'Dz', 'DZ'},            -- LATIN SMALL LETTER DZ
		['Ꞌ'] = {'ꞌ', 'Ꞌ', 'Ꞌ'},            -- LATIN CAPITAL LETTER SALTILLO
		['ꞌ'] = {'ꞌ', 'Ꞌ', 'Ꞌ'},            -- LATIN SMALL LETTER SALTILLO

		-- http://www.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt
		-- Unconditional mappings
		['ß'] = {'ß', 'Ss', 'SS'},          -- LATIN SMALL LETTER SHARP S
		--['İ'] = {'i'..u(0x0307), 'İ', 'İ'}, -- LATIN CAPITAL LETTER I WITH DOT ABOVE
	
		['ff'] = {'ff', 'Ff', 'FF'},          -- LATIN SMALL LIGATURE FF
		['fi'] = {'fi', 'Fi', 'FI'},          -- LATIN SMALL LIGATURE FI
		['fl'] = {'fl', 'Fl', 'FL'},          -- LATIN SMALL LIGATURE FL
		['ffi'] = {'ffi', 'Ffi', 'FFI'},        -- LATIN SMALL LIGATURE FFI
		['ffl'] = {'ffl', 'Ffl', 'FFL'},        -- LATIN SMALL LIGATURE FFL
		['ſt'] = {'ſt', 'St', 'ST'},          -- LATIN SMALL LIGATURE LONG S T
		['st'] = {'st', 'St', 'ST'},          -- LATIN SMALL LIGATURE ST
		['և'] = {'և', 'Եւ', 'ԵՒ'},          -- ARMENIAN SMALL LIGATURE ECH YIWN
		['ﬓ'] = {'ﬓ', 'Մն', 'ՄՆ'},          -- ARMENIAN SMALL LIGATURE MEN NOW
		['ﬔ'] = {'ﬔ', 'Մե', 'ՄԵ'},          -- ARMENIAN SMALL LIGATURE MEN ECH
		['ﬕ'] = {'ﬕ', 'Մի', 'ՄԻ'},          -- ARMENIAN SMALL LIGATURE MEN INI
		['ﬖ'] = {'ﬖ', 'Վն', 'ՎՆ'},          -- ARMENIAN SMALL LIGATURE VEW NOW
		['ﬗ'] = {'ﬗ', 'Մխ', 'ՄԽ'},          -- ARMENIAN SMALL LIGATURE MEN XEH
	
		['ʼn'] = {'ʼn', 'ʼN', 'ʼN'},                                           -- LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
		['ΐ'] = {'ΐ', 'Ι'..u(0x0308)..u(0x0301), 'Ι'..u(0x0308)..u(0x0301)}, -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
		['ΰ'] = {'ΰ', 'Υ'..u(0x0308)..u(0x0301), 'Υ'..u(0x0308)..u(0x0301)}, -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
		['ǰ'] = {'ǰ', 'J'..u(0x030C), 'J'..u(0x030C)},                       -- LATIN SMALL LETTER J WITH CARON
		['ẖ'] = {'ẖ', 'H'..u(0x0331), 'H'..u(0x0331)},                       -- LATIN SMALL LETTER H WITH LINE BELOW
		['ẗ'] = {'ẗ', 'T'..u(0x0308), 'T'..u(0x0308)},                       -- LATIN SMALL LETTER T WITH DIAERESIS
		['ẘ'] = {'ẘ', 'W'..u(0x030A), 'W'..u(0x030A)},                       -- LATIN SMALL LETTER W WITH RING ABOVE
		['ẙ'] = {'ẙ', 'Y'..u(0x030A), 'Y'..u(0x030A)},                       -- LATIN SMALL LETTER Y WITH RING ABOVE
		['ẚ'] = {'ẚ', 'Aʾ', 'Aʾ'},                                           -- LATIN SMALL LETTER A WITH RIGHT HALF RING
		['ὐ'] = {'ὐ', 'Υ'..u(0x0313), 'Υ'..u(0x0313)},                       -- GREEK SMALL LETTER UPSILON WITH PSILI
		['ὒ'] = {'ὒ', 'Υ'..u(0x0313)..u(0x0300), 'Υ'..u(0x0313)..u(0x0300)}, -- GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
		['ὔ'] = {'ὔ', 'Υ'..u(0x0313)..u(0x0301), 'Υ'..u(0x0313)..u(0x0301)}, -- GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
		['ὖ'] = {'ὖ', 'Υ'..u(0x0313)..u(0x0342), 'Υ'..u(0x0313)..u(0x0342)}, -- GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
		['ᾶ'] = {'ᾶ', 'Α'..u(0x0342), 'Α'..u(0x0342)},                       -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI
		['ῆ'] = {'ῆ', 'Η'..u(0x0342), 'Η'..u(0x0342)},                       -- GREEK SMALL LETTER ETA WITH PERISPOMENI
		['ῒ'] = {'ῒ', 'Ι'..u(0x0308)..u(0x0300), 'Ι'..u(0x0308)..u(0x0300)}, -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
		['ΐ'] = {'ΐ', 'Ι'..u(0x0308)..u(0x0301), 'Ι'..u(0x0308)..u(0x0301)}, -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
		['ῖ'] = {'ῖ', 'Ι'..u(0x0342), 'Ι'..u(0x0342)},                       -- GREEK SMALL LETTER IOTA WITH PERISPOMENI
		['ῗ'] = {'ῗ', 'Ι'..u(0x0308)..u(0x0342), 'Ι'..u(0x0308)..u(0x0342)}, -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
		['ῢ'] = {'ῢ', 'Υ'..u(0x0308)..u(0x0300), 'Υ'..u(0x0308)..u(0x0300)}, -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
		['ΰ'] = {'ΰ', 'Υ'..u(0x0308)..u(0x0301), 'Υ'..u(0x0308)..u(0x0301)}, -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
		['ῤ'] = {'ῤ', 'Ρ'..u(0x0313), 'Ρ'..u(0x0313)},                       -- GREEK SMALL LETTER RHO WITH PSILI
		['ῦ'] = {'ῦ', 'Υ'..u(0x0342), 'Υ'..u(0x0342)},                       -- GREEK SMALL LETTER UPSILON WITH PERISPOMENI
		['ῧ'] = {'ῧ', 'Υ'..u(0x0308)..u(0x0342), 'Υ'..u(0x0308)..u(0x0342)}, -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
		['ῶ'] = {'ῶ', 'Ω'..u(0x0342), 'Ω'..u(0x0342)},                       -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI
	
		['ᾀ'] = {'ᾀ', 'ᾈ', 'ἈΙ'}, -- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
		['ᾁ'] = {'ᾁ', 'ᾉ', 'ἉΙ'}, -- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
		['ᾂ'] = {'ᾂ', 'ᾊ', 'ἊΙ'}, -- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
		['ᾃ'] = {'ᾃ', 'ᾋ', 'ἋΙ'}, -- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
		['ᾄ'] = {'ᾄ', 'ᾌ', 'ἌΙ'}, -- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
		['ᾅ'] = {'ᾅ', 'ᾍ', 'ἍΙ'}, -- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
		['ᾆ'] = {'ᾆ', 'ᾎ', 'ἎΙ'}, -- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
		['ᾇ'] = {'ᾇ', 'ᾏ', 'ἏΙ'}, -- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
		['ᾈ'] = {'ᾀ', 'ᾈ', 'ἈΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
		['ᾉ'] = {'ᾁ', 'ᾉ', 'ἉΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
		['ᾊ'] = {'ᾂ', 'ᾊ', 'ἊΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
		['ᾋ'] = {'ᾃ', 'ᾋ', 'ἋΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
		['ᾌ'] = {'ᾄ', 'ᾌ', 'ἌΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
		['ᾍ'] = {'ᾅ', 'ᾍ', 'ἍΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
		['ᾎ'] = {'ᾆ', 'ᾎ', 'ἎΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
		['ᾏ'] = {'ᾇ', 'ᾏ', 'ἏΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
		['ᾐ'] = {'ᾐ', 'ᾘ', 'ἨΙ'}, -- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
		['ᾑ'] = {'ᾑ', 'ᾙ', 'ἩΙ'}, -- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
		['ᾒ'] = {'ᾒ', 'ᾚ', 'ἪΙ'}, -- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
		['ᾓ'] = {'ᾓ', 'ᾛ', 'ἫΙ'}, -- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
		['ᾔ'] = {'ᾔ', 'ᾜ', 'ἬΙ'}, -- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
		['ᾕ'] = {'ᾕ', 'ᾝ', 'ἭΙ'}, -- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
		['ᾖ'] = {'ᾖ', 'ᾞ', 'ἮΙ'}, -- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
		['ᾗ'] = {'ᾗ', 'ᾟ', 'ἯΙ'}, -- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
		['ᾘ'] = {'ᾐ', 'ᾘ', 'ἨΙ'}, -- GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
		['ᾙ'] = {'ᾑ', 'ᾙ', 'ἩΙ'}, -- GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
		['ᾚ'] = {'ᾒ', 'ᾚ', 'ἪΙ'}, -- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
		['ᾛ'] = {'ᾓ', 'ᾛ', 'ἫΙ'}, -- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
		['ᾜ'] = {'ᾔ', 'ᾜ', 'ἬΙ'}, -- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
		['ᾝ'] = {'ᾕ', 'ᾝ', 'ἭΙ'}, -- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
		['ᾞ'] = {'ᾖ', 'ᾞ', 'ἮΙ'}, -- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
		['ᾟ'] = {'ᾗ', 'ᾟ', 'ἯΙ'}, -- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
		['ᾠ'] = {'ᾠ', 'ᾨ', 'ὨΙ'}, -- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
		['ᾡ'] = {'ᾡ', 'ᾩ', 'ὩΙ'}, -- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
		['ᾢ'] = {'ᾢ', 'ᾪ', 'ὪΙ'}, -- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
		['ᾣ'] = {'ᾣ', 'ᾫ', 'ὫΙ'}, -- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
		['ᾤ'] = {'ᾤ', 'ᾬ', 'ὬΙ'}, -- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
		['ᾥ'] = {'ᾥ', 'ᾭ', 'ὭΙ'}, -- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
		['ᾦ'] = {'ᾦ', 'ᾮ', 'ὮΙ'}, -- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
		['ᾧ'] = {'ᾧ', 'ᾯ', 'ὯΙ'}, -- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
		['ᾨ'] = {'ᾠ', 'ᾨ', 'ὨΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
		['ᾩ'] = {'ᾡ', 'ᾩ', 'ὩΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
		['ᾪ'] = {'ᾢ', 'ᾪ', 'ὪΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
		['ᾫ'] = {'ᾣ', 'ᾫ', 'ὫΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
		['ᾬ'] = {'ᾤ', 'ᾬ', 'ὬΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
		['ᾭ'] = {'ᾥ', 'ᾭ', 'ὭΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
		['ᾮ'] = {'ᾦ', 'ᾮ', 'ὮΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
		['ᾯ'] = {'ᾧ', 'ᾯ', 'ὯΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
		['ᾳ'] = {'ᾳ', 'ᾼ', 'ΑΙ'}, -- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
		['ᾼ'] = {'ᾳ', 'ᾼ', 'ΑΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
		['ῃ'] = {'ῃ', 'ῌ', 'ΗΙ'}, -- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
		['ῌ'] = {'ῃ', 'ῌ', 'ΗΙ'}, -- GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
		['ῳ'] = {'ῳ', 'ῼ', 'ΩΙ'}, -- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
		['ῼ'] = {'ῳ', 'ῼ', 'ΩΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI

		['ᾲ'] = {'ᾲ', 'Ὰ'..u(0x0345), 'ᾺΙ'},                           -- GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
		['ᾴ'] = {'ᾴ', 'Ά'..u(0x0345), 'ΆΙ'},                           -- GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
		['ῂ'] = {'ῂ', 'Ὴ'..u(0x0345), 'ῊΙ'},                           -- GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
		['ῄ'] = {'ῄ', 'Ή'..u(0x0345), 'ΉΙ'},                           -- GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
		['ῲ'] = {'ῲ', 'Ὼ'..u(0x0345), 'ῺΙ'},                           -- GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
		['ῴ'] = {'ῴ', 'Ώ'..u(0x0345), 'ΏΙ'},                           -- GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
		['ᾷ'] = {'ᾷ', 'Α'..u(0x0342)..u(0x0345), 'Α'..u(0x0342)..'Ι'}, -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
		['ῇ'] = {'ῇ', 'Η'..u(0x0342)..u(0x0345), 'Η'..u(0x0342)..'Ι'}, -- GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
		['ῷ'] = {'ῷ', 'Ω'..u(0x0342)..u(0x0345), 'Ω'..u(0x0342)..'Ι'}, -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
	},
	['lt'] = {
		['I'] = {'i'..u(0x0307), 'I', 'I'}, -- LATIN CAPITAL LETTER I
		['J'] = {'j'..u(0x0307), 'J', 'J'}, -- LATIN CAPITAL LETTER J
		['Į'] = {'į'..u(0x0307), 'Į', 'Į'}, -- LATIN CAPITAL LETTER I WITH OGONEK
		['Ì'] = {'i'..u(0x0307)..u(0x0300), 'Ì', 'Ì'}, -- LATIN CAPITAL LETTER I WITH GRAVE
		['Í'] = {'i'..u(0x0307)..u(0x0301), 'Í', 'Í'}, -- LATIN CAPITAL LETTER I WITH ACUTE
		['Ĩ'] = {'i'..u(0x0307)..u(0x0303), 'Ĩ', 'Ĩ'}, -- LATIN CAPITAL LETTER I WITH TILDE
	},
	['tr&az'] = {
		['I'] = {'ı', 'I', 'I'}, -- LATIN CAPITAL LETTER I
		['ı'] = {'ı', 'I', 'I'}, -- LATIN SMALL LETTER DOTLESS I
		['İ'] = {'i', 'İ', 'İ'}, -- LATIN CAPITAL LETTER I WITH DOT ABOVE
		['i'] = {'i', 'İ', 'İ'}, -- LATIN SMALL LETTER I
	},
}

return casing