Module talk:BaseConvert/Archive 1
{{Aan}}
convert with 'Module:No globals' error?
{{Resolved}}
I have used the code as documented (2 lines, see below). It looks like that, by adding require('Module:No globals')
, an error is triggered.
Reproduce: see :Module:User:DePiep/BCdemo:
- |testBC: {{#invoke:User:DePiep/BCdemo|testBC}}
- |testBCnoglobals: {{#invoke:User:DePiep/BCdemo|testBCnoglobals}}
Something I can do? I want to use the :Module:No globals in top (not in functions), i.e. for the whole module. {{ping|GKFX|Toohool}} DePiep (talk) 18:27, 11 April 2022 (UTC)
:@DePiep: I think you just need to precede the first two function declarations with local
(so local function ...
. User:GKFXtalk 19:14, 11 April 2022 (UTC)
::Done, see :Module:User:DePiep/BCdemo. Not solved; note that I needed public function p.xxx(). BTW, you are fee to edit in there (it's a dedicated test-demo). -DePiep (talk) 19:26, 11 April 2022 (UTC)
Got it. In Module:BaseConvert/sandbox, I have made local
three functions: [https://en.wikipedia.org/w/index.php?title=Special:ComparePages&page1=Module%3ABaseConvert&page2=Module%3ABaseConvert%2Fsandbox&diffmode=source diff]. To consider: should _convert()
be public i.e., be p._convert()
(not local
)? Depends on the frame/args handling in p.convert()
if I'm right.
:Testing Module:BaseConvert/sandbox i.c.w. Module:No globals
- |testBCsbox: {{#invoke:User:DePiep/BCdemo|testBCsbox}}
- |testBCsboxnoglobals: {{#invoke:User:DePiep/BCdemo|testBCsboxnoglobals}}
Anyway, how to arrive at an edit proposal? -DePiep (talk) 19:46, 11 April 2022 (UTC)
:Re. _convert, it has too many positional arguments to be a nice API. I would stick with convert as the public function since it takes a table which emulates named arguments. User:GKFXtalk 19:56, 11 April 2022 (UTC)
=Preparing Edit Request, tech review please=
I propose to change all code in Module:BaseConvert with code from Module:BaseConvert/sandbox ({{diffsandbox|Module:BaseConvert}}).
The issue: when Module:No globals is used per documentation, Module:BaseConvert throws an error for r/w a global variable (like "Tried to write global normalizeFullWidthChars"). This is solved by declaring all internal functions explicitly local
. There are three, see the diff; the sandbox was tested with 'No globals' too.
If no (tech) issues or questions arise, I'll make this a formal Edit Request. (32k transclusions). -DePiep (talk) 20:18, 11 April 2022 (UTC)
:There are still some globals in the sandbox. I'll fix it soon (a couple of hours from now). Johnuniq (talk) 05:34, 12 April 2022 (UTC)
::I cleaned the whitespace in both the sandbox and main modules (no trailing spaces, use tabs for indents). I also fixed the remaining globals in the sandbox and made a couple of minor tweaks. The diff with the main module is very minor and I don't think an edit request is needed. I'll watch this for a while and if you want, I'll update the main module if there are no other suggestions. Johnuniq (talk) 07:27, 12 April 2022 (UTC)
:::{{re|Johnuniq}} OK, thx. Pls proceed as you think best. -DePiep (talk) 11:18, 12 April 2022 (UTC)
::::OK, I updated the main module so it now has no globals. Johnuniq (talk) 04:59, 13 April 2022 (UTC)