User:BillKing

Below is summary of findings etc. while creating modules with Scribunto (Lua)

 * 1)    TESTED - Create modules containing either an array or matrix (array of arrays) as data source to other modules.
 * 2)    TESTED - Create modules that use a string or an array or an array matrix as data sources.
 * 3) *       Ability to use more than one array contained in a matrix in a module
 * 4) *       Use list of delimited string as arguments to a module
 * 5)    TESTED - Develop an approach for handling data in associative arrays
 * 6) *       Ability to identify data elements
 * 7) *       Ability to break apart data elements using subfields
 * 8)    Types of working modules created on personal wiki
 * 9) *       DONE - simplified infobox module - simple array
 * 10) *       DONE - build sorted table from associative array with options:
 * 11) **           Output column heads or not - no heads - array will not be sortable
 * 12) **           Limited selection of rows to output
 * 13) **           Limited selection of columns to output
 * 14) **           Option to add entry number column to table (5 digit number)
 * 15) *       DONE - use an array to perform lookups (ie. Find a state abbreviation and output the state's official flower or capitol etc.)
 * 16) *       DONE - sort an input string (list) based on a delimiter
 * 17) *       DONE - output string in delimited form or create a list
 * 18) **           option to perform leading article lookups for "A, An, And, The" for sorting purposes
 * 19) *       DONE - limited table check module for certain types of data arrays
 * 20) *       TESTED - ability to create an array from a string (list)
 * 21)    TESTED - Use a variable (created by Variables extension)  to pass to a module
 * 22)    TESTED - Use output of one module and pass output as argument to another module
 * 23)    DONE - Create Categories
 * 24) *       Module created to read in a list and produce Categories on a page
 * 25)    TESTED - Use a template with a ParserFunction switch statement to call preformed invoke to various modules
 * 26) *       ie. Option 1 - invoke an infobox module with different parameters.
 * 27)    TESTED - Can now use a multiline string inside a called Lua module (strings contained in Lua using double brackets), returning it as a single string.
 * 28)   Note: fixed problematic issue with "\n" by editing the LuaStandalone engine for my installation on Windows 7...
 * 29) *  page = &#91;&#91; &#42; One &#42; Two ;Term :Definition &#93;&#93;
 * 30) *       Also, can add variables to a multiline Lua string inside a module. I now use it to add a small section to various pages.
 * 31)    TESTED - Can use an #invoke statement as an argument to a template.
 * 32)    DONE - Module created to swap strings -- ie. swap dog n cat - 'The brown dog jumped over the cat' to 'The brown cat jumped over the dog'
 * 33)    DONE - Module created to count number of elements of a list passed as a string.
 * 34)    DONE - Module created to convert a Roman Numeral to number: ie. mmxiii to 2013
 * 35)    DONE - Module created to repeat a string multiple times (ie. "test" to become "testtesttesttest")
 * 36) *  also can specify another string and replace/repeat multiple times within initial string (ie. "this is a test" - other string "is" to become "this isisisis a test" etc.)
 * 37) ** Specify how many times - 1st or last or a number of occurences etc.
 * 38)    DONE ELSEWHERE - ISBN digit check digit creation - validation
 * 39)    Other Notes
 * 40)    Note: To trigger error message that will appear within RED Script Error can use following code:  do return error("Your Error Message") end -- simpler just: error("Your Error Message")
 * 41)    If a value of a parameter is 'nil' and want to assign a default value (rather than do an if else statement):
 * 42) *  ie. local variable yesno = frame.args[2] or "no"
 * 43)    Length of a string passed to a module (2 ways I found):
 * 44) *       #frame.args[1] or if made into a variable string.len(variable)
 * 45)    Less typing using string functions:
 * 46) *  test = string.gsub("test","e","E")  change to test = test:gsub("e","E")
 * 47)    Important
 * 48) *   An #invoke's parameter that is a string containing an '=' sign and to be handled by the invoked module will fail -- to resolve enclose the ='s sign in curly brackets -- see: https://en.wikipedia.org/wiki/Help:Templates#Usage_hints_and_workarounds.
 * 49) *   One work around is to set a default in the Module to overcome the 'nil' error but that may or may not be appropriate for all cases.
 * 50) *   Just something to remember!
 * 51) **  Also Note: It is possible to define a variable and pass that variable to a module without having to resort to enclosing the ='s sign in curly brackets, yet other method - replacing the ='s sign with ='s curly brackets with Replace. However, neither the Variables nor the String Functions extensions are incorporated in mediawiki, wikipedia etc. - I use those extensions in my own small personal wikis.
 * 52)    Works in Progress
 * 53) *   Investigating - adding rows and columns and outputting totals in a table
 * 54) *   Investigating - removing numerous templates that I use and replacing them with Scribunto (Lua) modules
 * 55) *   Investigating - creating categories & sub categories based on a simple taxonomy (ie. Basic Library of Congress Classification) ♙