Module:User:Mr. Stradivarius/Anagramator

From Wikipedia, the free encyclopedia
-- This module takes text and puts the letters of all the words in random 
-- order. You probably shouldn't use it in articles.

local mRandom = require('Module:Random')
local lang = mw.language.getContentLanguage()

local p = {}

function p._main(text)
	text = mw.ustring.gsub(text, '%f[^%s\0]%w+%f[%s\0]', function (s)
		local isFirstCapitalized = mw.ustring.find(s, '^%u%l*$')
		s = mRandom.main('list', mw.text.split(s, '')) -- Make an array of characters, randomize it, and concatenate the result.
		if isFirstCapitalized then
			s = mw.ustring.lower(s)
			s = lang:ucfirst(s)
		end
		return s
	end)
	return text
end

function p.main(frame)
	local text = frame.args[1]
	text = mw.text.trim(text)
	return p._main(text)
end

return p