Module:Static/doc: Difference between revisions

From Modded Wiki
Jump to navigation Jump to search
mNo edit summary
m 11 revisions imported
 
(9 intermediate revisions by 2 users not shown)
Line 10: Line 10:


function p.main()
function p.main()
     local static = require('Module:Static')
     local static = require( 'Module:Static' )
     static.x = (static.x or 0) + 1
     static.x = ( static.x or 0 ) + 1
     return static.x
     return static.x
end
end
Line 19: Line 19:


If the above code sample was stored in <code>Module:foo</code> and then <code><nowiki>{{#Invoke:foo|main}} {{#Invoke:foo|main}}</nowiki></code> would result in <code>1 2</code>.
If the above code sample was stored in <code>Module:foo</code> and then <code><nowiki>{{#Invoke:foo|main}} {{#Invoke:foo|main}}</nowiki></code> would result in <code>1 2</code>.
== Dev spec ==
Because data stored through this module can be invoked by any modules used in the same page. To avoid being interfered with by other modules, a module '''MUST''' store data in their own namespace (a sub-table, see below), and '''NEVER''' modify data in other namespace.
For example, in "Module:Example":
<syntaxhighlight lang='lua'>
...
    local static = require( 'Module:Static' )
    if not static.Example then
        static.Example = {}
    end
    static.Example.exampleData = 3
...
</syntaxhighlight>
Data stored by a module, must be stored in a sub-table with the same name of that module (capitalize the first letter, and all spaces replaced with underscores). This sub-table should being initialized immediately after the invocation of this module.
<includeonly>{{sandbox other||
<includeonly>{{sandbox other||
<!-- Template categories/interwikis here -->
<!-- Template categories/interwikis here -->
[[Category:Meta modules]]
[[Category:Meta modules]]
 
[[es:Módulo:Static]]
[[fr:Module:Static]]
[[pt:Módulo:Static]]
[[ru:Модуль:Статические данные]]
[[zh:Module:Static]]
[[zh:Module:Static]]
}}</includeonly>
}}</includeonly>
<noinclude>
<noinclude>
<!-- Documentation categories/interwikis here -->
<!-- Documentation categories/interwikis here -->
[[es:Módulo:Static/doc]]
[[fr:Module:Static/doc]]
[[pt:Módulo:Static/doc]]
[[ru:Модуль:Статические данные/док]]
[[zh:Module:Static/doc]]
[[zh:Module:Static/doc]]
</noinclude>
</noinclude>

Latest revision as of 08:07, 4 July 2024

This is the documentation page. It is transcluded into Module:Static. See Template:Documentation for more information.

Usage[edit source]

This module returns a table that can store data that persists in between multiple {{#Invoke:}} calls.

Example:

local p = {}

function p.main()
    local static = require( 'Module:Static' )
    static.x = ( static.x or 0 ) + 1
    return static.x
end

return p

If the above code sample was stored in Module:foo and then {{#Invoke:foo|main}} {{#Invoke:foo|main}} would result in 1 2.

Dev spec[edit source]

Because data stored through this module can be invoked by any modules used in the same page. To avoid being interfered with by other modules, a module MUST store data in their own namespace (a sub-table, see below), and NEVER modify data in other namespace.

For example, in "Module:Example":

...
    local static = require( 'Module:Static' )
    if not static.Example then
        static.Example = {}
    end
    static.Example.exampleData = 3
...

Data stored by a module, must be stored in a sub-table with the same name of that module (capitalize the first letter, and all spaces replaced with underscores). This sub-table should being initialized immediately after the invocation of this module.


es:Módulo:Static/doc fr:Module:Static/doc pt:Módulo:Static/doc ru:Модуль:Статические данные/док zh:Module:Static/doc