Jump to content

Module talk:BaseConvert/Archive 1

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
Archive 1

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: Script error: No such module "User:DePiep/BCdemo".
  • |testBCnoglobals: Script error: No such module "User:DePiep/BCdemo".

Something I can do? I want to use the Module:No globals in top (not in functions), i.e. for the whole module. @GKFX and 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: 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: Script error: No such module "User:DePiep/BCdemo".
  • |testBCsboxnoglobals: Script error: No such module "User:DePiep/BCdemo".

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 (diff).

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)
@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)