Module:Domain handler/sandbox
| This is the module sandbox page for Module:Domain handler (diff). |
| This Lua module is used on approximately 13,000 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages, or in your own module sandbox. Consider discussing changes on the talk page before implementing them. |
Functions
p.getTopLevelDomain(frame)
This function is designed to retrieve the top-level domain from a parameter or a page name.
The function accepts two parameters from a template. The parameters are |domain= (the TLD provided manually, optional) and |context= (determines which category to check based on if it is set to "domains" or "URLs", defaults to "domains").
If a TLD is passed using the |domain= parameter, the function makes a few changes to it. It trims any leading/trailing spaces, converts it to lowercase and ensures it starts with a period.
Next, it constructs a category name in the format: Category:Redirects from <TLD> domain names or Category:Redirects from <TLD> URLs, depending on the value of context.
The function then checks if the category actually exists. If it does, the TLD with a leading space is returned. If it does not, the function falls back upon automatic detection.
If no domain is provided or the constructed category does not exist, the function analyzes the current page name. It first lowercases it, strips the protocol part (e.g., https://), if the page name includes it and keeps the rest. From the new string, the function extracts everything before the first slash as the domain part.
It then tries to extract the TLD using a simple pattern matching approach, looking for the last sequence of characters following a period (e.g., .com, .org).
If a TLD is found, the function does the same category check as above.
If the category exists, the TLD with a leading space is returned. If it does not exist, the function returns an empty string.
p.adjustTitleCapitalization(frame)
This function adjusts the capitalization of the current page title.
The function first retrieves the current page title.
The function accepts |lowercase= parameter from a template. If the |lowercase= parameter is set to "yes", it returns the title with the first letter in lowercase and the rest unchanged. If the |lowercase= parameter is set to "no", it simply returns the title unchanged. If the |lowercase= parameter is not specified or any other value, it checks if any character after the first one in the title is uppercase. If uppercase characters are found, it keeps the title unchanged. If no uppercase characters are found, it returns the title with the first letter in lowercase.
Usage
{{#invoke:Domain handler|getTopLevelDomain}}{{#invoke:Domain handler|adjustTitleCapitalization}}
This module is used in the templates {{R from URL}} and {{R from domain name}}.
local p = {}
function p.getTopLevelDomain(frame)
local args = frame.args
local domain = args.domain or args[1]
local context = args.context or "domains"
if domain and domain ~= "" then
domain = mw.text.trim(domain):lower()
domain = "." .. domain:gsub("^%.", "")
local category = "Category:Redirects from " .. domain ..
(context == "domains" and " domain names" or " URLs")
if mw.title.new(category).exists then
return " " .. domain
end
end
local currentTitle = mw.title.getCurrentTitle().text
currentTitle = currentTitle:lower():gsub("^https?://", "")
currentTitle = currentTitle:match("^([^/]+)") or currentTitle
local topLevelDomain = currentTitle:match("(%.[^.]+)$")
if topLevelDomain then
local category = "Category:Redirects from " .. topLevelDomain ..
(context == "domains" and " domain names" or " URLs")
if mw.title.new(category).exists then
return " " .. topLevelDomain
end
end
return ""
end
function p.adjustTitleCapitalization(frame)
local title = mw.title.getCurrentTitle().text
local lowercaseParameter = (frame.args.lowercase or ""):lower()
if lowercaseParameter == "yes" then
return title:sub(1,1):lower() .. title:sub(2)
end
if lowercaseParameter == "no" then
return title
end
return title:sub(2):find("%u") and title or title:sub(1,1):lower() .. title:sub(2)
end
return p
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.