Category detection (using new feature!)

edit

After 11 years in Phabricator purgatory, T50175 has now been completed, and Lua can now detect the categories used on a page. Would someone be able to implement this at {{If in category}} to make it less expensive/less error-prone/substable? Sdkbtalk 15:23, 16 August 2024 (UTC)Reply

Thanks for letting us know. Sounds as though it could be useful — Martin (MSGJ · talk) 16:29, 22 August 2024 (UTC)Reply

Problem with escape character

edit

This is from Module:Chessboard:

res = mw.ustring.gsub( res,'\| \|', '| |' )

This is being identified as an error when you try to save it, but not exactly sure how to fix. — Martin (MSGJ · talk) 16:28, 22 August 2024 (UTC)Reply

Use % as the Lua escape character.  —  Jts1882 | talk  16:34, 22 August 2024 (UTC)Reply
Umm, pipe isn't a special character in lua patterns so does not need to be escaped. See mw:Extension:Scribunto/Lua_reference_manual#Patterns.
Trappist the monk (talk) 16:39, 22 August 2024 (UTC)Reply
If you look at the code in the module you will see
Error: [243:31] invalid escape sequence near '\|'
Perhaps it is the pipe which needs escaping — Martin (MSGJ · talk) 06:18, 23 August 2024 (UTC)Reply
It seems the syntax highlighter is pointing out that the escape sequence doesn't make any sense (it's expecting something like \120 or \n), but it's still legal code, and just gets interpreted as | since a pipe has no special meaning when escaped. Aidan9382 (talk) 08:01, 23 August 2024 (UTC)Reply
Is there anyway this can be coded which prevents the warning? At the moment you get a warning every time you try to save the page — Martin (MSGJ · talk) 08:04, 23 August 2024 (UTC)Reply
Just remove the \, since "\|" and "|" are the same in lua (e.g. try printing it). Aidan9382 (talk) 08:09, 23 August 2024 (UTC)Reply
That would render the gsub completely redundant/useless, so maybe this is not doing what it was supposed to do ... — Martin (MSGJ · talk) 08:19, 23 August 2024 (UTC)Reply
Have just realised that the function that contains this appears to be completely unused, and it is also not documented. So it is simplest if I just remove this function from the module and the error disappears — Martin (MSGJ · talk) 08:26, 23 August 2024 (UTC)Reply
Sorry Aidan, just noticed your edit to the sandbox. I had not noticed the extra space between the pipes, so that makes sense. If it turns out the function is being used, then I will put your version back in — Martin (MSGJ · talk) 08:30, 23 August 2024 (UTC)Reply
Did you try using %| as I suggested above?  —  Jts1882 | talk  08:27, 23 August 2024 (UTC)Reply
I think I did, but it doesn't make the syntax highlighter any happier — Martin (MSGJ · talk) 08:31, 23 August 2024 (UTC)Reply
It gets rid of the error messages on the lines for me.  —  Jts1882 | talk  08:46, 23 August 2024 (UTC)Reply
(Lua patterns are not regex.) Izno (talk) 19:07, 22 August 2024 (UTC)Reply

Legislationuk / Legislationlistuk

edit

Module:Legislationuk is used by Template:Legislationuk is used by Template:Legislationlistuk List of acts of the Parliament of Northern Ireland does not fit into the module there are a couple aspects that I am not sure on how too change

The main thing i am struggling with is that the the regnal citations for uk acts last happened in 1962, so that's how it's been set up but the regnal citation for NI acts last happened in 1942. When I say "regnal citation" I mean, "10 & 11 Geo. 5. No. 1" or "14 Geo. 6. c. 1" or "13 & 14 Geo. 5. c. 7 (N.I.)".

The module uses data from Module:Legislationuk/data.

The citation happens at line 124, I think.

The pseudocode for the idea I am trying to implement is something like changing ``year > 1962`` to ``year > 1962 or (year > 1942 and jurisdiction = "northern ireland")``. DotCoder (talk) 00:57, 20 September 2024 (UTC)Reply

Mainly I just don't know how to adjust the module in the correct way to apply the citation system it uses for the NI acts properly. DotCoder (talk) 00:59, 20 September 2024 (UTC)Reply
Sorry, I'm not going anywhere near that mess. The author(s) couldn't be bothered to document the code (shame. shame. shame.), couldn't be bothered to use meaningful variable names, couldn't be bothered to organize all of that text in a data module.
Trappist the monk (talk) 14:40, 20 September 2024 (UTC)Reply
If it were documented, I wouldn't be asking for help. DotCoder (talk) 16:01, 20 September 2024 (UTC)Reply

Colours for dark mode

edit

