Template:Ca-dicc
Module:CaDicc
-- Module:CaDicc
local M = {}
local function trim(s) return (tostring(s or ""):gsub("^%s+",""):gsub("%s+$","")) end
local function split(list, sep)
list = tostring(list or "")
sep = sep or "[,;]"
local t = {}
for item in list:gmatch("([^"..sep.."]+)") do
table.insert(t, trim(item))
end
return t
end
function M.bullets(frame)
local list = frame.args.list or ""
local items = split(list)
local out = {}
for _, it in ipairs(items) do
if it ~= "" then table.insert(out, "<li>" .. mw.text.nowiki(it) .. "</li>") end
end
return table.concat(out, "\n")
end
function M.commaList(frame)
local list = frame.args.list or ""
local items = split(list)
local out = {}
for _, it in ipairs(items) do
if it ~= "" then table.insert(out, mw.text.nowiki(it)) end
end
return table.concat(out, ", ")
end
function M.commaLinks(frame)
local list = frame.args.list or ""
local items = split(list)
local out = {}
for _, it in ipairs(items) do
if it ~= "" then
local title = mw.text.trim(it)
table.insert(out, "[[" .. title .. "]]")
end
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.
Quick links
[edit]- Live template: Template:TEMPLATE_NAME
- Sandbox: Template:TEMPLATE_NAME/sandbox
- Testcases: Template:TEMPLATE_NAME/testcases
- Documentation: Template:TEMPLATE_NAME/doc (optional)
- Talk page: Template talk:TEMPLATE_NAME
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"orlang="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"orlang="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"orlang="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"orlang="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"orlang="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.
Template:Ca-dicc renders a compact or full dictionary entry card for a word/term, including headword, part of speech, pronunciation, etymology, definitions, examples, and related lists. Empty fields are omitted automatically.
Purpose
[edit]- Provide consistent presentation of dictionary-like information within articles or glossary pages.
- Encourage concise etymology and definition entries while supporting examples and usage notes.
- Offer optional categorization for maintenance.
Usage
[edit]Basic:
{{Ca-dicc
|head=example
|pos=noun
|ipa=ɪɡˈzɑːmpəl
|def=a thing characteristic of its kind
}}
With audio and etymology:
{{Ca-dicc
|head=example
|pos=noun
|ipa=ɪɡˈzɑːmpəl
|audio=File:En-us-example.ogg
|etym=From Latin ''exemplum''
|def=a thing characteristic of its kind
|examples=This is an example.;An instructive example appears in the text.
}}
Multiple definitions and lists:
{{Ca-dicc
|head=run
|pos=verb
|defs=to move swiftly on foot;to execute a program;to function or operate
|usage=colloquial;computing
|region=US
|synonyms=sprint, operate
|antonyms=walk, stop
|derived=runner, runtime
|see=movement, execution
}}
Compact and boxed display:
{{Ca-dicc
|head=lexicon
|pos=noun
|def=a vocabulary of a person, language, or field
|compact=yes
|box=yes
}}
Parameters
[edit]- head
- Headword or lemma (required for proper categorization).
- pos
- Part of speech.
- ipa
- Pronunciation (IPA).
- audio
- Audio file link (File:...), optional.
- etym
- Brief etymology.
- def
- Single-line short definition.
- defs
- Multiple definitions; separate items by commas or semicolons.
- usage
- Usage labels (formal, colloquial, archaic, computing, etc.).
- region
- Regional label (US, UK, etc.).
- inflect
- Inflectional information (plural forms, conjugation pattern).
- examples
- Example sentences; separate by commas or semicolons.
- synonyms
- Comma/semicolon-separated synonyms.
- antonyms
- Comma/semicolon-separated antonyms.
- derived
- Related or derived terms (can be wiki-linked via see).
- see
- See also targets (comma-separated; auto-linked).
- notes
- Additional notes.
- lang
- Language badge text.
- compact
yes/true/1for slightly smaller header text.- box
yes/true/1to add a soft box style around the card.- nocat
- Suppress maintenance category emission.
- catprefix
- Override category prefix, default
Category:Dictionary entries.
Categories
[edit]- By default:
[[Category:Dictionary entries]]
- Missing headword:
[[Category:Dictionary entries missing headword]]
Adjust with catprefix if your site uses a different tree.
Best practices
[edit]- Keep
defconcise; usedefsfor elaboration. - Prefer IPA for pronunciation consistency.
- Cite etymology in article prose where needed; this template focuses on presentation.
- Use
compactfor lists or sidebars where vertical space is limited.