Extension:Scribunto/Deployment priorities
From Linux Web Expert
<translate> This page is outdated.</translate> |
This list is completely unofficial, but it reflects MZMcBride's thoughts about what the priorities were prior to widespread deployment of Scribunto/Lua to Wikimedia wikis.
Must have
- Support for Lua in mwlib (Collection extension)
- (bugzilla:39610) Scribunto should support global module invocations
Should have
- (bugzilla:39605) Auto-categorize Scribunto module pages that contain errors
- (bugzilla:39606) Auto-categorize pages containing script errors from Scribunto module invocations
- → ok
- (bugzilla:39646) Scribunto needs sane Unicode string support
- Can use a pure-Lua UTF-8 decoder, like the one in require('luabit/utf8.lua')
- → mw.ustring allows to treat UTF-8 strings
os.date()
with support for at least"!*t"
and"*t"
formats; andos.time()
- 280 thousand pages on the English Wikipedia use its w:en:Template:Birth date and age template, and they all expect to be able to obtain the current date in a broken down form so that they can do calendar arithmetic.
- Other templates also use the current date and time. See w:en:Template:Indian population clock for example.
- A Lua program should be able to obtain everything that non-Scribunto templates can obtain through
{{CURRENTYEAR}}, {{CURRENTMONTH}}, {{CURRENTMONTHNAME}}, {{CURRENTMONTHNAMEGEN}}, {{CURRENTMONTHABBREV}}, {{CURRENTDAY}}, {{CURRENTDAY2}}, {{CURRENTDOW}}, {{CURRENTDAYNAME}}, {{CURRENTTIME}}, {{CURRENTHOUR}}, and {{CURRENTWEEK}}
[1]. - → "*t" and "!*t" works. Moreover mw.language allows to get localized object to have local time (and not server local time)
mw.page.title.name
[1]- Lots of English Wikipedia templates have default title to name of current page semantics.
- Some templates have special behavior depending on the fact that name=title or not.
- → mw.title included. mw.title.getCurrentTitle() is a table with lot of data related to current page (including title)
mw.page.title.namespaceName
andmw.page.title.namespace
[1]- Lots of English Wikipedia maintenance templates effectively do the
{{#switch:{{NAMESPACENUMBER}}}}
trick. - Non maintenance templates use this to prevent including article categories in other namespaces (i.e. docs or talk pages).
- → mw.title included. Same than page title.
- Lots of English Wikipedia maintenance templates effectively do the
mw.text.escape()
,mw.url.encode()
,mw.url.encodeAnchor()
- Of course, these can be done in Lua. But these encoders are used frequently. The English Wikipedia's citation templates need to URL encode COinS data, for example. A C implementation would be faster than a Lua one.
- → mw.uri library does this stuff.
mw.text.tag()
- Same as the encoders above. This is used a lot.
- → same
mw.url.local()
andmw.url.full()
- Navigation boxes on the English Wikipedia need these for their "v·d·e" links.
- → same
mw.page.talk
andmw.page.subject
- → mw.title + mw.uri should do the work.
- An
{{#ifexist:}}
equivalent.- The English Wikipedia uses this in templates as diverse as w:en:Template:infobox country and w:en:Template:article for deletion/dated.
- → mw.title.new() allows to create titles for any page, and to test if it exists or not.
- the string library is broken on strings that come from template parameters if they include some tags (i.e. <nowiki> and <pre>). string functions act as if they can only see the special encoding of the first tag (example: passing "<pre>my string</pre>" to a template is see by the module as a 39 bytes length string (whatever the string content), which is the length of the encoded "<pre>" tag. This also prevent string functions to search or modify the "real" string content. See bug report
- ↑ 1.0 1.1 1.2 Of course this can be simulated using
frame:preprocess("{{THE-PSEUDO-TEMPLATE}}")
. But 1. this is maybe not the most efficient way to perform this and 2. a metatable to perform/store this − like for the args table − should be cleaner and would allow future improvements without impacting users code.
Can have
- (bugzilla:39609) Limit scope of title-based syntax highlighting
- → done. Subpage /doc is treated as a documentation page, automaticaly included at the begining of module page. It also allows to add categories.
Won't have
- Speed problems!
Deployment following
These dates can be later than the true ones, because they are followed by final users.
See also
- meta : deployment of Scribunto to Wikimedia wikis.
- MediaWiki 1.21/Roadmap, MediaWiki 1.22/Roadmap dates of deployment for each wiki.
- Lua scripting/statusMonthly summary of the key stages of development.
- bugzilla list of last bugs in Scribunto
- Recent code review of Scribunto
- [[../Brainstorming/]]