Module:ParseList/doc: Difference between revisions

From bg3.wiki
Jump to navigation Jump to search
No edit summary
 
(8 intermediate revisions by 2 users not shown)
Line 18: Line 18:
! parameter !! default !! meaning
! parameter !! default !! meaning
|-
|-
| <code>type</code> || <code>sentence</code>
| <code>style</code> || '<code>text</code>'
| The desired output format, see below for possibilities.
| The desired output format, see below for possibilities.
|-
|-
| <code>delimiter</code> || <code>,</code>
| <code>type</code> ||
| The character that should serve as a delimiter of the list.  This can actually be a string of multiple characters which will all work as a delimiter, but that usage is discouraged as it may cause confusion.
| ''Deprecated synonym for <code>style</code>.''
|-
|-
| <code>makeLinks</code> || ''(empty)''
| <code>delimiter</code> || '<code>,</code>'
| If provided and not blank, means that each element will be made into a link.
| The character that should serve as a delimiter of the input list.  This can actually be a string of multiple characters which will all work as a delimiter, but that usage is discouraged as it may cause confusion.
|-
|-
| <code>makePlural</code> || ''(empty)''
| <code>makePlural</code> || ''(empty)''
| If provided and not blank, means that each element will be turned into a plural word.  This happens ''after'' turning them into links, so e.g. the word "Apple" would become <code><nowiki>[[Apple|Apples]]</nowiki></code>.
| If provided and not blank, means that each element will be turned into a plural word.
|-
|-
| <code>makeSingular</code> || ''(empty)''
| <code>makeSingular</code> || ''(empty)''
| If provided and not blank, means that each element will be turned into singular.  This happens ''after'' turning them into links, so e.g. the word "Apples" would become <code><nowiki>[[Apples|Apple]]</nowiki></code>.
| If provided and not blank, means that each element will be turned into singular.
|-
|-
| <code>joinWord</code> || <code>and</code>
| <code>makeLowercase</code> || ''(empty)''
| If <code>type</code> is <code>sentence</code>, this defines whether to use "and" or "or" (or any other word) for the last two elements of the list. E.g., the default would be to turn "X, Y" into "X and Y" and "X, Y, Z" into "X, Y, and Z", but by providing <code>joinWord = or</code> you can make these become "X or Y" and "X, Y, or Z" respectively.
| If provided and not blank, means that each element will be made all-lowercase.
|-
| <code>makeLinks</code> || ''(empty)'' ||
If provided and not blank, means that each element will be made into a link.
 
If any transforms like plural, singular, or lowercase were specified, the original element will be the link destination, and the transformed version the link text.  E.g., the list element "Apple" would become <code><nowiki>[[Apple|apples]]</nowiki></code> if <code>makePlural</code>, <code>makeLowercase</code>, and <code>makeLinks</code> were provided.
|-
| <code>useTemplate</code> || ''(empty)'' ||
If provided, will use the provided template on each element, i.e., turn every <code>X</code> into <code><nowiki>{{Template|X}}</nowiki></code>.
 
This is done ''after'' any transforms like plural, singular and lowercase.  E.g., the list element "Apple" would become <code><nowiki>{{Template|apples}}</nowiki></code> if <code>makePlural</code>, <code>makeLowercase</code>, and <code>useTemplate</code> were provided.
|-
| <code>useTemplate2</code> || ''(empty)'' ||
If provided, will use the provided template on each element and its transformed form as two template arguments.
 
E.g., the list element "Apple" would become <code><nowiki>{{Template|Apple|apples}}</nowiki></code> if <code>makePlural</code>, <code>makeLowercase</code>, and <code>useTemplate</code> were provided.
|-
| <code>textDelim</code> || '<code>, </code>' ||
If <code>style</code> is <code>text</code>, this is used as the delimiter for the output list.
 
Setting this causes the default value for <code>textLastDelim</code> to be changed to the same value, since the default value of <code>textLastDelim</code> is unlikely to be useful with anything other than the default value of <code>textDelim</code>.
 
Note that the default value is not just a comma; it's a comma followed by a space character.
|-
| <code>textLastDelim</code> || ''(conditional)'' ||
If <code>style</code> is <code>text</code>, this is used as the delimiter between the last two elements of the output list.
 
If <code>textDelim</code> is not set (i.e., left at its default value), then the default value for this is '<code>, and </code>' such that an input list "X, Y, Z" would be turned into "X, Y, and Z".  You could leave <code>textDelim</code> unset, but set <code>textLastDelim = &lt;nowiki&gt;, or &lt;/nowiki&gt;</code> to get the output "X, Y, or Z" instead.
 
