<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://70.231.62.181/index.php?action=history&amp;feed=atom&amp;title=Module%3AUnicode_data%2Fcategory%2Fmake</id>
	<title>Module:Unicode data/category/make - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://70.231.62.181/index.php?action=history&amp;feed=atom&amp;title=Module%3AUnicode_data%2Fcategory%2Fmake"/>
	<link rel="alternate" type="text/html" href="http://70.231.62.181/index.php?title=Module:Unicode_data/category/make&amp;action=history"/>
	<updated>2026-04-22T11:52:49Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>http://70.231.62.181/index.php?title=Module:Unicode_data/category/make&amp;diff=22869535&amp;oldid=prev</id>
		<title>imported&gt;Erutuon: be clearer about input</title>
		<link rel="alternate" type="text/html" href="http://70.231.62.181/index.php?title=Module:Unicode_data/category/make&amp;diff=22869535&amp;oldid=prev"/>
		<updated>2020-03-11T19:22:33Z</updated>

		<summary type="html">&lt;p&gt;be clearer about input&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local function read_page(title)&lt;br /&gt;
	return mw.title.new(title):getContent()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.make_singles_and_ranges(derived_general_category_page, property_value_aliases_page)&lt;br /&gt;
	local text = read_page(derived_general_category_page)&lt;br /&gt;
	&lt;br /&gt;
	local singles, ranges = {}, {}&lt;br /&gt;
	for code_point1, code_point2, general_category in text:gmatch &amp;quot;%f[^\n%z](%x+)%.?%.?(%x*)%s*;%s*(%u%l)&amp;quot; do&lt;br /&gt;
		if general_category ~= &amp;quot;Cn&amp;quot; then&lt;br /&gt;
			code_point1 = tonumber(code_point1, 16)&lt;br /&gt;
			&lt;br /&gt;
			-- XXXX..XXXX ; gc&lt;br /&gt;
			if code_point2 ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				code_point2 = tonumber(code_point2, 16)&lt;br /&gt;
				table.insert(ranges, { code_point1, code_point2, general_category })&lt;br /&gt;
			&lt;br /&gt;
			-- XXXX ; gc&lt;br /&gt;
			else&lt;br /&gt;
				singles[code_point1] = general_category&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local property_value_aliases = read_page(property_value_aliases_page)&lt;br /&gt;
	local general_category_aliases = property_value_aliases:match &amp;quot;# General_Category[^\n]+%s*(.-)%s*%f[^\n]#&amp;quot;&lt;br /&gt;
	local long_names = {}&lt;br /&gt;
	for abbr, long_name in general_category_aliases:gmatch &amp;quot;gc%s*;%s*(%S+)%s*;%s*([%a_]+)&amp;quot; do&lt;br /&gt;
		long_names[abbr] = long_name&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return singles, ranges, long_names&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.print_data(data)&lt;br /&gt;
	local output = require &amp;quot;Module:array&amp;quot;()&lt;br /&gt;
	local function writef(...)&lt;br /&gt;
		output:insert(string.format(...))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	writef [[&lt;br /&gt;
return {&lt;br /&gt;
	singles = {&lt;br /&gt;
]]&lt;br /&gt;
	&lt;br /&gt;
	-- Check that maximum &amp;quot;singles&amp;quot; codepoint is less than 0x100000?&lt;br /&gt;
	for codepoint, category in require &amp;quot;Module:TableTools&amp;quot;.sortedPairs(data.singles) do&lt;br /&gt;
		writef(&amp;#039;\t\t[0x%05X] = &amp;quot;%s&amp;quot;,\n&amp;#039;, codepoint, category)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	writef [[&lt;br /&gt;
	},&lt;br /&gt;
	ranges = {&lt;br /&gt;
]]&lt;br /&gt;
	&lt;br /&gt;
	local function compare_ranges(range1, range2)&lt;br /&gt;
		return range1[1] &amp;lt; range2[1]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.sort(data.ranges, compare_ranges)&lt;br /&gt;
	for _, range in ipairs(data.ranges) do&lt;br /&gt;
		writef(&amp;#039;\t\t{ 0x%06X, 0x%06X, &amp;quot;%s&amp;quot; },\n&amp;#039;, unpack(range))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	writef [[&lt;br /&gt;
	},&lt;br /&gt;
	long_names = {&lt;br /&gt;
]]&lt;br /&gt;
	for abbr, long_name in require &amp;quot;Module:TableTools&amp;quot;.sortedPairs(data.long_names) do&lt;br /&gt;
		writef(&amp;#039;\t\t%-2s = &amp;quot;%s&amp;quot;,\n&amp;#039;, abbr, long_name)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	writef [[&lt;br /&gt;
	},&lt;br /&gt;
}]]&lt;br /&gt;
&lt;br /&gt;
	return output:concat()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local data = {}&lt;br /&gt;
	data.singles, data.ranges, data.long_names = p.make_singles_and_ranges(&lt;br /&gt;
		&amp;quot;User:Erutuon/Unicode/DerivedGeneralCategory.txt&amp;quot;,&lt;br /&gt;
		&amp;quot;User:Erutuon/Unicode/PropertyValueAliases.txt&amp;quot;)&lt;br /&gt;
	return frame:extensionTag{&lt;br /&gt;
		name = &amp;quot;syntaxhighlight&amp;quot;,&lt;br /&gt;
		content = p.print_data(data),&lt;br /&gt;
		args = { lang = &amp;quot;lua&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Erutuon</name></author>
	</entry>
</feed>