Instruktioner för Swedish Inform v1.6av Fredrik Ramsberg, 2008-08-24
Observera!
Instruktionerna är uppdelade i följande avsnitt:
Om man har använt Swedish Inform tidigare är det bäst att ta en titt på vad som är nytt i denna version. 1.1 Vad är Inform?Inform är idag ett av de mest populära verktygen eller programmeringsspråken för att skriva textäventyr eller "interaktiv fiktion" i. Det har en egen hemsida på http://www.inform-fiction.org/inform6.html. (Denna sida gäller Inform 6, vilket är vad den svenska översättningen använder. Numera finns även Inform 7, men det är en helt annan sorts programmeringsspråk, och det lämpar sig inte särskilt väl för spel på andra språk än engelska). Inform är utvecklat av Graham Nelson, med det enda målet att det ska vara ett bra språk att skriva textäventyr i. För att språket inte ska sätta begränsningar för hur avancerade saker man kan ha med i sitt textäventyr, måste språket ändå i princip vara ett fullfjädrat programmeringsspråk, och det är det. Av den anledningen är det ungefär lika svårt att lära sig Inform som att lära sig t ex Basic. De goda nyheterna är att det finns gott om dokumentation, både för nybörjare och för erfarna programmerare.Informs kompilator kompilerar källkod skriven i Inform till Z-kod. Detta är programkod som bara kan köras på en virtuell maskin kallad Z-maskinen. Z-maskinen uppfanns ursprungligen av Infocom ca 1980, och användes av alla Infocoms textäventyr. Konceptet med en virtuell maskin är exakt detsamma som idag används av Java, fast där heter den JVM eller Java Virtual Machine. Finessen med Z-maskinen är att den är förhållandevis lätt att emulera, och att programkod för den är mycket kompakt. Därmed kan man skriva emulatorer för Z-maskinen för alla möjliga plattformar, och så har också skett. Det finns idag Z-kods-tolkar (emulatorer) för t ex Windows, MS-DOS, Mac, Linux, PalmOS, VMS, OS/2, BeOS, NextStep etc etc. När man har släppt ett spel i Z-kod kan vem som helst ladda ner det till sin egen dator, oberoende av operativsystem, skaffa en Z-kods-tolk och köra spelet. Som spelförfattare måste man alltså inte fundera ett ögonblick över vad spelarna kommer ha för datorer eller operativsystem - spelet kommer automatiskt att kunna spelas på 99,9% av alla datorer som finns anslutna till Internet idag. I slutet av 90-talet var det allt fler som ville ha möjlighet att gå utanför de begränsningar som Z-maskinen gav, men ändå behålla så mycket som möjligt av dess fördelar. Lösningen blev Glulx av Andrew Plotkin. Glulx är en ny virtuell maskin, som designades för att möta detta behov. Glulx stödjer sig i sin tur på ett nydesignat I/O-bibliotek för alla former av inmatning och utmatning av data och multimedia. Det heter Glk. Inform-kompilatorn kan kompilera till både Z-kod och Glulx, så det är upp till författaren att välja vilken virtuell maskin man ska använda. Så länge man inte använder grafik och ljud är det lätt att skriva Inform-kod som kan kompileras till båda dessa format. Glulx skiljer sig i stort sett från Z-maskinen på följande punkter:
Sammanfattningsvis kan sägas att om man inte tänkte visa bilder eller spela ljud så väljer man troligen Z-kod, eftersom det färdiga spelet då kan spelas på nära nog alla datorer som finns idag. Om man vill ha bilder och/eller ljud så är Glulx det bästa valet. Det mer begränsade talformatet i Z-kod upplevs ytterst sällan som ett problem för äventyrsförfattare. Vad gäller den maximala storleken på spel och det skrivbara minnet, så är det inte en begränsning man ska fästa för stor vikt vid. Skulle man mot all förmodan överskrida någon av dessa två gränser så beror det troligen på att man inte förstått hur man använder Inform effektivt, och då kan man få hjälp att banta koden utan att ändra själva spelet, eller också har man verkligen skrivit ett helt gigantiskt spel, och då är det inget stort arbete att skifta till Glulx när man når gränsen. De allra flesta Z-kods-spel som släpps är mindre än 256KB, och redan att skriva ett bra spel i den storleken är ett stort arbete. Den maximala storleken på det skrivbara minnet (RAM - Random Access Memory) är sällan något problem heller. Alla strängar och rutiner som man skriver i programkoden lagras i ROM (Read Only Memory, dvs minne som endast kan läsas), och de utgör tillsammans den allra största delen av ett spel. Z-maskinen designades med minne uppdelat i RAM och ROM bl a för att det hjälper till att göra Z-kods-formatet så kompakt.
1.2 Innehållsöversikt - stora distributionenFör en komplett förteckning över de filer som ingår i den stora distributionen, se filen Filelist.html. Här nedan följer en översikt av de bibliotek som ingår:
1.3 Skillnader mellan det svenska och engelska biblioteketDet allra mesta är sig likt, så dessa instruktioner behandlar endast det som fungerar annorlunda jämfört med att skriva spel med den engelska versionen (dvs originalversionen) av biblioteket. Enkelt uttryckt är det bara inmatning av text samt utmatning av text som skiljer sig. Världsmodellen, och därmed det mesta som rör programmeringen, ligger fast. Det som skiljer sig vad gäller inmatning och utmatning av text kan delas upp i följande punkter:
1.4 Kompletterande litteraturDe som aldrig har programmerat innan rekommenderas att börja med att läsa The Inform Beginner's Guide, ofta kallad IBG - en pedagogisk introduktion till Inform som börjar från absoluta början.Om man har någon erfarenhet av programmering och tycker det är enklast att lära sig med exempel, kan man prova att gå igenom programmeringshandledningen Hus, som finns med i stora distributionen. Se stycke 1.5 nedan. Graham Nelson, som har gjort Inform, har även dokumenterat det grundligt, och resultatet är den ganska digra volymen The Inform Designer's Manual, 4th Edition, ofta kallad DM4. DM4 är gjord för att läsas från pärm till pärm, och den är inte direkt tungläst. Innehållsförteckningen och index-delen samt det faktum att det är den mest kompletta dokumentationen av Inform gör att den även är det viktigaste referensverket. Många har lärt sig Inform genom att bara läsa DM4. Den svenska dokumentationen är mycket liten jämfört med IBG och DM4. Min rekommendation är att först läsa en eller båda av dessa och försöka göra ett litet testspel på engelska, för att lära sig grunderna i det engelska biblioteket. När man kan det, läser man avsnittet om programmering i detta dokument, och det kapitlet kommer då förhoppningsvis upplevas som lättsmält och logiskt. Om man läser det utan att kunna något om Inform kan det däremot säkert upplevas som ganska kryptiskt. För mer detaljerade läsråd vad gäller IBG och DM4, se Roger Firth's Inform FAQ. Både IBG och DM4 finns tillgängliga på: http://www.inform-fiction.org/manual/
I skrivande stund är DM4 inte uppdaterad för att innefatta de små men viktiga förändringar och förbättringar som Inform v6.30 och Informbiblioteket v 6/11 innebär. För att få ett grepp om dessa förändringar kan det vara bra att även läsa Release Notes för Inform 6.3 (ett annat namn på Inform 6.30), som kan hämtas från: http://www.ifarchive.org/indexes/if-archiveXinfocomXcompilersXinform6.html Om man vill använda grafik och ljud i sitt spel vill man troligen kompilera till Glulx istället för Z-kod. Förutom de tidigare nämnda länkarna till Inform-dokumentation kan man behöva lite dokumentation om hur man inkluderar grafik och ljud i Glulx-spel, samt vad som faktiskt skiljer Glulx från Z-kod. Här finns en del information:
Om man får problem med Inform-programmering i allmänhet kan man vända sig till Usenet-gruppen rec.arts.int-fiction, vilken t ex kan nås på: http://groups.google.com/group/rec.arts.int-fiction Om man har problem med att förstå eller använda den svenska översättningen av biblioteket, går det bra att maila mig på adressen nedan. Man kan även gå med i mailinglistan för alla som är intresserade av att skriva textäventyr på svenska, vilken även fungerar som support för Swedish Inform, och där nya versioner av Swedish Inform påannonseras: http://groups.yahoo.com/group/skriva_textaventyr/ Det finns mycket skrivet om hur man bygger upp ett textäventyr på ett bra sätt, dels sådant som fokuserar på tekniken, men även sådant som helt lämnar de tekniska bitarna. Några bra ställen att börja på är t ex:
http://www.brasslantern.org/writers/ Buggrapporter och tips om förbättringar för det svenska biblioteket är givetvis också alltid välkomna. Det vore också roligt att bara få höra om biblioteket kommer till användning, och kanske höra om vilka spel som är under utveckling eller som har släppts. Även rapporter om vilka kompilatorer och tolkar som fungerar bra eller mindre bra med svenska tecken är mycket intressanta, för att jag ska kunna bygga upp en så komplett lista som möjligt på hemsidan för Swedish Inform. Tveka inte att skicka ett mail till:
1.5 Programmeringshandledningen HusMed i Swedish Inform finns även en programmeringshandledning kallad Hus. Den är tänkt som ett enkelt sätt att komma in i Inform-programmering för personer med någon tidigare erfarenhet av programmering. Hus är ett enkelt textäventyr som byggs ut steg för steg i åtta delar. Ladda in hus1.inf, läs igenom källkoden och alla kommentarer, och kompilera det sedan till en z5-fil eller ulx-fil som du sedan kan provköra. Självklart kan det vara en god idé att göra en kopia av källkodsfilen och göra små förändringar för att se om man förstått rätt. Gå sedan vidare med hus2.inf och så vidare upp till hus8.inf. Varje del har rikliga kommentarer om allt som är nytt.
2. KOMPILERINGDen här avdelningen handlar om hur man kompilerar, och till viss del hur man spelar, spel utvecklade med Swedish Inform.2.1 PlattformDetta paket i allmänhet och dessa instruktioner i synnerhet är i första hand utformade för Windows-användare. Detta är bara av praktiska skäl, grundat på att de allra flesta idag använder Windows. Biblioteket i sig är plattformsoberoende och kan med lika gott resultat användas på en rad andra plattformar. För att kompilera på en annan plattform måste man ha Inform- kompilatorn för den plattformen. Den finns att ladda ner för alla populära plattformar. För att spela de färdiga spelen behöver man en tolk, dvs ett program som läser spelfilen och visar spelet för spelaren. Spelfilen är helt plattformsoberoende, medan man måste ha en tolk som är skriven för ens egen plattform. Dessa tolkar finns i många varianter för mängder av olika plattformar. Information om alla de tekniker som används av Swedish Inform finns samlat på:Alla tillgängliga distributioner av kompilatorn finns i regel på: http://www.ifarchive.org/indexes/if-archiveXinfocomXcompilersXinform6Xexecutables.html De flesta tolkar för Z-kod finns samlade på:
http://www.ifarchive.org/indexes/if-archiveXinfocomXinterpreters.html
Tolkar för Glulx kan hämtas från: http://www.ifarchive.org/indexes/if-archiveXprogrammingXglulxXinterpreters.html
2.2 AnvändningFör att kompilera ett spel med detta bibliotek måste man bara tänka på att ange för kompilatorn att man vill använda den svenska språkfilen, samt se till att själv inkludera de tre övriga filerna som ingår i biblioteket på rätt ställe i sin källkod. Att hänvisa till den svenska språkfilen gör man smidigast genom att som första rad i programmet skriva:!% +language_name=SwedishFör att kompilera med Inform till Z-kod skriver man typiskt: C:\Inform\Swedish\Bin\inform +C:\Inform\Swedish\Lib611 -C1 spelnamn
Det ovanstående skrives som en rad vid kommandoprompten. Byt först ut C:\Inform\Swedish mot det ställe på hårddisken där du har packat upp detta
paket, och byt ut spelnamn mot namnet på din inf-fil.
För att se i vilken ordning man ska inkludera de olika filerna, läs filen bas.inf, vilken innehåller ett fullt kompilerbart kodskelett för ett spel på svenska. Att kompilera ett Glulx-spel är något mer komplicerat, i alla fall om det ska innehålla multimediaresurser och ska paketeras som en Blorb-fil (.blb). Studera exempelspelet Drakmagi närmare för att se hur det går till om man använder det medskickade paketet iBlorb av L. Ross Raszewski. Det finns även dokumentation om iBlorb.
2.3 ExempelMed detta bibliotek följer fyra kompilerbara filer:
bas.infFör att kompilera: Ställ dig i den katalog där du packat upp detta paket. Skriv sedan:bin\inform +Lib611 -C1 bas
test1.infFör att kompilera: Gå in i katalogen Test1. Körmaketest.bat .
Detta kompilerar spelet till både Z-kod (test1.z5) och Glulx (test1.ulx).
manteln.infFör att kompilera: Gå in i katalogen Manteln. Körmakemanteln.bat .
Detta kompilerar spelet till både Z-kod (manteln.z5) och Glulx (manteln.ulx).
drakmagi.infDetta spel är skrivet för att kunna kompileras antingen till Z-kod eller till Glulx, med en del grafik vid vid kompilering till Glulx.
För att kompilera till Z-kod: Gå in i katalogen Drakmagi. Kör
För att kompilera till Glulx: Gå in i katalogen Drakmagi. Kör Gcompile.bat .
3.1 GenusSvenskan har fyra genus: maskulinum, femininum, neutrum och reale. I biblioteket heter de male, female, neuter och uter. Objekt som har animate-attributet antas vara male om man inte har givit dem något annat genus. Övriga objekt antas vara uter om man inte givit dem något genus. Om man vill vara säker på att ett visst objekt har något genus satt, så måste man köra rutinen SetGender(obj) först. Därefter har objektet garanterat minst ett av genus-attributen satt. SetGender undersöker om objektet har något genus. Om det inte har det, så får det genuset male om det har attributet animate, och annars får det genuset uter.Man kan även använda SetGender för att byta genus på ett objekt. SetGender(obj, neuter) gör t ex att objektet obj får genuset neuter, och tappar det eller de genus det tidigare eventuellt hade. Ett objekt kan ha två genus samtidigt. Detta är bl a tänkt att användas för objekt som är maskulina eller feminina, men ändå ska behandlas som neutrum vid utskrifter. Exempel på sådana objekt kan vara "hondjuret", "det glada lejonet" och liknande. Dubbla genus påverkar även vilka personliga pronomen spelaren kan använda för att referera till objektet. Om man t ex har en kvinnlig drake i sitt spel kan man ge den både female och uter, för att spelaren ska kunna skriva antingen "undersök draken. slå på den." eller "undersök draken. slå på henne.". Objektet ges två genus genom att man helt enkelt sätter två av genusattributen för objektet.
3.2 NamnutskriftDet system som finns för att skriva ut artiklar och namn på objekt i originalbiblioteket visar sig snabbt bli både osmidigt och otillräckligt för svenska. Därför har detta system omarbetats en del.Här följer en lista av alla de properties och attribut som generellt påverkar hur ett objekts namn skrivs ut. Observera att de properties som används i speciella situationer i standardbiblioteket fortfarande kan användas, såsom invent, when_on, when_open osv.
Properties som påverkar artikeln
Attribut som påverkar artikeln
Properties som påverkar namnet
Attribut som påverkar namnet(finns inga)
Hur ett objekt skrivs utNär namnet på ett objekt ska skrivas ut används, i prioriteringsordning:
Om en av ovanstående properties innehåller en sträng, skrivs den ut. Om den innehåller en rutin, körs den. Om rutinen vill tala om för biblioteket att den har skrivit ut namnet, ska den returnera true. Annars fortsätter biblioteket till nästa punkt i listan ovan. Ett stycke ner i detta kaptiel följer en uppsättning vettiga exempel som troligen är det bästa sättet att lära sig använda systemet. Titta även på källkoden till exempelspelen för att se hur det fungerar. En mer exakt beskrivning av hur objekt skrivs ut finns i Appendix A. Denna beskrivning kan vara bra att ha när man är i behov av ett särskilt komplicerat objektnamn, eller när man behöver felsöka ett objekt som inte uppträder som väntat.
Bestämd artikel och stor bokstavI svenskan skrivs ingen bestämd artikel ut före ett objektnamn, om namnet inte föregås av ett eller flera adjektiv (jmf "bollen" resp "den stora bollen"). Biblioteket utgår ifrån att endast objekt som har attributet def_article ska ha artikel i bestämd form. Objekt som har attributet proper skrivs aldrig med artikel före, varken i bestämd eller obestämd form. Detta används främst för personnamn.Om man skriver ut ett objekt med utskriftsdirektivet (A) eller (The) så skrivs artikeln ut med stor bokstav. Om ingen artikel ska skrivas ut, blir det istället första bokstaven i objektets namn som blir stor. Om man vill hindra biblioteket från att skriva ut objektnamnet med stor bokstav, måste objektet ha en namnutskriftsrutin (short_name, short_name_indef, short_name_def). I den rutinen kan man detektera att biblioteket tänker sätta stor bokstav på namnet genom att testa om caps_mode har värdet true eller false. Man kan förhindra att första bokstaven blir stor genom att sätta caps_mode till false i denna rutin. Exempel:
Object rymdman "ooga-boo" with name 'rymdman' 'ooga-boo', short_name [; caps_mode = false; ], has animate proper; Exempel på ett helt vanligt objekt som låter biblioteket styra när det ska vara stor bokstav:
Object Boll "boll" with name 'boll' 'bollen', short_name_def "bollen"; Detta objekt kan nu skrivas ut i följande former:
print (name) Boll; ! skriver ut "boll" print (a) Boll; ! skriver ut "en boll" print (A) Boll; ! skriver ut "En boll" print (the) Boll; ! skriver ut "bollen" print (The) Boll; ! skriver ut "Bollen"
3.3 Utskrift av personliga pronomenOm man behöver skriva ut ett personligt pronomen eller liknande, finns följande utskriftsdirektiv att tillgå (med exempel på utskrift för olika objekt):
bord stol Gunnar Eva träden print (CDenEllerHan) obj; Det Den Han Hon De print (DenEllerHan) obj; det den han hon de print (CDenEllerHonom) obj; Det Den Honom Henne Dem print (DenEllerHonom) obj; det den honom henne demExempel på användning av personliga pronomen: Object drake "drake" with name 'drake' 'draken', short_name_def "draken", life [; Give: remove noun; ! Ta bort objektet från spelet "Draken kastar en slö blick på ", (the) noun, " innan hon kastar in ",(DenEllerHonom) noun, " i sitt enorma gap och sväljer. ~", (CDenEllerHan), " smakade inte dumt!~, tillägger hon."; ], has animate female uter;
3.4 Utskrift av talFör att skriva ut tal med bokstäver använder man rutinen SwedishNumber:SwedishNumber(n, force_neuter_1, obj, gender); Det finns i princip tre sätt att anropa SwedishNumber:
Om man anropar SwedishNumber(n), alltså med bara det första argumentet angivet, fungerar det som fall 2b ovan.
3.5 Debug-verbDe debug-verb som finns i det engelska biblioteket har lämnats oöversatta i den svenska översättningen. De heter alltså precis som i det engelska biblioteket, och fungerar likadant. Det finns även ett debug-verb som inte nämns i DM4, nämligen "glklist", vilket ger en lista av alla Glkobjekt i ett Glulx-spel.Det har även tillkommit ett helt nytt debug-verb: "örnkolla" - det går igenom alla objekt och letar efter sådant som troligen är missar från programmerarens sida. Bl a testar det att alla ord som används i namnen för objekt också finns med som synonymer (name-propertyn). Använd "örnkolla" när du har lagt till nya objekt eller ändrat i existerande. Om den rapporterar några objekt som verkar konstiga kan de behöva mer testande. Det viktigaste sättet att använda örnkolla är att bara skriva "örnkolla". Då går rutinen igenom alla objekt i spelet, sorterar bort de objekt som det verkar som att spelaren inte ska kunna referera till, och kollar efter symptom på misstag i de resterande. De objekt som sorteras bort är framför allt rum. Man kan även skriva "örnkolla vilka". Då listar rutinen alla objekt, och markerar vilka som sorteras bort av den automatiska kollen. Om man nu ser att rutinen gör ett misstag - att ett objekt som borde kollas faktiskt sorteras bort, då kan man skriva "örnkolla [objektnamn]" alternativt "örnkolla [objektnummer]". Objektnumret för alla objekt kan man se när man skriver "örnkolla vilka". Ser man t ex att man har en fackla som inte kollas, och den har objektnummer 32, så kan man skriva antingen "örnkolla fackla" eller "örnkolla 32", så kollas endast detta objekt.
4.1 KompatibilitetDenna version av Swedish Inform är gjord för att användas tillsammans med Informkompilatorn v6.31 och Inform-biblioteket v6/11. Den fungerar även med v 6.30 av kompilatorn, och har goda chanser att fungera med senare versioner av både kompilatorn och biblioteket, så länge huvudversionsnumret fortfarande är 6. Det fungerar inte med tidigare versioner varken av kompilatorn eller biblioteket. Det finns i nuläget inga planer på att stödja Inform 7.
Ingen modulkompileringInformkompilatorn stödjer något som kallas modulkompilering, men den funktionen är inte kompatibel med Swedish Inform. Modulkompilering är en teknik som ska förkorta kompileringstiden, men den innebär samtidigt vissa begränsningar, och valfri PC är idag så snabb att modulkompilering helt har spelat ut sin roll.
Svenska tecken i speltolkarSpelen man skriver kan kompileras till två olika spelformat: Glulx och Z-kod. I princip ska man sedan kunna spela spelen med valfri tolk för respektive format. Man måste tyvärr notera att en del tolkar inte stödjer utskrift och/eller inmatning av svenska tecken. Några som klarar det galant är t ex Windows Frotz och Frotz 2.43 för Linux. Glulx-tolkar har bättre chanser att acceptera svenska tecken än Z-kods-tolkar, men för vissa plattformar där teckenuppsättningen ISO 8859-1 (även kallad Latin-1) ännu är ett okänt fenomen, som t ex MS-DOS, kan det fortfarande bli problem. Exempelspelet Drakmagi är testat med WinGlulxe, och det fungerar problemfritt. Notera även att spelaren kan skriva kommandot "transkription" vid prompten och därefter använda "aa" istället för å, "ae" istället för ä samt "oe" istället för ö, som t ex i "maala roeret med faergen". Detta fungerar i både Glulx och Z-kod, och är gjort för att hjälpa spelare som antingen har en dålig tolk, eller saknar svenskt tangentbord.För den senaste informationen om rekommenderade kompilatordistributioner och tolkar, besök hemsidan på http://swedish.ramsberg.net
Svenska tecken på MacintoshInform-kompilatorn finns att ladda ner även för Mac. Problemet är att Mac använder en annan teckenkodning än resten av världen. De använder samma system som alla andra för de 128 första teckenkoderna, vilket bland annat täcker in alla tecken som behövs i engelskan, men sedan blir det helt annorlunda. Därför måste man göra sök-och-ersätt i alla källkodsfiler som innehåller svenska tecken och byta ut dem mot escape-koder som baserar sig på vanliga engelska tecken och därmed fungerar även på Mac. De goda nyheterna är dock att om man väl lyckas kompilera spel med svenska tecken i på en Mac, och de fungerar bra i en speltolk för Mac, då kan man vara 99% säker på att de fungerar bra på alla andra plattformar också. Detta beror på att kompilatorn producerar plattformsoberoende spelfiler.Här är de filer som måste genomsökas: Drakmagi/drakmagi.inf Drakmagi/magic.inf Lib611/SweAlpha.h Lib611/Swedish.h Lib611/SwedishG.h Lib611/SweRout.h Manteln/manteln.inf Test1/test1.infHär är de tecken som måste bytas ut: å mot @oa ä mot @:a ö mot @:o é mot @'e Å mot @oA Ä mot @:A Ö mot @:O 4.2 TackEtt stort tack går till Johan Berntsson för hans arbete med betatestning, införandet av Glulx-kompatibilitet, samt skrivandet av det första riktiga spelet som använder Swedish-paketet och vänligheten att tillåta fri distribution av källkoden till det. Ett annat tack går till Fredrik Vuorela för hjälp med förbättring av dokumentationen. Tack även till Tomas Öberg som översatt programmeringshandledningen Hus från engelska till svenska.Tack även till Graham Nelson, Andrew Plotkin, John Cater och L. Ross Raszewski för deras arbete med att utveckla de verktyg som distribueras med detta bibliotek. Slutligen ett tack till de som gjort och fortsättningsvis gör ansträngningar för att Inform, Z-kod och Glulx-kod ska fungera fullt ut med svenska tecken. Till dessa hör bl a Rikard Peterson, Kirk Klobe och Kevin Bracey. Del A: Förberedelser 1. Sätt indef_mode=true om namnet ska skrivas ut i obestämd form, annars false 2. Sätt caps_mode=true om namnet ska skrivas ut med stor bokstav, annars false Del B: Artikelutskrift 3. Om objektet har 'proper', hoppa till 7. 4. Om objektet definierar 'articles': 4.1 Om det är en array, hämta articles-->0, 1 eller 2, beroende på värdena på indef_mode och caps_mode. 4.1.1 Om värdet är en sträng, skriv ut den, följd av ett mellanslag. 4.1.2 Varken värdet är en sträng eller inte, hoppa till 7. 4.2 Om det är en sträng, skriv ut den, följd av ett mellanslag och hoppa till 7. 4.3 Om det är en rutin, kör den. 4.3.1 Om den returnerar true, skriv ut ett mellanslag. 4.3.2 Vad den än returnerade, hoppa till 7. 5. Om indef_mode==false och objektet inte har 'def_article', hoppa till 7. 6. Skriv ut objektets default-artikel ("en", "ett", "den", "det", "några", "de", eller ingenting.), följt av ett mellanslag om något skrevs ut. Del C: Namnutskrift 7. Om objektet definierar 'short_name_indef' respektive 'short_name_def': 7.1 Om det är en sträng, skriv ut den. 7.2 Om det är en rutin, kör den. Om den returnerar false, hoppa till 8. 7.3 Hoppa till 10. 8. Om objektet definierar 'short_name': 8.1 Om det är en sträng, skriv ut den. 8.2 Om det är en rutin, kör den. 8.2.1 Om den returnerar false, hoppa till 9. 8.3 Hoppa till 10. 9. Skriv ut objektets namnsträng. Del D: Efterarbete 10. Om caps_mode sattes till värdet true från början, och det fortfarande har värdet true: Gör första bokstaven (i artikeln eller namnet) stor. 11. Återställ de ursprungliga värdena på indef_mode och caps_modeDå ett objekt ska skrivas ut i infinitivform sätts caps_mode=false och indef_mode=NULL. Därefter börjar namnutskriften direkt på punkt 7 ovan.
© Fredrik Ramsberg, Detta paket får i stort sett användas och spridas fritt. Se separat licens. |