If <code>textDelim</code> is set, then this defaults to the same value as that.  E.g., specifying <code>textDelim = &lt;nowiki&gt; + &lt;/nowiki&gt;</code> would transform the input list "X, Y, Z" into "X + Y + Z" without needing to also change the value of <code>textLastDelim</code>.
 
Note: The use of <code>&lt;nowiki&gt;</code> here is to prevent leading and trailing space characters from being ignored when setting <code>textDelim</code> or <code>textLastDelim</code> to a string that should start and/or end with a space character.
|}
|}


The automatic pluralization is able to recognize certain irregular plurals and handle them correctly, such as "thieves" and "quarterstaves."  This is handled through a simple table in the code mapping words to their irregular plural form.  If you find a word that's not supported yet, you can simply add it to the table.
The automatic plural/singular transforms are able to recognize certain irregular plurals and handle them correctly, such as "thieves" and "quarterstaves."  This is handled partly through a table of explicit special conversions like <code>staff -> staves</code>, and partly through logical rules like <code>...f --> ...ves</code>.  If you find a word that produces a wrong result, it should be added to the table of explicit conversions.


=== Output types ===
The <code>makeLink</code>, <code>useTemplate</code>, and <code>useTemplate2</code> arguments are mutually exclusive; when several are provided, only the first will take effect.


The value of the <code>type</code> parameter can be the following:
=== Output styles ===
 
The value of the <code>style</code> parameter can be the following:


