Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- FLCF - Fast Lightweight Compressed Files
- An creation of Redall.
- Under MIT License:
- Copyright (c) 2017 Alexis B.
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
- ]]--
- local object = {};
- function createArchive(path)
- if (fs.exists(path)) then
- error("Archive already exists.");
- return;
- elseif (fs.isDir(path)) then
- error("Given path is a directory.");
- return;
- end
- local structure = {
- type = "flcf",
- content = {},
- };
- local archive = fs.open(path, "w");
- archive.write(textutils.serialise(structure));
- archive.close();
- end
- function loadArchive(path)
- if (fs.exists(path) == false) then
- error("Archive does not exists.");
- return;
- elseif (fs.isDir(path)) then
- error("Given path is a directory.");
- return;
- end
- local archive = fs.open(path, "r");
- local files = textutils.unserialise(archive.readAll());
- archive.close();
- local usableArchive = object;
- usableArchive.archive = files;
- usableArchive.path = path;
- return usableArchive;
- end
- function object.addFile(source, dest)
- if (fs.exists(source) == false) then
- error("Source file does not exists.");
- return;
- elseif (fs.isDir(source)) then
- error("Expected file, folder given.");
- return;
- end
- local file = fs.open(source, "r");
- local content = file.readAll();
- file.close();
- local entry = {
- path = dest,
- content = content,
- }
- table.insert(object.archive.content, entry);
- end
- function object.removeFile(path)
- for id, entry in ipairs(object.archive.content) do
- if (entry.path == path) then
- table.remove(object.archive.content, id);
- return;
- end
- end
- end
- function object.extractFile(source, dest)
- for _, entry in ipairs(object.archive.content) do
- if (entry.path == path) then
- local f = fs.open(dest, "w");
- f.write(entry.content);
- f.close();
- return;
- end
- end
- end
- function object.saveArchive()
- local archive = fs.open(object.path, "w");
- archive.write(textutils.serialise(object.archive));
- archive.close();
- end
- function object.getFiles()
- return object.archive.content;
- end
- function object.getType()
- return object.archive.type;
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement