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)