Module talk:ResolveEntityId

Latest comment: 1 year ago by MSGJ in topic Output for invalid input

Redirects edit

@Ahecht: a really useful module. Would it possible to follow redirects and give the ID of their target? — Martin (MSGJ · talk) 17:07, 22 June 2021 (UTC)Reply

@MSGJ: It already follows Wikidata redirects. For example {{#invoke:ResolveEntityId|entityid|Q404}} returns Q404. Are you talking about following Wikipedia redirects as well? --Ahecht (TALK
PAGE
) 20:00, 24 June 2021 (UTC)Reply
Yes that's what I meant, sorry if I was unclear. It would be great if
  • {{#invoke:ResolveEntityId|entityid|Isla de Útila}} ⇒ Q1572113
Currently:
  • {{#invoke:ResolveEntityId|entityid|Isla de Útila}} ⇒ Q1572113
— Martin (MSGJ · talk) 21:00, 24 June 2021 (UTC)Reply
@Ahecht: this would still be extremely useful, if only as an opt-in. Thanks :) — Martin (MSGJ · talk) 20:54, 23 February 2022 (UTC)Reply
@MSGJ I'll put it on my to-do list. --Ahecht (TALK
PAGE
) 05:03, 24 February 2022 (UTC)Reply
@MSGJ Looks like I implemented it in the sandbox back in 2021 but never copied it to the main template. It's now   Done. --Ahecht (TALK
PAGE
) 22:39, 24 February 2022 (UTC)Reply
Ahecht and MSGJ: Something, possibly this change, has resulted in script errors in as many as a few hundred articles. See Abatus koehleri and Category:Pages with script errors. – Jonesey95 (talk) 01:30, 25 February 2022 (UTC)Reply
Reverted for now. Thanks for letting us know — Martin (MSGJ · talk) 08:28, 25 February 2022 (UTC)Reply
If the reverted edit is restored, perhaps with changes, please consider my response at WT:Lua#Lua error with Taxonbar?. I don't know if the problem mentioned here had the same root cause as the problem I investigated. Johnuniq (talk) 08:38, 25 February 2022 (UTC)Reply

Ahecht: while you are debugging this, can you just confirm that if the redirect does have a wikidata item then the module should return that ID. It should only follow the redirect if there is no wikidata item. I may be reading the code wrong, but it seems that line 25 of your sandbox may need changing. Thanks — Martin (MSGJ · talk) 08:48, 25 February 2022 (UTC)Reply

@MSGJ, Jonesey95, and Johnuniq: I think I have it resolved now. There was an earlier change to the sandbox before I made my changes that caused an error if there wasn't a Wikipedia sitelink in the Wikidata item (which wasn't in my testcases). I have fixed that issue in my sandbox, and implemented it in {{taxonbar/sandbox}}. I also fixed the sandbox so that it only resolves redirects if a wikidata item doesn't exist. Please test out the new sandbox version, and I can copy it over to the main module. --Ahecht (TALK
PAGE
) 00:14, 26 February 2022 (UTC)Reply
@Ahecht: Please review the history at Module:ResolveEntityId/sandbox and check the edits I have made. Re Module:ResolveEntityId/doc, you might consider rewriting the examples like the following.
local resolveId = require('Module:ResolveEntityId')._id
id = resolveId('Q42')
Johnuniq (talk) 03:58, 26 February 2022 (UTC)Reply
@Johnuniq Looks good. I simplified the code a little further, and will run some more tests before taking it live. --Ahecht (TALK
PAGE
) 05:28, 26 February 2022 (UTC)Reply
My tests on Module talk:ResolveEntityId/testcases are all working correctly. — Martin (MSGJ · talk) 16:44, 27 February 2022 (UTC)Reply
Ahecht: Do you think this is ready to deploy? — Martin (MSGJ · talk) 10:34, 2 March 2022 (UTC)Reply

I don't have an opportunity to fully investigate at the moment but Cobble skink is showing "Lua error in Module:ResolveEntityId at line 32: attempt to index a nil value" at the bottom due to a recent edit here. Perhaps it's a problem in that article that someone could fix, although the module should show a better message. Every function related to titles or wikidata will potentially return nil or give some other error at some point. It's a shame that code has to be uglified but the fix there would be something like "local title = mw.title.new(...) or error('helpful text here')" then use title.redirectTarget. Johnuniq (talk) 23:13, 7 March 2022 (UTC)Reply

It was caused by an empty definition of from1, i.e.
{{Taxonbar|from1=|from2=Q106918135}}
Module:Taxonbar or this module need to be made more robust so that a blank input does not cause an error — Martin (MSGJ · talk) 18:02, 8 March 2022 (UTC)Reply

Output for invalid input edit

Could the module be made a bit more robust? If something invalid is passed to the template, e.g.

{{#invoke:ResolveEntityId|entityid|[[Kouga Dam]]}}

could it fail gracefully by returning nil? At the moment we are getting "Lua error in Module:ResolveEntityId at line 32: attempt to index a nil value". Cheers — Martin (MSGJ · talk) 09:25, 2 November 2022 (UTC)Reply

Since I realised I had already requested this previously, I went ahead and made the corrections to the module. Hope there are no side-effects but testcases are working fine. — Martin (MSGJ · talk) 15:34, 2 November 2022 (UTC)Reply