Определен набор от инструкции се използват за да се навигира във симулираната файлова система. Реализирани са и команди за добавяне,премахване на папки и файлове, както и преглеждане и променяне на съдържанието на файлове.
data FileSystem x = Folder x [(x,x)] [FileSystem x]
Структурата FileSystem
е дърво с произволен брой върхове като всеки връх преставлява папка като:
x
- името на папката[(x,x)]
- лист от tuples на съдържащите се файловете[FileSystem x]
- лист отFileSystem
getFiles
- връща лист от tuples като първия елемент е името а втория съдържаниетоgetFilesNames
- връща лист от имената на файловете в дадена директорияgetName
- връща името на дадена директорияgetSubFoldersList
- връща лист от папките в дадена директорияgetSubFoldersNames
- връща лист от имената на папките в дадена директорияgetContent
- връща съдържанието (тоест лист имената на файловете и папките) в дадена директория
rmFromTree
- Връща се папка в която са премахнати изредените в line файлове и папки
compareFold
иcompareFolders
- се използват за да сравняват папки по всички елемнти в тях и в случай на пълна идентичност се водят за еквивалентни.buildFileSys
иbuildDirectory
- използва се за да се построи дърво като се подава директория и тя се замества с идентичната и
mkdir
- връща се папка с подаденото име
findFolder
- подава се лист с имена на папки като се преминава през него и се търси къде се намира тази папкаsplitToList
- според подаден параметър разделя стринг в лист от отделните имена на папки или файловеcd
- използва се при навигиране през папкитеls
- използва се за да видим съдържанието на дадена папкаextendedls
- подобно на ls но се използва при подаване на лист от папки в който взимаме последната директория и проверяваме какво всъщност се съдържа тамpathDo
- взимаме стринг от директории и ги съединяваме като ползваме intersperse (от Data.List) добавяйки "/" между тях и ги конкатенираме в стринг
Тук въвеждаме line от конзолата и проверяваме чрез if else клаузи стойноста проверяваме какво иска потребителя да изпълни. Това което можем да въведем от конзолата е:
exit
- затваряме пограматаls
- прегреждаме съдържанието на една папка или нейните subFolderscd
- навигираме във файловата системаrm
- премахване на файлdirname
- получаваме името на текущата директорияpwd
- получаваме пълния път от началната директория до крайнатаmkdir
- създаване на папка чрезbuildDirectory
cat > *името на файла*
- въвеждаме името на файла след което пишем текста който искаме добавим до срещане на нов редcat
- получаваме съдържанието на файлаtouch
- въвеждаме името на файла който искаме да създадем
Съдържа looper функцията
Реализацията покрива почти всички базови изисквания, остава да се реализират функциията за конкатенация на файлове