A module sets colours for table headings by using colour names such as 'white', 'black' or hex values for text, background and cell border. This is fine for normal skins but how should it be coded to say "use the inverse colour in dark mode"? Dark mode is picking up the names and using those as absolute, where I think what I want it to say is "unless colour is specified use skin defaults for text and background" (the default for border is 'none' so that's not a problem). Nthep (talk) 15:47, 28 October 2024 (UTC)Reply

Isn't styling something that could be / should be done with template styles css?
Trappist the monk (talk) 16:17, 28 October 2024 (UTC)Reply
if i understood template styles, quite possibly. Nthep (talk) 16:29, 28 October 2024 (UTC)Reply
This probably should have been asked on WP:VPT since it has nothing to do with modules.
mw:Recommendations for night mode compatibility on Wikimedia wikis are the official recommendations from WMF about how to deal with dark mode consideration. The relevant section is this one.
You can probably be assisted further by providing a specific template/module of interest where you are trying to be dark-mode conscious. Izno (talk) 17:59, 28 October 2024 (UTC)Reply
And I gather this is about Module:Rugby league match squad. While you can do something of the "if this isn't defined, use the basic colors", you still need to cover your bases when it is defined. Basically you have these options in that case:
  1. Remove custom color support with its obvious downside. Branding is not that important, and that's almost exclusively the reason that a module like this uses color.
  2. Apply hue-rotate using a TemplateStyles sheet. This will result in the branding color being incorrect but the table will be dark rather than light.
  3. Forcibly override any colors inserted using TemplateStyles and !important while in dark mode. Anything using !important is usually considered to be technical debt, but at least your table is dark.
  4. Live with light mode colors for both light and dark. Which preserves the branding information but makes someone using dark mode have to put goggles on. :)
That's it. That's the story. You won't get everything you want all in one nice package. :( Izno (talk) 18:08, 28 October 2024 (UTC)Reply
@Izno thanks. I'd go for #1 but as I seem to be in a minority about colours among rugby editors, I can see it being reverted. I'll see what I can work out about template styles (have to say that what there is on the subject here and on media wiki isn't very helpful) and look at #3. Nthep (talk) 09:03, 29 October 2024 (UTC)Reply
@Izno Thanks again. I managed to adapt Module:Rugby league match squad/sandbox and it's calling template to use TemplateStyles ({{Rugby league match squad/sandbox/styles.css}} which seems to work ok on my sandbox [1].
I'm conscious that the module isn't the greatest piece of coding and is at serious risk of becoming an unitelligible mish-mash of code and styling. I see that TemplateStyles can be called from a module using frame:extensionTag (mw:Help:TemplateStyles#How_can_Lua_modules_interact_with_styles?) and my thought is could all the styling could all be pulled out into TemplateStyles using function p.templateStyle( frame, src )? Nthep (talk) 21:23, 5 November 2024 (UTC)Reply
You can do something like this at the very end of main():
return table.concat ({
		frame:extensionTag ('templatestyles', '', {src='Rugby league match squad/sandbox/styles.css'}),
		return_t
		});
Trappist the monk (talk) 22:25, 5 November 2024 (UTC)Reply
Yes, I would recommend placing the styles all in the sheet, at least those which can be. The above is the function call version, barring that I moved the TemplateStyles page just now. The object call version of it looks like
frame:extensionTag { name = 'templatestyles', args = {src='Module:Rugby league match squad/sandbox/styles.css'}}
(which I prefer since it names the arguments to extensionTag). I normally just concatenate it like your general string, but of course you may need tostring the return item depending on what you're concatenating e.g.
local templatestyles = above_bit return templatestyles .. return_t
Izno (talk) 22:45, 5 November 2024 (UTC)Reply
Thank you both for the replies, I will have a mess around and see where I get to. Doubtless I will be back with more questions. Nthep (talk) 10:52, 6 November 2024 (UTC)Reply

Request

edit

Please help me in creating a page Module:Sandbox/பொதுஉதவி. பொதுஉதவி (talk) 05:48, 1 November 2024 (UTC)Reply

I've gone ahead and made the page at Module:Sandbox/பொதுஉதவி. I assume the title blacklist was the only issue? Aidan9382 (talk) 08:33, 1 November 2024 (UTC)Reply

Using #invoke in mainspace, as an alternative to templates

edit

I've come across List of common misconceptions, which uses {{#invoke:cite web|}} instead of using {{cite web}} (and other CS1 templates) directly. Is this a good idea, or discouraged? --YodinT 18:15, 17 November 2024 (UTC)Reply

It's a necessary evil when working with huge articles that would otherwise exceed the post-expand include size. Otherwise it's discouraged. * Pppery * it has begun... 18:18, 17 November 2024 (UTC)Reply