Wikipedia talk:Lua string functions

Created essay
The essay "WP:Lua string functions" was created by long-term user Wikid77 to describe the capabilities, performance, and limitations when using Lua script to handle text strings in Wikipedia pages.

Lua text problems of wikitables and nowiki tags
I am worried about "bugs" in Lua chopping any text strings which contain wikitables, either with "{|" tokens or with "&lt;table>" tags. While I have been able to use Lua to scan entire articles (with expansion of all infoboxes, span-tags, {convert}'s, category links, and navboxes), but unless every wikitable is commented-out by "&lt;!--...-->" or noinclude'd, then Lua's view of the article contents stops at the first wikitable. That action seems like a bug, where Lua should allow all article-page data into a text string. Also, Lua cannot see inside a nowiki tag (nor inside a "&lt;pre>" tag), which always has length 43 characters, and never reveals any contents between "&lt;nowiki>...&lt;/nowiki>" but only text before/after nowiki tags. I wonder if we need a new tag for literal text, such as "&lt;literal>...&lt;/literal>". These are complex issues, and we need to discuss them in another long page.

Example of &lt;table>: Seems to work now. Compare the effect of "&lt;table>" with the Lua-based Template:Str_find in searching the whole string length:
 * {str_find|123456789012|78} &rarr;
 * {str_find|123456789012|90} &rarr;
 * {str_find|1234 9012|78} &rarr;
 * {str_find|1234 9012|90} &rarr;
 * {str_find|12345&lt;span>67890&lt;/span>12|78} &rarr;

Using the "&lt;table>" tag formerly stopped the string. Also, inserting a wikitable "{|" in column 1 would produce a similar effect (since "{|" generates a "&lt;table>" tag). However it seems correct now in this example.

Example of &lt;nowiki>: Compare the effect of "&lt;nowiki>" with the Lua-based Template:Str_len in getting the whole string length:
 * Nw1: {str_len|123456789012} &rarr; 12
 * Nw2: {str_len|1234 5678&lt;/nowiki>9012} &rarr; 14
 * Nw3: {str_len|1234 567890&lt;/nowiki>12} &rarr; 14

Using the "&lt;nowiki>" tag hides the text but counts as +43 characters. So, for the case Nw2, the length is 4+43+4=51, and Nw3 yielded 4+43+2=49 long.

It has been suggested that the mw.text.unstrip function at MediaWiki's "Lua reference manual" (which is not yet live) may be of help with the nowiki tags. Also see:. -Wikid77 (talk) 15:36, 16 March 2013 (UTC)


 * Passing tables into Lua is limited by parser restrictions: When trying to pass wikitables into a Lua-based template, or into a Lua-invoke function, then the vertical-bar pipe in "{|" is likely to stop the text string at that point. In such cases, it would be better to just pass a pagename into Lua, where Lua could read the text from inside the page rather than attempt to pass wikitables in parameter contents. The nowiki-tag or pre-tag elements are also limited by parser processing, so Lua would see only the 43-character wp:strip markers placed in the text, after parsing, and have no access to the nowiki-delimited text. -Wikid77 (talk) 23:13, 16 March 2013 (UTC)