Jump to content

Template:Ca-nom

Unchecked
From Wikipedia

Module:CaNom

-- Module:CaNom
local M = {}

local function trim(s) return (tostring(s or ""):gsub("^%s+",""):gsub("%s+$","")) end

local function split(list)
  list = tostring(list or "")
  list = list:gsub(";", ",")
  local t = {}
  for item in list:gmatch("([^,]+)") do
    local it = trim(item)
    if it ~= "" then table.insert(t, it) end
  end
  return t
end

function M.commaList(frame)
  local list = frame.args.list or ""
  local items = split(list)
  return table.concat(items, ", ")
end

function M.commaLinks(frame)
  local list = frame.args.list or ""
  local items = split(list)
  local out = {}
  for _, it in ipairs(items) do
    table.insert(out, "[[" .. it .. "]]")
  end
  return table.concat(out, ", ")
end

return M

Template documentation

[edit]

Template sandbox and testcases for TEMPLATE_NAME

[edit]

Overview

[edit]

This page provides a clean workflow to safely edit and validate TEMPLATE_NAME:

  • Sandbox: Template:TEMPLATE_NAME/sandbox — a working copy where you make changes.
  • Testcases: Template:TEMPLATE_NAME/testcases — inputs that exercise typical and edge cases.
  • Live: Template:TEMPLATE_NAME — the production version. Do not edit directly without review.

Use this page to:

  • Preview sandbox output against fixed testcases without touching the live template.
  • Compare actual vs expected output for each testcase.
  • Track recent changes and invite reviewers.
[edit]

How to test

[edit]

1. Edit the sandbox at Template:TEMPLATE_NAME/sandbox. 2. Open this test page and click “Show preview” to render the sandbox with inputs below. 3. Verify each testcase: Does the “Actual output” match the “Expected output”? 4. If all pass, consider copying sandbox to live using an edit summary like:

  “Sync from /sandbox: passes all /testcases as of YYYY-MM-DD.”

Previewing tips

[edit]
  • Use “Preview page with this template” gadget or the built-in preview.
  • Check parser output in different skins and mobile view.
  • Validate accessibility: headings order, link text, ARIA where applicable.
  • Internationalization: test with non-ASCII parameters and RTL where relevant.

Test harness

[edit]

The following sections render the sandbox template against curated inputs. Each testcase shows:

  • Parameters passed to the template
  • Expected output (as plain wikitext target)
  • Actual output (rendered via sandbox transclusion)

Testcase A: Minimal invocation

[edit]

Parameters: {{TEMPLATE_NAME}}

Expected output: [Minimal successful output with defaults: e.g., a neutral message or basic box]

Actual output (sandbox):

Character and language test sandbox

This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans.

Basic examples

[edit]
  • Greek letter (direct character): α
  • Greek letter (HTML entity): γ
  • German span example: A

Within the template

[edit]

Below are example calls of the template using these characters as parameters.

{{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }}

Preview the page to check if:

  • Greek characters (α, β, γ, δ) display correctly.
  • HTML entities (α, β, γ, δ) render as the expected symbols.
  • The A is kept as a German-language span and does not break the layout.

Notes

[edit]
  • Use this sandbox to experiment with different scripts (Greek, Cyrillic, etc.).
  • Test right-to-left scripts by adding spans with lang="ar" or lang="he".
  • If the template trims or escapes some of these, adjust the template code accordingly.

Testcase B: Common parameters

[edit]

Parameters: {{TEMPLATE_NAME | param1 = Alpha | param2 = Beta | flag = yes }}

Expected output: [Example: shows "Alpha" and "Beta" in designated slots; flag toggles enhanced styling]

Actual output (sandbox):

Character and language test sandbox

This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans.

Basic examples

[edit]
  • Greek letter (direct character): α
  • Greek letter (HTML entity): γ
  • German span example: A

Within the template

[edit]

Below are example calls of the template using these characters as parameters.

{{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }}

Preview the page to check if:

  • Greek characters (α, β, γ, δ) display correctly.
  • HTML entities (α, β, γ, δ) render as the expected symbols.
  • The A is kept as a German-language span and does not break the layout.