{| class="wikitable"
{| class="wikitable"
! value !! example output
! value !! example output
|-
|-
| <code>sentence</code>
| <code>text</code>
| {{#invoke:ParseList|main|Fighter, Cleric, Wizard}}
| {{#invoke:ParseList | main | Fighter, Cleric, Wizard }}
|-
| <code>simpleList</code>
| {{#invoke:ParseList | main | Fighter, Cleric, Wizard | style = simpleList }}
|-
|-
| <code>htmlList</code>
| <code>htmlList</code>
| {{#invoke:ParseList|main|Fighter, Cleric, Wizard|type=htmlList}}
| {{#invoke:ParseList | main | Fighter, Cleric, Wizard | style = htmlList }}
|-
| <code>htmlListNoBullets</code>
| {{#invoke:ParseList | main | Fighter, Cleric, Wizard | style = htmlListNoBullets }}
|-
|-
| <code>simpleList</code>
| <code>htmlListNoBulletsOrMargin</code>
| {{#invoke:ParseList|main|Fighter, Cleric, Wizard|type=simpleList}}
| {{#invoke:ParseList | main | Fighter, Cleric, Wizard | style = htmlListNoBulletsOrMargin }}
|-
| <code>tableList</code>
| {{#invoke:ParseList | main | Fighter, Cleric, Wizard | style = tableList }}
|-
| <code>none</code>
| {{#invoke:ParseList | main | Fighter, Cleric, Wizard | style = none }}
|}
|}
The style <code>none</code> is useful if each element is being transformed into an HTML element such that no textual delimiters are desired.


== Examples ==
== Examples ==
Line 91: Line 138:


<pre>
<pre>
{{#invoke: ParseList | main | Fighter, Cleric, Wizard | makeLinks = yes | makePlural = yes | joinWord = or }}
{{#invoke: ParseList | main | Fighter, Cleric, Wizard | makeLinks = yes | makePlural = yes | textLastDelim = &lt;nowiki&gt;, or &lt;/nowiki&gt; }}
</pre>
</pre>


Result:
Result:


: {{#invoke: ParseList | main | Fighter, Cleric, Wizard | makeLinks = yes | makePlural = yes | joinWord = or }}
: {{#invoke: ParseList | main | Fighter, Cleric, Wizard | makeLinks = yes | makePlural = yes | textLastDelim = <nowiki>, or </nowiki> }}


=== Make Plural Links, turn into HTML list ===
=== Make Plural Links, turn into HTML list ===


<pre>
<pre>
{{#invoke: ParseList | main | Fighter, Cleric, Wizard | makeLinks = yes | makePlural = yes | type = htmlList }}
{{#invoke: ParseList | main | Fighter, Cleric, Wizard | makeLinks = yes | makePlural = yes | style = htmlList }}
</pre>
</pre>


Result:
Result:


{{#invoke: ParseList | main | Fighter, Cleric, Wizard | makeLinks = yes | makePlural = yes | type = htmlList }}
{{#invoke: ParseList | main | Fighter, Cleric, Wizard | makeLinks = yes | makePlural = yes | style = htmlList }}

Latest revision as of 23:07, 11 October 2024

Doc page: Module:ParseList/doc

This module allows you to process a list of values (separated by a comma by default) and display them in a variety of useful formats.

{{#invoke:ParseList|main|Fighter, Cleric, Wizard}}

Becomes:

Fighter, Cleric, and Wizard

Parameters

The first parameter is the list to be processed. The remaining parameters are optional:

parameter default meaning
style 'text' The desired output format, see below for possibilities.
type Deprecated synonym for style.
delimiter ',' The character that should serve as a delimiter of the input list. This can actually be a string of multiple characters which will all work as a delimiter, but that usage is discouraged as it may cause confusion.
makePlural (empty) If provided and not blank, means that each element will be turned into a plural word.
makeSingular (empty) If provided and not blank, means that each element will be turned into singular.
makeLowercase (empty) If provided and not blank, means that each element will be made all-lowercase.
makeLinks (empty)

If provided and not blank, means that each element will be made into a link.

If any transforms like plural, singular, or lowercase were specified, the original element will be the link destination, and the transformed version the link text. E.g., the list element "Apple" would become [[Apple|apples]] if makePlural, makeLowercase, and makeLinks were provided.

useTemplate (empty)

If provided, will use the provided template on each element, i.e., turn every X into {{Template|X}}.

This is done after any transforms like plural, singular and lowercase. E.g., the list element "Apple" would become {{Template|apples}} if makePlural, makeLowercase, and useTemplate were provided.

useTemplate2 (empty)

If provided, will use the provided template on each element and its transformed form as two template arguments.

E.g., the list element "Apple" would become {{Template|Apple|apples}} if makePlural, makeLowercase, and useTemplate were provided.

textDelim ', '

If style is text, this is used as the delimiter for the output list.

Setting this causes the default value for textLastDelim to be changed to the same value, since the default value of textLastDelim is unlikely to be useful with anything other than the default value of textDelim.

Note that the default value is not just a comma; it's a comma followed by a space character.

textLastDelim (conditional)

If style is text, this is used as the delimiter between the last two elements of the output list.

If textDelim is not set (i.e., left at its default value), then the default value for this is ', and ' such that an input list "X, Y, Z" would be turned into "X, Y, and Z". You could leave textDelim unset, but set textLastDelim = <nowiki>, or </nowiki> to get the output "X, Y, or Z" instead.

If textDelim is set, then this defaults to the same value as that. E.g., specifying textDelim = <nowiki> + </nowiki> would transform the input list "X, Y, Z" into "X + Y + Z" without needing to also change the value of textLastDelim.

Note: The use of <nowiki> here is to prevent leading and trailing space characters from being ignored when setting textDelim or textLastDelim to a string that should start and/or end with a space character.

The automatic plural/singular transforms are able to recognize certain irregular plurals and handle them correctly, such as "thieves" and "quarterstaves." This is handled partly through a table of explicit special conversions like staff -> staves, and partly through logical rules like ...f --> ...ves. If you find a word that produces a wrong result, it should be added to the table of explicit conversions.

The makeLink, useTemplate, and useTemplate2 arguments are mutually exclusive; when several are provided, only the first will take effect.

Output styles

The value of the style parameter can be the following:

value example output
text Fighter, Cleric, and Wizard
simpleList Fighter, Cleric, Wizard
htmlList
  • Fighter
  • Cleric
  • Wizard
htmlListNoBullets
  • Fighter
  • Cleric
  • Wizard
htmlListNoBulletsOrMargin
  • Fighter
  • Cleric
  • Wizard
tableList
Fighter

Cleric Wizard

none FighterClericWizard

The style none is useful if each element is being transformed into an HTML element such that no textual delimiters are desired.

Examples

Make Links

{{#invoke: ParseList | main | Fighter, Cleric, Wizard | makeLinks = yes }}

Result:

Fighter, Cleric, and Wizard

Make plural

{{#invoke: ParseList | main | Fighter, Cleric, Wizard | makePlural = yes }}

Result:

Fighters, Clerics, and Wizards

Make Plural Links

{{#invoke: ParseList | main | Fighter, Cleric, Wizard | makeLinks = yes | makePlural = yes }}

Result:

Fighters, Clerics, and Wizards

Make Plural Links, end with "or"

{{#invoke: ParseList | main | Fighter, Cleric, Wizard | makeLinks = yes | makePlural = yes | textLastDelim = <nowiki>, or </nowiki> }}

Result:

Fighters, Clerics, or Wizards

Make Plural Links, turn into HTML list

{{#invoke: ParseList | main | Fighter, Cleric, Wizard | makeLinks = yes | makePlural = yes | style = htmlList }}

Result: