Difference between revisions of "Module:Ustring/doc"

From RimWorld Wiki
Jump to navigation Jump to search
(Taken from https://en.wikipedia.org/wiki/Module:Ustring/doc. It seems more modules are required to make this work.)
 
 
(One intermediate revision by the same user not shown)
Line 3: Line 3:
  
  
This module directly imports all functions from the {{luaref|Ustring library|mw.ustring}} library. Documentation for each function can be found there.
+
This module directly imports all functions from the mw.ustring library. Documentation for each function can be found there.
  
The module takes an indefinite number of arguments. Arguments given as {{para|s1}}, {{para|s2}}, etc, are read first, and are used as strings. All remaining numerical arguments are coerced to number type if possible, and remain strings if not. If you wish for a numerical (i.e. unnamed or "{{para|1}}", "{{para|2}}") to remain a string, you can simply escape it by inserting <code>\</code> at the beginning of the string.
+
The module takes an indefinite number of arguments. Arguments given as |s1=, |s2=, etc, are read first, and are used as strings. All remaining numerical arguments are coerced to number type if possible, and remain strings if not. If you wish for a numerical (i.e. unnamed or "|1=", "|2=") to remain a string, you can simply escape it by inserting <code>\</code> at the beginning of the string.
  
 
Note that MediaWiki will always trim whitespace from named arguments; to give arguments with surrounding whitespace you must use unnamed parameters starting with <code>\</code>.
 
Note that MediaWiki will always trim whitespace from named arguments; to give arguments with surrounding whitespace you must use unnamed parameters starting with <code>\</code>.
Line 14: Line 14:
 
! To pass this... !! Write this !! Explanation
 
! To pass this... !! Write this !! Explanation
 
|-
 
|-
| <code>"  0123  "</code> || {{para||\  123 }} || To get surrounding whitespace must use unnamed, but must precede with <code>\</code> to indicate that it isn't a number.
+
| <code>"  0123  "</code> || \  123 || To get surrounding whitespace must use unnamed, but must precede with <code>\</code> to indicate that it isn't a number.
 
|-
 
|-
| <code>"0123"</code> || {{para|s1|0123}} || If you don't need to preserve whitespace use {{para|s1}} etc.
+
| <code>"0123"</code> || s1=0123 || If you don't need to preserve whitespace use s1= etc.
 
|-
 
|-
| <code>"0123"</code> || {{para|1|\0123}} || If you don't need to preserve whitespace explicitly use {{para|1}} etc.
+
| <code>"0123"</code> || 1=\0123 || If you don't need to preserve whitespace explicitly use 1= etc.
 
|-
 
|-
| In another template, to pass its parameter <code>{{{1}}}</code>, preserving whitespace || {{para||\{{{1}}}}} || Must provide the <code>\</code> with unknown string input.
+
| In another template, to pass its parameter <code>{{{1}}}</code>, preserving whitespace || \{{{1}}} || Must provide the <code>\</code> with unknown string input.
 
|-
 
|-
| In another template, to pass its parameter <code>{{{1}}}</code>, stripping whitespace || {{para|s1|{{{1}}}}} ||  
+
| In another template, to pass its parameter <code>{{{1}}}</code>, stripping whitespace || s1={{{1}}} ||  
 
|-
 
|-
| In another template, to pass its parameter <code>{{{1}}}</code>, stripping whitespace || {{para|1|<nowiki>\{{#if:1|{{{1}}}}}</nowiki>}} ||  
+
| In another template, to pass its parameter <code>{{{1}}}</code>, stripping whitespace || 1=<nowiki>\{{#if:1|{{{1}}}}}</nowiki>}} ||  
 
|}
 
|}
  
Line 100: Line 100:
 
{{script error|Script error: "maxPatternLength" is not a function.}}
 
{{script error|Script error: "maxPatternLength" is not a function.}}
  
== See also ==
 
{{String handling templates}}
 
 
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
 
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
 
<!-- Categories below this line, please; interwikis at Wikidata -->
 
<!-- Categories below this line, please; interwikis at Wikidata -->
 
[[Category:Modules that manipulate strings|*]]
 
[[Category:Modules that manipulate strings|*]]
 
}}</includeonly>
 
}}</includeonly>

Latest revision as of 03:31, 23 December 2024

Taken from https://en.wikipedia.org/wiki/Module:Ustring/doc


This module directly imports all functions from the mw.ustring library. Documentation for each function can be found there.

The module takes an indefinite number of arguments. Arguments given as |s1=, |s2=, etc, are read first, and are used as strings. All remaining numerical arguments are coerced to number type if possible, and remain strings if not. If you wish for a numerical (i.e. unnamed or "|1=", "|2=") to remain a string, you can simply escape it by inserting \ at the beginning of the string.

Note that MediaWiki will always trim whitespace from named arguments; to give arguments with surrounding whitespace you must use unnamed parameters starting with \.

How to pass inconvenient strings
To pass this... Write this Explanation
" 0123 " \ 123 To get surrounding whitespace must use unnamed, but must precede with \ to indicate that it isn't a number.
"0123" s1=0123 If you don't need to preserve whitespace use s1= etc.
"0123" 1=\0123 If you don't need to preserve whitespace explicitly use 1= etc.
In another template, to pass its parameter {{{1}}}, preserving whitespace \{{{1}}} Must provide the \ with unknown string input.
In another template, to pass its parameter {{{1}}}, stripping whitespace s1={{{1}}}
In another template, to pass its parameter {{{1}}}, stripping whitespace 1=\{{#if:1|{{{1}}}}}}}

You can also wrap results in tags. All other unused arguments will be passed to Template:Luaref

Usage[edit]

{{#invoke:Ustring|function_name|arg1|arg2|...}} is equivalent to Template:Luaref

Example using mw.ustring.sub[edit]

{{#invoke:Ustring|sub|s1=abcde|2|4}}

produces:

bcd

Example using mw.ustring.gsub[edit]

{{#invoke:Ustring|gsub|s1=1234|23|}}

produces:

14

Example using mw.ustring.char[edit]

&amp;#{{#invoke:ustring|char|49|48|59}}

produces:

&#10;

Example using mw.ustring.match[edit]

{{#invoke:Ustring|match|s1=abcde|s2=(c%w)}}

produces:

cd

Note: Only the first match is returned. Additional returns are omitted because mw.ustring.gsub's second return value is generally undesirable.

Example using tag arguments[edit]

{{#invoke:Ustring|match
|s1={{Module:Ustring}}|%s%s%sif%snot%s[^%s]+%sthen.+%
<!--enter an actual newline character to match '\n'-->%s%s%send
|tag=syntaxhighlight|lang=lua}}

produces:

			if not fargs.tag then
				return (what(unpack(args)))		-- Outside parens truncate to first result avoiding tail call
			end
			local tagargs = {}
			for x, y in pairs(fargs) do
				if not fargsused[x] then tagargs[x] = y end
			end

Note that:

<syntaxhighlight lang="lua">{{#invoke:Ustring|match
|s1={{Module:Ustring}}|%s%s%sif%snot%s[^%s]+%sthen.+%
<!--enter an actual newline character to match '\n'-->%s%s%send}}</syntaxhighlight>

produces:

{{#invoke:Ustring|match
|s1={{Module:Ustring}}|%s%s%sif%snot%s[^%s]+%sthen.+%
<!--enter an actual newline character to match '\n'-->%s%s%send}}

Errors[edit]

Errors from accessing Template:Luaref should be maintained, e.g.:

{{#invoke:Ustring|xyzzy}}

should produce:

Template:Script error

and

{{#invoke:Ustring|maxPatternLength}}

should produce:

Template:Script error