Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

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)