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 saknas
Böjningsformer bör endast skapas utifrån moduler, men det vore nog bra att fylla på med fler praktiska tips.

Information som boten måste känna till

redigera

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

redigera

Alla grammatikmoduler stödjer funktionen för att hämta böjningsformer som JSON utifrån ett mallanrop.

  1. hämta wikitext för sidan
  2. hitta alla mallanvändningar, utifrån de mallar som stöds
  3. extrahera alla böjningsformer via grammatikmodulernas exportfunktion  

Hantera funna böjningsformer

redigera

Anta 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

redigera

När man ska lägga in ett böjningsuppslag finns det flera saker som kan hända:

  1. nytt språkavsnitt på helt ny sida
  2. nytt språkavsnitt på sida endast innehållande omdirigering (tänk på alla olika varianter: #REDIRECT[[sida]], # redirect [[sida]], #OMDIRIGERING [[sida]])
  3. 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
  4. nytt ordklassavsnitt i befintligt språkavsnitt
    • placera ordklassavsnittet sist bland existerande ordklassavsnitt
  5. ny definitionsrad i befintligt ordklassavsnitt
    • placera definitionen sist bland definitionerna
  6. 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
  1. det finns inga andra definitioner på sidan
    markera sidan för manuell radering
  2. det finns inga andra definitioner i språkavsnittet
    radera språkavsnittet
  3. det finns inga andra definitioner i ordklassavsnittet
    radera ordklassavsnittet
  4. annars
    radera definitionsraden

Hitta fetstilsraden

redigera

Den 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!

  1. separera så att du bara jobbar med ett ordklassavsnitt, där underrubrikerna är borttagna också
  2. fetstilsraden börjar på '''; jobba enbart med den första rad som börjar så
    '''[[do]][[not|n't]]''' eller '''{{+arab|العربية}}''' ''(kort notis)''
  3. ta bort de inledande apostroferna, och tre ytterligare apostrofer, och alla tecken som följer de sistnämnda
    [[do]][[not|n't]] eller {{+arab|العربية}}
  4. 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")
  5. ersätt [[<några tecken>|<några andra tecken>]] med <några andra tecken>
    [[do]]n't eller العربية
  6. ta bort alla [ och ]
    don't eller العربية
  7. 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

redigera

Värdet kan antas korrekt om något av följande villkor gäller:

  1. det är identiskt med sidnamnet
  2. det är identiskt, sånär som på diakriter, dvs. om alla diakriter tas bort från sidnamnet och hittat värde är de identiska  
    Not: I nuläget verkar det som om enbart latin följer detta andra kriterium.