Wiktionary:Stilguide/Grammatik/Böjningsformer/Guide för botmakare
Den här sidan är tänkt som guide för dem som vill skriva en bot för att skapa böjningsuppslag för svenskspråkiga Wiktionary. Det går att skriva den på andra sätt, men förhoppningen är att denna sida ska presentera det tydligaste, mest korrekta.
Information som boten måste känna till
redigera- Lista över tillåtna grammatikmoduler och mallar
- I nuläget endast Modul:sv-adj och Modul:gl-subst
- Lista över alla språk och motsvarande språkkoder: Modul:lang/data (exportera med Modul:export-data)
- Lista över H3-rubriker och motsvarande förkortningar: Modul:h3/data (exportera med Modul:export-data)
Bra verktyg att ha
redigera- XML-parser - det är bra om språket som boten skrivs i har en XML-parser. En SAX-parser bör räcka.
- Regexp - främst för att tolka wikikoden på en sida, t.ex. för att hitta fetstilsraden.
Hitta böjningsformer på huvuduppslagets sida
redigeraAlla grammatikmoduler stödjer funktionen för att hämta böjningsformer som JSON utifrån ett mallanrop.
- hämta wikitext för sidan
- hitta alla mallanvändningar, utifrån de mallar som stöds
- extrahera alla böjningsformer via grammatikmodulernas exportfunktion
Hantera funna böjningsformer
redigeraAnta att du nu har en lång lista över böjningsformer som ska existera. Skapa också en lista över de böjningsformsuppslag som finns (beskrivs inte här), och du kommer märka att vissa böjningsuppslag behöver skapas, andra raderas, och säkerligen finns det några som behöver uppdateras.
Skapa böjningsuppslag
redigeraNär man ska lägga in ett böjningsuppslag finns det flera saker som kan hända:
- nytt språkavsnitt på helt ny sida
- nytt språkavsnitt på sida endast innehållande omdirigering (tänk på alla olika varianter:
#REDIRECT[[sida]]
,# redirect [[sida]]
,#OMDIRIGERING [[sida]]
)- ändra omdirigeringen till
{{se även}}
- ändra omdirigeringen till
- nytt språkavsnitt på befintlig sida
- ändra
{{inget uppslag}}
till{{se även}}
- placera språkavsnittet med svenska först, resterande språk sorterade i bokstavsordning efter språknamnet
- ändra
- nytt ordklassavsnitt i befintligt språkavsnitt
- placera ordklassavsnittet sist bland existerande ordklassavsnitt
- ny definitionsrad i befintligt ordklassavsnitt
- placera definitionen sist bland definitionerna
- inte göra något alls, om definitionsraden redan finns
För punkterna 1-4 måste en fetstilsrad skapas (annars behålls den som den är). Den skapas på samma form som fetstilsraden för motsvarande huvuduppslag. Den hittas enligt algoritmen nedan. Dvs:
'''exempel''' {{n}}
→'''exemplet'''
'''{{+arab|exempel}}''' {{n}}
→'''{{+arab|exemplet}}'''
Frivilligt, men bra att göra:
- se till att det inte finns någon böjningsformsrad innehållande
{{tagg}}
, eller annan text än just mallen
Radera böjningsuppslag
redigera- det finns inga andra definitioner på sidan
- markera sidan för manuell radering
- det finns inga andra definitioner i språkavsnittet
- radera språkavsnittet
- det finns inga andra definitioner i ordklassavsnittet
- radera ordklassavsnittet
- annars
- radera definitionsraden
Hitta fetstilsraden
redigeraDen här algoritmen går ut på att få fram texten i fetstilsraden. Om fetstilsrad inte hittas måste den markeras för manuell granskning och strunta i övriga uppgifter för sidan!
- separera så att du bara jobbar med ett ordklassavsnitt, där underrubrikerna är borttagna också
- fetstilsraden börjar på
'''
; jobba enbart med den första rad som börjar så'''[[do]][[not|n't]]'''
eller'''{{+arab|العربية}}''' ''(kort notis)''
- ta bort de inledande apostroferna, och tre ytterligare apostrofer, och alla tecken som följer de sistnämnda
[[do]][[not|n't]]
eller{{+arab|العربية}}
- om raden nu börjar på
{{+
kan du om du behöver, notera vilken typ av fetstilsrad det är; om den börjar på{{+
: ta bort inledande tecken fram till första|
, och de sista två}}
[[do]][[not|n't]]
ellerالعربية
(typ: "normal" resp. "+arab")
- ersätt
[[<några tecken>|<några andra tecken>]]
med<några andra tecken>
[[do]]n't
ellerالعربية
- ta bort alla
[
och]
don't
ellerالعربية
- du har nu hittat texten för fetstilsraden!
Not: Om du vill vara bakåtkompatibel kan du också matcha tomma rader som bara innehåller sidnamnet.
Validering av hittat värde
redigeraVärdet kan antas korrekt om något av följande villkor gäller: