
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://zoophilia.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AISBN_RangeMessage_xlate</id>
	<title>Module:ISBN RangeMessage xlate - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://zoophilia.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AISBN_RangeMessage_xlate"/>
	<link rel="alternate" type="text/html" href="https://zoophilia.wiki/index.php?title=Module:ISBN_RangeMessage_xlate&amp;action=history"/>
	<updated>2026-06-26T16:30:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://zoophilia.wiki/index.php?title=Module:ISBN_RangeMessage_xlate&amp;diff=133704&amp;oldid=prev</id>
		<title>SockyPaws: Replace &lt;syntaxhighlight&gt; tags with &lt;pre&gt;</title>
		<link rel="alternate" type="text/html" href="https://zoophilia.wiki/index.php?title=Module:ISBN_RangeMessage_xlate&amp;diff=133704&amp;oldid=prev"/>
		<updated>2024-11-25T17:22:43Z</updated>

		<summary type="html">&lt;p&gt;Replace &amp;lt;syntaxhighlight&amp;gt; tags with &amp;lt;pre&amp;gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:22, 25 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l38&quot;&gt;Line 38:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 38:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local function render_output (frame, table_name, out_t, timestamp, timezone, rep)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local function render_output (frame, table_name, out_t, timestamp, timezone, rep)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	-- To close the table.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	-- To close the table.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	table.insert (out_t, &#039;\t}&amp;lt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight&lt;/del&gt;&amp;gt;&#039;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	table.insert (out_t, &#039;\t}&amp;lt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pre&lt;/ins&gt;&amp;gt;&#039;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	-- Insert this at the start of the output sequence.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	-- Insert this at the start of the output sequence.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	table.insert (out_t, 1, table.concat ({&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	table.insert (out_t, 1, table.concat ({&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		-- Opening stuff.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		-- Opening stuff.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		&#039;&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight lang=&quot;lua&quot;&lt;/del&gt;&amp;gt;local &#039; .. table_name .. &#039; = {&#039;,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		&#039;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pre&lt;/ins&gt;&amp;gt;local &#039; .. table_name .. &#039; = {&#039;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		-- Tabs to place timestamp (hyphen_pos_t = 15, inverse_range_t = 14).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		-- Tabs to place timestamp (hyphen_pos_t = 15, inverse_range_t = 14).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		string.rep (&amp;#039;\t&amp;#039;, rep),&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		string.rep (&amp;#039;\t&amp;#039;, rep),&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>SockyPaws</name></author>
	</entry>
	<entry>
		<id>https://zoophilia.wiki/index.php?title=Module:ISBN_RangeMessage_xlate&amp;diff=133702&amp;oldid=prev</id>
		<title>SockyPaws: Import missing module from English Wikipedia</title>
		<link rel="alternate" type="text/html" href="https://zoophilia.wiki/index.php?title=Module:ISBN_RangeMessage_xlate&amp;diff=133702&amp;oldid=prev"/>
		<updated>2024-11-25T16:21:12Z</updated>

		<summary type="html">&lt;p&gt;Import missing module from English Wikipedia&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require (&amp;#039;strict&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
-- Get this module&amp;#039;s title object.&lt;br /&gt;
local title_object = mw.title.getCurrentTitle ();&lt;br /&gt;
-- Are we are looking at the ./doc page or the module page?&lt;br /&gt;
if not title_object.fullText:find (&amp;#039;/doc$&amp;#039;) then&lt;br /&gt;
	-- Looking at the module page, make a page name for this module&amp;#039;s /doc page.&lt;br /&gt;
	local module_doc_title = title_object.fullText .. &amp;#039;/doc&amp;#039;;&lt;br /&gt;
	-- Reset title object to this module&amp;#039;s /doc page.&lt;br /&gt;
	title_object = mw.title.new (module_doc_title);&lt;br /&gt;
end&lt;br /&gt;
-- Get the /doc page content.&lt;br /&gt;
local range_message_raw = title_object:getContent();&lt;br /&gt;
&lt;br /&gt;
-- Captures are timestamp and time zone (BST or GMT).&lt;br /&gt;
local timestamp_pattern = &amp;#039;&amp;lt;MessageDate&amp;gt;%D+(%d%d? %w%w%w %d%d%d%d %d%d:%d%d:%d%d)( %w%w%w)&amp;lt;/MessageDate&amp;gt;&amp;#039;&lt;br /&gt;
-- Capture holds &amp;lt;Prefix&amp;gt;, &amp;lt;Agency&amp;gt;, and &amp;lt;Rules&amp;gt; groups.&lt;br /&gt;
local group_pattern = &amp;#039;&amp;lt;Group&amp;gt;(.-)&amp;lt;/Group&amp;gt;&amp;#039;;&lt;br /&gt;
-- Captures are GS1 prefix (978 or 979) and registration group.&lt;br /&gt;
local prefix_pattern = &amp;#039;&amp;lt;Prefix&amp;gt;(%d+)%-(%d+)&amp;lt;/Prefix&amp;gt;&amp;#039;;&lt;br /&gt;
-- Capture holds language and country or territory.&lt;br /&gt;
local agency_pattern = &amp;#039;&amp;lt;Agency&amp;gt;(.-)&amp;lt;/Agency&amp;gt;&amp;#039;;&lt;br /&gt;
-- Capture holds registrant &amp;lt;Range&amp;gt; and &amp;lt;Length&amp;gt; groups.&lt;br /&gt;
local rule_pattern = &amp;#039;&amp;lt;Rule&amp;gt;(.-)&amp;lt;/Rule&amp;gt;&amp;#039;;&lt;br /&gt;
-- Registrant; captures are min/max ranges right-padded to 7 digits; min not&lt;br /&gt;
-- currently used.&lt;br /&gt;
local range_pattern = &amp;#039;&amp;lt;Range&amp;gt;(%d+)%-(%d+)&amp;lt;/Range&amp;gt;&amp;#039;;&lt;br /&gt;
-- Registrant; capture holds number of (left) digits to use from &amp;lt;Range&amp;gt;; for&lt;br /&gt;
-- len=2 in max=1299999 -&amp;gt; 12.&lt;br /&gt;
local length_pattern = &amp;#039;&amp;lt;Length&amp;gt;(%d)&amp;lt;/Length&amp;gt;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[ RENDER_OUTPUT&lt;br /&gt;
     Common function to render either of the two tables that this module&lt;br /&gt;
     creates. Requires invoking the module twice to get both tables (they are&lt;br /&gt;
     both created each time range_message_xlate() is called).&lt;br /&gt;
--]]&lt;br /&gt;
local function render_output (frame, table_name, out_t, timestamp, timezone, rep)&lt;br /&gt;
	-- To close the table.&lt;br /&gt;
	table.insert (out_t, &amp;#039;\t}&amp;lt;/syntaxhighlight&amp;gt;&amp;#039;);&lt;br /&gt;
	-- Insert this at the start of the output sequence.&lt;br /&gt;
	table.insert (out_t, 1, table.concat ({&lt;br /&gt;
		-- Opening stuff.&lt;br /&gt;
		&amp;#039;&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;local &amp;#039; .. table_name .. &amp;#039; = {&amp;#039;,&lt;br /&gt;
		-- Tabs to place timestamp (hyphen_pos_t = 15, inverse_range_t = 14).&lt;br /&gt;
		string.rep (&amp;#039;\t&amp;#039;, rep),&lt;br /&gt;
		-- The timestamp…&lt;br /&gt;
		frame:callParserFunction (&amp;#039;#time&amp;#039;, {&amp;#039;-- &amp;quot;RangeMessage timestamp&amp;quot;: Y-m-d&amp;quot;T&amp;quot;h:i:s&amp;#039;, timestamp}),&lt;br /&gt;
		-- …and timezone.&lt;br /&gt;
		timezone&lt;br /&gt;
	}));&lt;br /&gt;
	-- Make a big string and done.&lt;br /&gt;
	return frame:preprocess (table.concat (out_t, &amp;#039;\n&amp;#039;));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[ RANGE_MESSAGE_XLATE {{#invoke:ISBN RangeMessage xlate|range_message_xlate}}&lt;br /&gt;
     This function translates a local copy of&lt;br /&gt;
       &amp;lt;https://www.isbn-international.org/export_rangemessage.xml&amp;gt; for use by&lt;br /&gt;
     Module:Format ISBN by way of Module:Format ISBN/data.&lt;br /&gt;
&lt;br /&gt;
     To update &amp;lt;hyphen_pos_t&amp;gt; in Module:Format ISBN/data:&lt;br /&gt;
       1. Copy the new RangeMessage.xml text from the ISBN international&lt;br /&gt;
          export_rangemessage.xml page (URL above) to your clipboard and paste&lt;br /&gt;
          it over the existing XML data inside the HTML comments in this&lt;br /&gt;
          module&amp;#039;s doc page and save: The new translation is now presented on&lt;br /&gt;
          this module&amp;#039;s doc page.&lt;br /&gt;
       2. Copy the new translation from the doc page to your clipboard.&lt;br /&gt;
       3. Edit Module:Format ISBN/data and paste the new &amp;lt;hyphen_pos_t&amp;gt; table&lt;br /&gt;
          over the old one and save.&lt;br /&gt;
--]]&lt;br /&gt;
local function range_message_xlate (frame)&lt;br /&gt;
	-- The base output goes here (before prettifying).&lt;br /&gt;
	local out_t = {};&lt;br /&gt;
	local out_range_t = {}&lt;br /&gt;
	-- Get the RangeMessage timestamp.&lt;br /&gt;
	local timestamp, timezone = range_message_raw:match (timestamp_pattern);&lt;br /&gt;
&lt;br /&gt;
	-- Get a &amp;lt;Group&amp;gt;…&amp;lt;/Group&amp;gt; block.&lt;br /&gt;
	for group in range_message_raw:gmatch (group_pattern) do&lt;br /&gt;
		-- Get the prefix and registration group.&lt;br /&gt;
		local prefix, registration_group = group:match (prefix_pattern);&lt;br /&gt;
&lt;br /&gt;
		-- Get the &amp;#039;agency&amp;#039;.&lt;br /&gt;
		local agency = group:match (agency_pattern);&lt;br /&gt;
		-- Flag to for the avoidance of repeats.&lt;br /&gt;
		local agency_used = false;&lt;br /&gt;
&lt;br /&gt;
		-- Get a &amp;lt;Rule&amp;gt;…&amp;lt;/Rule&amp;gt; block.&lt;br /&gt;
		for rule in group:gmatch (rule_pattern) do&lt;br /&gt;
			-- The prefix, registration_group, and registrant, then filled right&lt;br /&gt;
			-- with &amp;#039;0&amp;#039;s to thirteen digits.&lt;br /&gt;
			local isbn_parts_min_t = {};&lt;br /&gt;
			local isbn_parts_max_t = {};&lt;br /&gt;
			-- Sequence of lengths for registration_group, registrant, and&lt;br /&gt;
			-- publication elements in an ISBN.&lt;br /&gt;
			local element_lengths_t = {};&lt;br /&gt;
&lt;br /&gt;
			-- Add prefix (1) to each &amp;lt;Rule&amp;gt; in the &amp;lt;Group&amp;gt;.&lt;br /&gt;
			table.insert (isbn_parts_max_t, prefix);&lt;br /&gt;
			table.insert (isbn_parts_min_t, prefix);&lt;br /&gt;
&lt;br /&gt;
			-- Add registration group (2) to each &amp;lt;Rule&amp;gt; in the &amp;lt;Group&amp;gt;.&lt;br /&gt;
			table.insert (isbn_parts_max_t, registration_group);&lt;br /&gt;
			table.insert (isbn_parts_min_t, registration_group);&lt;br /&gt;
&lt;br /&gt;
			-- Add ISBN registration_group length (1) to each &amp;lt;Rule&amp;gt; in &amp;lt;Group&amp;gt;.&lt;br /&gt;
			table.insert (element_lengths_t, #registration_group);&lt;br /&gt;
			-- Get range limits.&lt;br /&gt;
			local range_min, range_max = rule:match (range_pattern);&lt;br /&gt;
			-- Get the length of the registrant length.&lt;br /&gt;
			local registrant_len = rule:match (length_pattern);&lt;br /&gt;
&lt;br /&gt;
			if &amp;#039;0&amp;#039; ~= registrant_len then&lt;br /&gt;
				-- Add length of ISBN registrant (2).&lt;br /&gt;
				table.insert (element_lengths_t, tonumber(registrant_len));&lt;br /&gt;
				-- Find and add length available for publication element (3).&lt;br /&gt;
				table.insert (element_lengths_t, 9-#registration_group-registrant_len);&lt;br /&gt;
&lt;br /&gt;
				-- Add &amp;lt;registrant_len&amp;gt; digits from left of &amp;lt;range_max&amp;gt; (3).&lt;br /&gt;
				table.insert (isbn_parts_max_t, range_max:sub (1, registrant_len));&lt;br /&gt;
				-- Add &amp;lt;registrant_len&amp;gt; digits from left of &amp;lt;range_min&amp;gt; (3).&lt;br /&gt;
				table.insert (isbn_parts_min_t, range_min:sub (1, registrant_len));&lt;br /&gt;
&lt;br /&gt;
				-- Find how many 9s or 0s are needed to right fill an ISBN.&lt;br /&gt;
				local fill_length = 0;&lt;br /&gt;
				-- For each part, get its length…&lt;br /&gt;
				for _, v in ipairs (isbn_parts_max_t) do&lt;br /&gt;
					-- …and accumulate,…&lt;br /&gt;
					fill_length = fill_length + #(tostring (v));&lt;br /&gt;
				end&lt;br /&gt;
				-- …to figure how many are needed…&lt;br /&gt;
				fill_length = 13 - fill_length;&lt;br /&gt;
				-- …and right fill to 13 digits.&lt;br /&gt;
				table.insert (isbn_parts_max_t, string.rep (&amp;#039;9&amp;#039;, fill_length));&lt;br /&gt;
				table.insert (isbn_parts_min_t, string.rep (&amp;#039;0&amp;#039;, fill_length));&lt;br /&gt;
&lt;br /&gt;
				-- Prettify.&lt;br /&gt;
				local pretty_string = &amp;#039;\t[&amp;#039; .. table.concat (isbn_parts_max_t) .. &amp;#039;] = {&amp;#039; .. table.concat (element_lengths_t, &amp;#039;, &amp;#039;) .. &amp;#039;},&amp;#039;;&lt;br /&gt;
				local pretty_string_range = &amp;#039;\t[&amp;#039; .. table.concat (isbn_parts_max_t) .. &amp;#039;] = &amp;#039; .. table.concat (isbn_parts_min_t) .. &amp;#039;,&amp;#039;;&lt;br /&gt;
				if not agency_used then&lt;br /&gt;
					-- Add agency to output.&lt;br /&gt;
					pretty_string = pretty_string .. string.rep (&amp;#039;\t&amp;#039;, 12) .. &amp;#039;-- &amp;#039; .. agency;&lt;br /&gt;
					pretty_string_range = pretty_string_range .. string.rep (&amp;#039;\t&amp;#039;, 11) .. &amp;#039;-- &amp;#039; .. agency;&lt;br /&gt;
					-- This &amp;#039;agency&amp;#039; added to output; don&amp;#039;t repeat it.&lt;br /&gt;
					agency_used = true;&lt;br /&gt;
				end&lt;br /&gt;
				-- Add the prettified string to the output sequence.&lt;br /&gt;
				table.insert (out_t, pretty_string);&lt;br /&gt;
				table.insert (out_range_t, pretty_string_range);&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Select the output.&lt;br /&gt;
	if &amp;#039;yes&amp;#039; == frame.args.range then&lt;br /&gt;
		-- inverse_range_t table.&lt;br /&gt;
		return render_output (frame, &amp;#039;inverse_range_t&amp;#039;, out_range_t, timestamp, timezone, 14);&lt;br /&gt;
	else&lt;br /&gt;
		-- hyphen_pos_t table.&lt;br /&gt;
		return render_output (frame, &amp;#039;hyphen_pos_t&amp;#039;, out_t, timestamp, timezone, 15);&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- EXPORTS&lt;br /&gt;
return {&lt;br /&gt;
	range_message_xlate = range_message_xlate,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>SockyPaws</name></author>
	</entry>
</feed>