<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3Apalindromes</id>
	<title>Module:palindromes - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3Apalindromes"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:palindromes&amp;action=history"/>
	<updated>2026-04-06T06:27:59Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:palindromes&amp;diff=220128&amp;oldid=prev</id>
		<title>Sware: Created page with &quot;local export = {}  local data = mw.loadData(&quot;Module:palindromes/data&quot;)  local function ignoreCharacters(term, lang, sc, langdata) 	term = mw.ustring.lower(term) 	term = mw.ust...&quot;</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:palindromes&amp;diff=220128&amp;oldid=prev"/>
		<updated>2021-02-15T14:32:11Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local export = {}  local data = mw.loadData(&amp;quot;Module:palindromes/data&amp;quot;)  local function ignoreCharacters(term, lang, sc, langdata) 	term = mw.ustring.lower(term) 	term = mw.ust...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local export = {}&lt;br /&gt;
&lt;br /&gt;
local data = mw.loadData(&amp;quot;Module:palindromes/data&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local function ignoreCharacters(term, lang, sc, langdata)&lt;br /&gt;
	term = mw.ustring.lower(term)&lt;br /&gt;
	term = mw.ustring.gsub(term, &amp;quot;[ ,%.%?!%%%-&amp;#039;\&amp;quot;]&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	-- Language-specific substitutions&lt;br /&gt;
&lt;br /&gt;
	-- Ignore entire scripts (e.g. romaji in Japanese)&lt;br /&gt;
	if langdata.ignore then&lt;br /&gt;
		sc_name = sc and sc:getCode() or require(&amp;quot;Module:scripts&amp;quot;).findBestScript(term, lang):getCode()&lt;br /&gt;
		for _, script in ipairs(langdata.ignore) do&lt;br /&gt;
			if script == sc_name then&lt;br /&gt;
				return &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, from in ipairs(langdata.from or {}) do&lt;br /&gt;
		term = mw.ustring.gsub(term, from, langdata.to[i] or &amp;quot;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return term&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.is_palindrome(term, lang, sc)&lt;br /&gt;
	local langdata = data[lang:getCode()] or {}&lt;br /&gt;
&lt;br /&gt;
	-- Affixes aren&amp;#039;t palindromes&lt;br /&gt;
	if mw.ustring.find(term, &amp;quot;^%-&amp;quot;) or mw.ustring.find(term, &amp;quot;%-$&amp;quot;) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Remove punctuation and casing&lt;br /&gt;
	term = ignoreCharacters(term, lang, sc, langdata)&lt;br /&gt;
	local len = mw.ustring.len(term)&lt;br /&gt;
	&lt;br /&gt;
	if langdata.allow_repeated_char then&lt;br /&gt;
		-- Ignore single-character terms&lt;br /&gt;
		if len &amp;lt; 2 then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- Ignore terms that consist of just one character repeated&lt;br /&gt;
		-- This also excludes terms consisting of fewer than 3 characters&lt;br /&gt;
		if term == mw.ustring.rep(mw.ustring.sub(term, 1, 1), len) then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local charlist = {}&lt;br /&gt;
	&lt;br /&gt;
	for c in mw.ustring.gmatch(term, &amp;quot;.&amp;quot;) do&lt;br /&gt;
		table.insert(charlist, c)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, math.floor(len / 2) do&lt;br /&gt;
        if charlist[i] ~= charlist[len - i + 1] then&lt;br /&gt;
        	return false&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
</feed>