Notes

[edit]
  • Use this sandbox to experiment with different scripts (Greek, Cyrillic, etc.).
  • Test right-to-left scripts by adding spans with lang="ar" or lang="he".
  • If the template trims or escapes some of these, adjust the template code accordingly.

Testcase C: Edge values and escaping

[edit]

Parameters: {{TEMPLATE_NAME | param1 = [[Linked target|Visible text]] | param2 = {{subst:CURRENTTIMESTAMP}} | raw = <code><span class="x">escaped</span></code> }}

Expected output: [Links render correctly; timestamp subst is literal in expected; raw shows escaped markup]

Actual output (sandbox):

Character and language test sandbox

This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans.

Basic examples

[edit]
  • Greek letter (direct character): α
  • Greek letter (HTML entity): γ
  • German span example: A

Within the template

[edit]

Below are example calls of the template using these characters as parameters.

{{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }}

Preview the page to check if:

  • Greek characters (α, β, γ, δ) display correctly.
  • HTML entities (α, β, γ, δ) render as the expected symbols.
  • The A is kept as a German-language span and does not break the layout.

Notes

[edit]
  • Use this sandbox to experiment with different scripts (Greek, Cyrillic, etc.).
  • Test right-to-left scripts by adding spans with lang="ar" or lang="he".
  • If the template trims or escapes some of these, adjust the template code accordingly.

Testcase D: Internationalization (i18n)

[edit]

Parameters: {{TEMPLATE_NAME | lang = ja | text = こんにちは世界 }}

Expected output: [Text displays correctly for non-ASCII; applies lang attribute or rtl/ltr where applicable]

Actual output (sandbox):

Character and language test sandbox

This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans.

Basic examples

[edit]
  • Greek letter (direct character): α
  • Greek letter (HTML entity): γ
  • German span example: A

Within the template

[edit]

Below are example calls of the template using these characters as parameters.

{{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }}

Preview the page to check if:

  • Greek characters (α, β, γ, δ) display correctly.
  • HTML entities (α, β, γ, δ) render as the expected symbols.
  • The A is kept as a German-language span and does not break the layout.

Notes

[edit]
  • Use this sandbox to experiment with different scripts (Greek, Cyrillic, etc.).
  • Test right-to-left scripts by adding spans with lang="ar" or lang="he".
  • If the template trims or escapes some of these, adjust the template code accordingly.

Testcase E: Error handling

[edit]

Parameters: {{TEMPLATE_NAME | param1 = | required = <!-- intentionally omitted --> }}

Expected output: [Shows a gentle error or maintenance category; does not break page layout]

Actual output (sandbox):

Character and language test sandbox

This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans.

Basic examples

[edit]
  • Greek letter (direct character): α
  • Greek letter (HTML entity): γ
  • German span example: A

Within the template

[edit]

Below are example calls of the template using these characters as parameters.

{{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }}

Preview the page to check if:

  • Greek characters (α, β, γ, δ) display correctly.
  • HTML entities (α, β, γ, δ) render as the expected symbols.
  • The A is kept as a German-language span and does not break the layout.

Notes

[edit]
  • Use this sandbox to experiment with different scripts (Greek, Cyrillic, etc.).
  • Test right-to-left scripts by adding spans with lang="ar" or lang="he".
  • If the template trims or escapes some of these, adjust the template code accordingly.

Maintenance

[edit]
  • Add new testcases when introducing features or fixing bugs.
  • Keep “Expected output” updated; include rationale in edit summaries.
  • When deprecating parameters, add tests demonstrating legacy behavior and warnings.

Categories

[edit]

Copy-paste skeletons

[edit]

Below are ready-to-use skeletons for the sandbox and testcases subpages.

Skeleton: Template:TEMPLATE_NAME/sandbox

[edit]

<!-- Sandbox for TEMPLATE_NAME --> <!-- Copy the entire template source here; edit safely. --> {{#if:{{{required|}}} | <!-- normal output --> <div class="tmpl"> <b>{{{param1|}}}</b> · <i>{{{param2|}}}</i> {{#if:{{{flag|}}}|<span class="flag">✓</span>|}} {{#if:{{{raw|}}}|<span class="raw">{{{raw}}}</span>|}} </div> | <!-- error / missing required --> <span class="error">TEMPLATE_NAME: missing required parameter</span> [[Category:Pages with TEMPLATE_NAME errors]] }}

Skeleton: Template:TEMPLATE_NAME/testcases

[edit]

<!-- Testcases for TEMPLATE_NAME; render against /sandbox --> ; Minimal : {{TEMPLATE_NAME/sandbox}} ; Common params : {{TEMPLATE_NAME/sandbox | param1 = Alpha | param2 = Beta | flag = yes }} ; Edge and escaping : {{TEMPLATE_NAME/sandbox | param1 = [[Linked target|Visible text]] | param2 = 20250101T000000Z | raw = <code><span class="x">escaped</span></code> }} ; I18n : {{TEMPLATE_NAME/sandbox | lang = ja | text = こんにちは世界 }} ; Error handling : {{TEMPLATE_NAME/sandbox | required = }}

Review checklist

[edit]
  • Output is stable across re-parses; no expensive parser functions without need.
  • No unexpected categorization in mainspace; errors go to maintenance cats.
  • Template is documented at Template:TEMPLATE_NAME/doc with parameters, examples, and tracking.
  • Style is minimal; avoid inline CSS unless necessary; consider using existing module or template styles.
This box: view  talk  edit

Template:Ca-nom renders a compact or full name information card for people, characters, or entities. It supports native-script names, transliteration, pronunciation, aliases, honorifics, and signature display while hiding empty fields automatically.

Purpose

[edit]
  • Provide a consistent, concise presentation of name-related data in infoboxes or lead sections.
  • Distinguish native names, transliterations, and pronunciation from aliases and variants.
  • Offer optional categorization for maintenance.

Usage

[edit]

Basic:

{{Ca-nom
 |name=Jane Doe
 |honorific=Dr.
}}

With native name and transliteration:

{{Ca-nom
 |name=Zhang Wei
 |native=张伟
 |lang=zh
 |translit=Zhāng Wěi
 |ipa=ʈʂáŋ wěɪ
}}

Aliases, abbreviations, signature:

{{Ca-nom
 |name=John Fitzgerald Kennedy
 |abbrev=JFK
 |alias=Jack Kennedy;Senator Kennedy
 |signature=File:John_F._Kennedy_Signature.svg
 |signing=J. F. Kennedy
}}

Compact boxed display:

{{Ca-nom
 |name=Mary Shelley
 |penname=Mary W. Shelley
 |box=yes
 |compact=yes
}}

Parameters

[edit]
name
Primary display name (recommended).
native
Native-script name.
lang
Language code or label for the native name.
alias
Other names/aliases (comma or semicolon-separated; auto-linked).
aka
Free-form "also known as" text line.
birthname
Name at birth.
honorific
Titles/honorifics (Sir, Dr., etc.).
penname
Pen/stage name.
abbrev
Abbreviations or initials.
variants
Orthographic or letter variants.
translit
Transliteration of the native name.
ipa
Pronunciation (IPA).
audio
Audio file for pronunciation.
signature
Signature image file.
signing
Usual signing style string.
source
Citation/source of the name data.
compact
yes/true/1 for slightly smaller layout.
box
yes/true/1 to add a soft box style.
nocat
Suppress maintenance category emission.
catprefix
Override category prefix (default Category:Name cards ).

Categories

[edit]
  • By default:
    [[Category:Name cards]]
  • Missing primary name:
    [[Category:Name cards missing primary name]]

Adjust with catprefix to fit local conventions.

Best practices

[edit]
  • Keep the header concise; move extended biographical details to infobox or prose.
  • Use ISO language codes for lang where feasible.
  • Prefer IPA for pronunciation; include audio when available.
  • Use alias for alternate names that have standalone pages to link.

See also

[edit]