×
Create a new article
Write your page title here:
We currently have 69 articles on Super Shiritori Wiki. Type your article name above or click on one of the titles below and start writing!



Super Shiritori Wiki

Welcome to Super-Shiritori!

Please remember:

  • No vandalism – Do not add nonsense, false info, spam, or blank pages.
  • Respect others – Be polite and assume good faith.
  • Use reliable information – Make sure edits are accurate and IMPORTANT.
  • Stay constructive – Help us grow the wiki with content, especially with the Word compendium.

⚠️ Repeated vandalism or rule-breaking may result in warnings or blocks. If you see vandalism, please revert it and notify an admin.

Documentation for this module may be created at Module:Unsubst/doc

-- Cannot unsubst if not currently being substed.

if not mw.isSubsting() then
	local frame_title = mw.getCurrentFrame():getTitle()

	-- If another module is calling this one, throw an error.
	if frame_title ~= "Module:unsubst" then
		error(("[[%s]] should not require [[Module:unsubst]] unless mw.isSubsting() returns true"):format(frame_title))
	end

	-- Otherwise, enable {{#invoke:unsubst|me|...}}.
	local export = {}

	local process_params = require("Module:parameters").process

	function export.me(frame)
		return process_params(frame.args, {
			[""] = true
		})[""]
	end

	return export
end

local m_pages = require("Module:pages")
local m_template_parser = require("Module:template parser")

local build_template = m_template_parser.buildTemplate
local concat = table.concat
local is_internal_title = m_pages.is_internal_title
local new_title = mw.title.new

local function get_title(frame)
	local title = new_title(frame:getTitle())
	return is_internal_title(title) and title or
		-- This shouldn't happen.
		error("frame returned an invalid title")
end

local function serialize(title, args)
	return "{{" .. concat(build_template(title, args), "|") .. "}}"
end

local mt = {}

if m_pages.is_transcluded() then
	local get_template_invocation_name = m_template_parser.getTemplateInvocationName

	function mt:__index(entry_point)
		return function(frame)
			frame = frame:getParent()
			return serialize(get_template_invocation_name(get_title(frame)), frame.args)
		end
	end
else
	function mt:__index(entry_point)
		return function(frame)
			local title = get_title(frame)
			return title.namespace == 828 and
				(serialize(("safesubst:<noinclude/>#invoke:%s|%s"):format(title.text, entry_point), frame.args)) or
				-- This shouldn't happen.
				error(("[[Module:unsubst]] cannot work if the current frame is not in the %s namespace, because the #invoke magic word requires it"):format(mw.site.namespaces[828].canonicalName))
		end
	end
end

return setmetatable({}, mt)