Module talk:String
![]() | This module was considered for merging with Module:HTMLDecode on 2020 May 8. The result of the discussion was "no consensus". |
![]() | Text and/or other creative content from this version of Module:String was copied or moved into incubator:Module:Wp/nod/String with this edit. The former page's history now serves to provide attribution for that content in the latter page, and it must not be deleted as long as the latter page exists. |
This page has archives. Sections older than 90 days may be automatically archived by Lowercase sigmabot III when more than 5 sections are present. |
Extract number
I am trying to extract a number from a string and ignore any units. I have been using {{first word}} which works in some cases.
- {{first word|1={{convert|45|m}}}} -> 45
- {{first word|1={{convert|18.6|nmi|km mi|abbr=on}}}} -> 18.6 nmi
In the second case it doesn't work. I think because a nbsp is being used instead of a space. Is there any template which will work for both? — Martin (MSGJ · talk) 08:20, 11 April 2022 (UTC)
- You can use Special:ExpandTemplates to see that convert outputs
18.6 nmi (34.4 km; 21.4 mi)
for the second case above. What is the purpose of this? If it's for convert and if you can control the parameters, using abbr=values would make selection easier. For the second case above, that would give18.6 (34.4; 21.4)
. Johnuniq (talk) 11:01, 11 April 2022 (UTC)- It's for importing data into Wikidata from infobox fields. I can't control the parameters because convert is used separately on each article. — Martin (MSGJ · talk) 19:36, 11 April 2022 (UTC)
Template:Str rep pattern match irregularities
Editors interested in this module may be interested in the following discussion: Template talk:Str rep#Pattern match irregularities. Your feedback would be welcome. Mathglot (talk) 08:14, 8 October 2022 (UTC)
How to do string.replace of level3 headers in transcluded wikitext
I am trying to use replace to strip out the level3 headers from a transclusion of Dublin North-West (Dáil constituency)#TDs.
However {{#invoke:String|replace|{{trim|{{#section-h:Dublin North-West (Dáil constituency)|TDs}}}}|%=%=%=[^%=]*%=%=%=||plain=false}}
leaves the level3 headers in place -- see my /sandbox test page at special:permalink/1164910747
Any suggestions? Feel free to edit that sandbox if it helps. BrownHairedGirl (talk) • (contribs) 21:13, 11 July 2023 (UTC)
- I have never seen the #section-h construction before. Would you mind explaining where that comes from? — Martin (MSGJ · talk) 21:50, 11 July 2023 (UTC)
- Turns out this has nothing to do with Lua: when using an equals sign in an argument to a template or module you need to name the parameter explicitly or escape it with {{=}}:
{{#invoke:String|replace|{{trim|{{#section-h:Dublin North-West (Dáil constituency)|TDs}}}}|pattern=%=%=%=[^%=]*%=%=%=|replace=|plain=false}}
should work. * Pppery * it has begun... 22:09, 11 July 2023 (UTC)- Bless you @Pppery. That's done it. Thanks also to @Trappist the monk for appplyig the fix to my sandbox -- I am not sure which of you did what first, but you have both been a great help, and mighty promptly.
- I case you are curious, this is for my development of the {{Constituency Teachtaí Dála navbox}} meta-template. When I used it to make {{Kerry (Dáil constituency)/TDs}}, the level3 headers were an annoying intrusion, but now I can make 'em vanish from the navbox. Thanks again. BrownHairedGirl (talk) • (contribs) 22:35, 11 July 2023 (UTC)
- This isn't quite what you were asking, but related enough you might be interested in it: {{Conditional heading}}. Mathglot (talk) 04:50, 12 July 2023 (UTC)
- Thanks, @Mathglot. I want to remove the headings rather than to promote or demote them, so it's not what I need in this case. But it's good to know about this, for future refrence. BrownHairedGirl (talk) • (contribs) 23:11, 12 July 2023 (UTC)
- This isn't quite what you were asking, but related enough you might be interested in it: {{Conditional heading}}. Mathglot (talk) 04:50, 12 July 2023 (UTC)
Protected edit request on 21 September 2023
![]() | This edit request has been answered. Set the |answered= parameter to no to reactivate your request. |
On Latin Wikipedia I have created a tiny module named Module:Translitteratio, which contains a single function named abecedaria
. The function accepts three parameters and works exactly like the translit
M4 macro (but with the order of arguments changed to chars, replacement, string). For example,
{{#invoke:translitteratio|abecedaria|aeiou|äëì|Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam mollis, metus ac volutpat auctor, sem ligula interdum nulla, ac pellentesque nibh erat sed nisi. Integer nec auctor orci. Quisque nibh metus, viverra et viverra nec, laoreet in mi. Integer aliquet, mauris vitae tristique fringilla, ante odio ultrices quam, et fermentum orci purus nec lorem. Integer quis vehicula arcu, et laoreet enim. Nulla euismod neque velit, eget iaculis massa tempor ut. Nulla convallis maximus neque et porttitor. In nunc eros, convallis id posuere ac, egestas et arcu. Aenean faucibus sollicitudin ipsum, in condimentum mauris maximus in. Etiam facilisis eros vel tortor tincidunt iaculis. Vestibulum lorem lectus, posuere sed enim in, varius pharetra lorem. Morbi nisl lacus, eleifend ut urna vitae, interdum consequat ipsum. Cras ut imperdiet ante. Sed quis luctus purus, quis porta erat. Ut gravida gravida augue a euismod.}}
generates
- Lrëm ìpsm dlr sìt ämët, cnsëctëtr ädìpìscìng ëlìt. Näm mllìs, mëts äc vltpät äctr, sëm lìglä ìntërdm nllä, äc pëllëntësqë nìbh ërät sëd nìsì. Intëgër nëc äctr rcì. Qìsqë nìbh mëts, vìvërrä ët vìvërrä nëc, lärëët ìn mì. Intëgër älìqët, märìs vìtäë trìstìqë frìngìllä, äntë dì ltrìcës qäm, ët fërmëntm rcì prs nëc lrëm. Intëgër qìs vëhìclä ärc, ët lärëët ënìm. Nllä ëìsmd nëqë vëlìt, ëgët ìäclìs mässä tëmpr t. Nllä cnvällìs mäxìms nëqë ët prttìtr. In nnc ërs, cnvällìs ìd psërë äc, ëgëstäs ët ärc. Aënëän fäcìbs sllìcìtdìn ìpsm, ìn cndìmëntm märìs mäxìms ìn. Etìäm fäcìlìsìs ërs vël trtr tìncìdnt ìäclìs. Vëstìblm lrëm lëcts, psërë sëd ënìm ìn, värìs phärëträ lrëm. Mrbì nìsl läcs, ëlëìfënd t rnä vìtäë, ìntërdm cnsëqät ìpsm. Cräs t ìmpërdìët äntë. Sëd qìs lcts prs, qìs prtä ërät. Ut grävìdä grävìdä ägë ä ëìsmd.
(You can experiment with it in the Latin Wikipedia sandbox page)
This allowed to write the {{la:Sine notis diacriticis}} template, which transforms vowels with various accents into simple vowels, and the {{la:Ufrac}} template, which writes fractions using only Unicode characters (no HTML).
I think that Module:String would benefit from this function, with its name changed from abecedaria
to translit
.
Translated into English, the code to add to this module would be:
str.translit = function( frame )
local args = frame.args
if args[1] == nil or args[1] == '' or args[3] == nil or args[3] == '' then
return ''
end
local npairs
local text = mw.text.split(args[3], '', true)
local removenda = mw.text.split(args[1], '', true)
local substituenda
if args[2] ~= nil then
substituenda = mw.text.split(args[2], '', true)
else
substituenda = {}
end
if #removenda > #substituenda then
npairs = #substituenda
else
npairs = #removenda
end
for idx1 = 1, npairs do
for idx2 = 1, #text do
if text[idx2] == removenda[idx1] then
text[idx2] = substituenda[idx1]
end
end
end
for idx1 = npairs + 1, #removenda do
for idx2 = 1, #text do
if text[idx2] == removenda[idx1] then
table.remove(text, idx2)
end
end
end
return table.concat(text)
end
return str
Grufo (talk) 17:40, 21 September 2023 (UTC)
- This feels sufficiently obscure that it doesn't belong in this module, unless some actual use case can be presented here unrelated to what other wikis do. * Pppery * it has begun... 22:02, 21 September 2023 (UTC)
- What is obscure, what it does or its code? What it does is well explained by the documentation of M4's
translit
(this is just a clone). As for what can be done with it, I believe template {{la:Ufrac}} has no languages. --Grufo (talk) 01:28, 22 September 2023 (UTC)- Yes, and why should we care? Why is the Unicode system for fractions superior to the one currently in use? Why should we invent more ways to do the same thing? * Pppery * it has begun... 01:33, 22 September 2023 (UTC)
- What is obscure, what it does or its code? What it does is well explained by the documentation of M4's