Spring til indhold

Moduldiskussion:Sexagesimal

Sidens indhold er ikke tilgængeligt på andre sprog.
Fra Wikipedia, den frie encyklopædi

Svar på spørgsmål på dok-siden

[rediger kildetekst]

@AstroOgier: Hermed svar på de spørgsmål som du rejser på Modul:Sexagesimal/dok. Diskussion af moduler hører hjemme på diskussionssiden.

Ved opbygningen af FormatStr dukker der uønskede mellemrum op, som det fremgår af ovenstående testudskrifter.
Mellemrummene kommer fra variablen Decimals. Unavngivne parametre i skabeloner og moduler beholder alle foran- og efterstillede mellemrum, så når du kalder modulet som fx {{#invoke:Sexagesimal | sexagesimal | -66.416837| 1 | "DD"}} får frame.args[2] værdien " 1 ". Hvis kaldet havde været {{#invoke:Sexagesimal | sexagesimal | -66.416837|1| "DD"}}, ville der ikke være mellemrum i Decimals. Det er normalt at fjerne evt. mellemrum i parametre før brug. Funktionen mw.text.trim er velegnet til dette.
Hvordan kaldes hjælpefunktionen IntDiv i sexagesimal?
Funktionen kan kaldes ved at konstruere en struktur svarende til et frame-object, da det er hvad funktionen forventer som input-parameter, fx
p.IntDiv ( { args = { 16, 5 } } )
Det er imdilertid ikke hvad man vil gøre i praksis. Definer i stedet en lokal funktion som tager parametre på normal vis:
local function IntDiv (Nomin, Denom)
	return math.floor(Nomin/Denom)
end
og kald med
IntDiv (16, 5)
Hvorfor virker if-sætningerne ikke? Der bliver ikke divideret med 15 i linie 30. Selom Selector sættes til "DD", udføres linje 54 ikke.
if-sætningerne virker, men Selector har ikke de værdier, som der testes for jf. det første spørgsmål overfor. Når du skriver {{#invoke:Sexagesimal | sexagesimal | -66.416837| 1 | "DD"}} får Selector værdien ' "DD"'. Så brug ikke anførselstegn ved kald, og fjern foran- og efterstillede mellemrum med mw.text.trim.
Gradsymbolerne ° ’ ” virker fesne. Jeg vil gerne benytte UniCode-tegn i stedet, men er ikke lykkedes med det.
Lua-strenge kan indeholde alle Unicode-tegn i normal UTF-8 indkodning. Så bare indtast hvad du ønsker i redigeringsvinduet.
Skal der stå andet end [[Kategori:Moduler]] i nedenstående includeonly?
Nej, men du skal fjerne HTML-udkommenteringen (<!-- ... -->), så modulet rent faktisk bliver kategoriseret i Kategori:Moduler.
Jeg skrev teksten Hjælp:Lua-fejlretning i 2017 som du måske vil finde nyttig. Specielt vil jeg gøre opmærksom på funktionerne mw.log og mw.logObject som kan bruges til at se hvad forskellige variable indeholder på forskellige tidspunkter når man tester et modul med brug af forhåndsvisning.
--Kartebolle (Dipsacus fullonum) (diskussion) 15. aug. 2024, 18:05 (CEST)[svar]
@AstroOgier: Jeg vil foreslå at bruge "Forhåndsvis en side med denne skabelon" når du redigerer. Med forhåndsvisning af en side med testcases (fx Modul:Sexagesimal/dok) vil man umiddelbart kunne se at dagens redigering ikke virker. Du skal ikke ændre "DD" til DD osv. i modulet. Førstnævnte er en strengkonstant, sidstnævnte er en udefineret global variabel som har værdien nil. Det er i invoke-kaldet at du skal fjerne anførselstegnene. Parametrene i #invoke er altid strenge og omfatter alle tegn mellem de lodrette streger, inkl. evt. mellemrumstegn. Kartebolle (Dipsacus fullonum) (diskussion) 16. aug. 2024, 09:41 (CEST)[svar]
@Dipsacus fullonum Tak for de gode råd! Efter læsning af dit hjælpeindlæg Hjælp:Lua-fejlretnig er jeg kommet i tvivl om, hviken sandkasse, jeg bør bruge til afprøvninger.
Jeg forstår det sådan, at "Modul:Sexagesimal" er den "officielle" version, i hvilken den færdige kode anbringes. Men skal sandkasseversionen være hos mig som "Bruger:AstroOgier/Sandkasse/Skabelon:Sexagesimal" eller som en sandkasse under "Modul:Sexagesimal"? Når jeg i denne klikker på "kopier" føres jeg til siden "Opretter Modul:Sexagesimal/sandkasse", der indeholder en kopi. Er det den side, jeg skal eksperimentere på, den indeholder jo ikke mit brugernavn, men det skal den måske heller ikke? Ville det ikke blokere en anden bruger fra at oprette sin egen sandkasse?
Spørge- AstroOgier (diskussion) 16. aug. 2024, 10:07 (CEST)[svar]
@AstroOgier: Da modulet endnu er et helt nyt modul som ikke bruges i nogen artikler, er det ikke nødvendigt at bruge en sandkasse, da evt. fejl ikke vil forstyrre projektet. Det er først når et modul (eller skabelon) bruges i praksis i encyklopædiske artikler, at det er vigtigt at bruge sandkasser, da alle ændringer så vil påvirke artiklerne som bruger modulet. Sandkassen til modul er normalt en underside til modulet. For Modul:Sexagesimal bruges således normalt Modul:Sexagesimal/sandkasse. Kartebolle (Dipsacus fullonum) (diskussion) 16. aug. 2024, 10:17 (CEST)[svar]
@Dipsacus fullonum Godt, så står det klart for fremtidens brug: Opret først Modul:Pnyx og straks efter Modul:Pnyx/sandkasse. Bearbejd denne i ro og mag, og når man er tilfreds, så kopieres resultatet over i Modul:Pnyx.
I mellemtiden er jeg næsten tilfreds med Sexagesimal, hvor jeg også har suppleret med brugereksempler. Der er dog stadig et lille problem:
Ved decimale sekundværdier mangler et foranstående nul, når værdien er encifret: "4.567" i stedet for "04.567". For heltal klares sagen åbenbart med formatet '%02d' (selvom '%00d' forekommer mig mere naturligt). Men det virker åbenbart ikke på float-værdier, format '%02." .. Decimals .. "f'. Jeg har søgt på nettet (bl. a. https://www.lua.org/pil/20.html), men ikke fundet noget bud. Kan du fremtrylle det ekstra 0? AstroOgier (diskussion) 16. aug. 2024, 12:59 (CEST)[svar]
@AstroOgier: Længdeangivelse i en formatstreng virker også med kommatal, men angivelsen er for hele tallet inkl. decimaldelen. Så hvis heltalsdelen skal have mindst 2 cifre, skal den samlede længde af tallet være på mindst 3 plus antallet af decimaler (3 fordi decimaltegnet også medregnes i længden). Brug: derfor:
FormatStr = "%s&nbsp;%02d°&nbsp;%02d′&nbsp;%0" .. Decimals + 3 .. "." .. Decimals .. "f″"
Kartebolle (Dipsacus fullonum) (diskussion) 16. aug. 2024, 13:53 (CEST)[svar]
NB: Da længden ikke nødvendigvis en en konstant, men kan blive beregnet som i eksemplet herover, kan du sikkert se hvorfor "%02d" er mere praktisk end "%00d". Kartebolle (Dipsacus fullonum) (diskussion) 16. aug. 2024, 13:58 (CEST)[svar]
@Dipsacus fullonum Så blev jeg igen lidt klogere, og nu fungerer modulet som det var tiltænkt. Takker igen! AstroOgier (diskussion) 16. aug. 2024, 16:40 (CEST)[svar]