dojo2

1 Uppgift

1.1 Om något är otydligt

I den mån följande beskrivning saknar information är det upp till dojon att gemensamt hitta bra lösningar.

1.2 Dojon ska lösa följande upgift

Vi ska göra ett program z_fileformat.py med funktioner som arbetar på texten i en textfil på diverse olika sätt. Textformatet Z är tänkt för att hantera t ex README-filer på ett ”intelligent” sätt. Vi ska här göra funktioner som manipulerar och extraherar information från en sådan fil. Samtliga gjorda funktioner ska testas genom att testkod skrivs som använder en lämplig testfil.

1.3 Gör följande funktioner:

1.3.1 Funktion 1

Rader som börjar med # är metakommentarer. Tex:

# code: UTF-8 

kan vara en metakommentar om vilken typ av tecken som finns i filen. Gör enfunktion som returnerar en lista där alla rader som börjar med # har filtrerats bort. Börja med att göra pseudokod för lösningen.

1.3.2 Funktion 2

Segment som börjar med TODO och slutar med END-TODO innehåller listor av TODO-enheter. Varje enhet börjar med tecknet '*' början av raden och är en rad lång. TODO och END-TODO kan stå var som helst på en rad. Gör en funktion som returnerar en lista av alla TODO-enheter som en lista av strängar. Börja med att göra pseudokod för lösningen. En TODO-enhet kan exempelvis se ut så här:

TODO
*This is something i need to do
This is something i do not need to do
END-TODO

1.3.3 Funktion 3

Nyckelord med speciell betydelse märks upp med ** före och efter ordet. T ex **java**. Gör en funktion som returnerar en lista med alla nyckelord och antalet gånger de förekommer. Ni kan med fördel spara nyckelorden tillsammans med antalet gånger de förekommer i form av tupler i listan. T ex [('Emacs', 4), ('Python, 2'), ('Java', 1)] ska returneras om antalet förekomster av nyckelordet Emacs förekommer 4 gånger, Python 2 gånger och Java 1 gång.

1.3.4 Funktion 4

Baserat på funktionerna i 1-3 ska vi nu göra en funktion som skapar ett s k Z-metadokument som innehåller all information som kan extraheras med hjälp av Z-formatets övriga funktioner. Z-metadokumentet ska även innehålla filnamnet på originaldokumentet. Z-metadokument ska alltså innehålla information om vilka TODO-segment som förekommer i originaldokumentet samt nyckelord och antalet förekomster. Hitta på ett lämpligt format som a) är läsbart och b) kan läsas in igen av programmet.

1.3.5 Funktion 5

Gör en funktion som kan läsa in ett Z-metadokument och översätta dessa metadata till lämpliga datastrukturer.

1.3.6 Funktion 6

Gör en funktion som läser in en samling Z-metadokument och översätter till lämplig datastruktur.

1.3.7 Funktion 7

Gör en sökfunktion som givet en samling inlästa Z-metadokument tillåter sökning baserat på kommentarer, TODO-enhet och nyckelord. Funktionen ska returnera objektstrukturerna för de Z-metadokument som matchar sökvillkoret.

Date: 2022-09-01T09:52+0200

Author: Pontus Haglund

Org version 7.9.3f with Emacs version 24

Validate XHTML 1.0