Module talk:Page

This is an old revision of this page, as edited by Petr Matas (talk | contribs) at 09:48, 18 August 2018 (Script errors: Reply to Johnuniq). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Latest comment: 7 years ago by Petr Matas in topic Script errors

example

{{#invoke:Page|id|Nazi Party}} generates:

21736

Modified by Gangleri (talk) 12:39, 17 December 2015 (UTC)Reply

wgCurRevisionId

att: / cc: @Darklama, @Liangent, @Wnt Hi! It is possible to add wgCurRevisionId to the list of parameters? One application is described under note a) at https://en.wikipedia.org/?curid=14574453#shortest_url . Kind regards Gangleri (talk) 12:39, 17 December 2015 (UTC)Reply

Script errors

@Petr Matas: I'm trying to understand your recent changes to Module:Page which look great in principle but which have a glitch that is generating script errors in articles (current list).

In callAssert, what is this?

    local result = { func(...) }

I would have expected use of pcall. The following join should be string.concat table.concat and that is the immediate problem. If I get some time later I will try following instinct and replace the above with pcall. Johnuniq (talk) 00:06, 18 August 2018 (UTC)Reply

On a closer look, I see that pcall was not wanted. The code is not catching an error in the call, it's detecting whether the call returned nil. Even closer inspection showed that throwing error() is not wanted either. I have never seen this module or its templates (apparently {{Correct title}} and {{Pageid to title}}) before so my quick work needs checking. However, {{Correct title}} uses #iferror to test certain things and the error span class returned in the text is caught by #iferror. Throwing an error puts the article in Category:Pages with script errors which is very undesirable. At any rate I fixed the immediate problem and the number of articles in the error category is down from 88 to 14. I'll investigate those 14 in due course. Johnuniq (talk) 02:25, 18 August 2018 (UTC)Reply
The line local result = { func(...) } stores the (possibly multiple) values returned from the function in a table. Its counterpart is return unpack(result), which returns the contents of the table as multiple values.
To avoid throwing an error from the module, I have encapsulated the entire main in pcall. This way we can keep using error(), I hope. Thus, pcall at other places becomes unnecessary. Petr Matas 09:47, 18 August 2018 (UTC)Reply