חזור לתיקייה: files

TextFile

חיפוש בתיקיה
Ctrl K
לחץ כאן או הקש Ctrl K כדי לחפש בכל התיקיה

    TextFile

    02340124

    מבוא לתכנות מערכות

    רשימות הרצאה לקריאה בשבת

    TextFile

    הופק מתוך תקיית התואר של שקד

    uni-folder.vercel.app

    textfile.cpp

    הערה (קובץ קוד)

    קובץ זה הוא קובץ קוד מסוג CPP.

    #include "TextFile.h"
    
    #include "Utilities.h"
    #include "SearchAction.h"
    
    #include <stdexcept>
    
    #include "ReadAction.h"
    #include "WriteAction.h"
    
    TextFile::TextFile(const std::string &name, Directory* parent)
        : File(name, parent), lines(std::vector<std::string>()) {
    }
    
    File& TextFile::operator[](std::list<std::string> path) {
        if (!path.empty()) {
            throw std::runtime_error(Utilities::FileNotFoundMsg());
        }
    
        return *this;
    }
    
    const File& TextFile::operator[](std::list<std::string> path) const {
        if (!path.empty()) {
            throw std::runtime_error(Utilities::FileNotFoundMsg());
        }
    
        return *this;
    }
    
    std::unique_ptr<Action> TextFile::CreateReadAction(ReadRequest& request) const {
        return std::unique_ptr<Action>(
            new ReadAction(request.hostPath, lines, request.isCout)
        );
    }
    
    std::unique_ptr<Action> TextFile::CreateWriteAction(WriteRequest& request) {
        return std::unique_ptr<Action>(
            new WriteAction(*this, request.linesVector)
        );
    }
    
    std::unique_ptr<Action> TextFile::CreateSearchAction(SearchRequest &request) const
    {
        auto linesContainingTerm = getLinesInFile(request.searchTerm);
        if (!linesContainingTerm.empty())
        {
            if (request.comesFromCreateSearchAction)
            {
                request.printingVector.push_back(request.pathFromLocation + "/" + getName());
                return nullptr;
            }
    
            return std::unique_ptr<Action>(
                new SearchAction(linesContainingTerm)
            );
        }
    
        return request.comesFromCreateSearchAction
            ? nullptr // we don't care if not found in directory recursive search.
            : std::unique_ptr<Action>(new SearchAction(std::vector<std::string>()));
    }
    
    void TextFile::addFileText(const std::vector<std::string>& fileContent) {
        lines.insert(lines.end(), fileContent.begin(), fileContent.end());
    }
    
    
    std::vector<std::string> TextFile::getLinesInFile(const std::string& wordToSearch) const
    {
        std::vector<std::string> result;
    
        for (const std::string& line : lines) {
            if (line.find(wordToSearch) != std::string::npos) {
                result.push_back(line);
            }
        }
    
        return result;
    }