easyVim  1.0
a simple vim-like text editor
core.hpp
Go to the documentation of this file.
1 
8 #ifndef EASYVIM_CORE_HPP
9 #define EASYVIM_CORE_HPP
10 #include <vector>
11 #include <utility>
12 #include <string>
13 #include <fstream>
14 
15 namespace ev {
16 
23 class EVFile{
24 public:
25 
27  EVFILE_OK = 0,
34 
40 
42 
43  };
44  EVFile(const std::string fileName) : fileName(fileName){
45  hasChange = false;
46  start = 0;
47  offset = 0;
48  hasCopy = false;
49  }
50  ~EVFile();
51 
57 
63 
69  EVFileStatus saveFileAs(const std::string& newFilePath);
70 
76 
82  EVFileStatus searchInFile(const std::string content, bool caseSensitive);
83 
88  EVFileStatus searchReplace(const std::string searchContent, const std::string replaceContent, bool caseSensitive);
89 
94  EVFileStatus searchInFileRegex(const std::string regexPattern);
95 
100  EVFileStatus searchReplaceRegex(const std::string regexPattern, const std::string replacePattern);
101 
102  EVFileStatus insertChar(int row, int col, char x);
103  EVFileStatus coverChar(int row, int col, char x);
104  EVFileStatus deleteChar(int row, int col, bool isFront);
105 
106  EVFileStatus deleteLine(int rowB, int colB = 0, int rowE = 0, int colE = -1);
107  EVFileStatus copyLine (int rowB, int colB = 0, int rowE = 0, int colE = -1);
108  EVFileStatus pasteLine (int row);
109 
110  std::string fileName;
111  std::vector<std::string> fileContent;
112  std::vector<std::string> copiedFile;
113  bool hasCopy;
114  bool hasChange;
115  int jumpTo;
116  size_t start;
117  size_t offset;
118  std::vector<std::pair<size_t,size_t>> searchPosition;
119 
120 private:
121  FILE* file;
122 
128  std::vector<std::pair<size_t, size_t>> searchRegex(const std::string& regexPattern);
129 
135  bool replaceRegex(const std::pair<size_t,size_t> pos, const std::string& replacePattern);
136 
142  std::vector<std::pair<size_t, size_t>> search(const std::string& content);
143 
149  std::vector<std::pair<size_t, size_t>> search_case_ins(const std::string& content);
150 
156  std::vector<std::pair<size_t, size_t>> search_first(const std::string& content);
157 
163  std::vector<std::pair<size_t, size_t>> search_first_case_ins(const std::string& content);
164 
172  bool replace(const std::pair<size_t,size_t> pos, int len, const std::string& replaceContent);
173 };
174 } // namespace ev
175 
176 #endif //EASYVIM_CORE_HPP
Definition: core.hpp:23
EVFileStatus searchInFile(const std::string content, bool caseSensitive)
在文件中查找匹配的内容,大小写不敏感
Definition: search_replace.cpp:124
EVFileStatus quitFile()
退出文件
Definition: loadsave.cpp:286
EVFileStatus
Definition: core.hpp:26
@ EVFILE_NOT_EXIST
文件不存在 -> 创建文件
Definition: core.hpp:28
@ EVFILE_READ_FAIL
文件读取失败
Definition: core.hpp:30
@ EVFILE_DIR_DOSE_NOT_EXIST
路径不存在 -> 创建路径
Definition: core.hpp:35
@ EVFILE_WRITE_FAIL
文件写入失败
Definition: core.hpp:31
@ EVFILE_OPEN_FAIL
文件打开失败
Definition: core.hpp:29
@ EVFILE_REPLACE_FAIL
替换失败
Definition: core.hpp:39
@ EVFILE_COPY_NOTEXIST
复制失败
Definition: core.hpp:41
@ EVFILE_PATTERN_MATCH
找不到匹配的内容
Definition: core.hpp:37
@ EVFILE_OUT_OF_BOUND
指针超出文本位置
Definition: core.hpp:33
@ EVFILE_NO_MATCH_PATTERN
找不到匹配的内容
Definition: core.hpp:36
@ EVFILE_OK
文件正常
Definition: core.hpp:27
@ EVFILE_REPLACE_SUCCESS
成功替换
Definition: core.hpp:38
@ EVFILE_CLOSE_FAIL
文件关闭失败
Definition: core.hpp:32
EVFileStatus saveFileAs(const std::string &newFilePath)
文件另存为,还没有实现创建文件夹得功能,如果目录不存在直接返回错误
Definition: loadsave.cpp:263
bool hasChange
文件是否有改动
Definition: core.hpp:114
std::vector< std::string > copiedFile
复制的文件内容
Definition: core.hpp:112
EVFileStatus searchReplace(const std::string searchContent, const std::string replaceContent, bool caseSensitive)
在文件中查找匹配的内容并替换,大小写敏感
Definition: search_replace.cpp:197
std::vector< std::pair< size_t, size_t > > searchPosition
查找结果在文件中的位置
Definition: core.hpp:118
EVFileStatus loadFile()
读取文件
Definition: loadsave.cpp:39
bool hasCopy
复制内容是否有效
Definition: core.hpp:113
EVFileStatus searchInFileRegex(const std::string regexPattern)
在文件中查找匹配正则表达式的内容
Definition: search_replace.cpp:47
size_t offset
文件偏移量(由于文件可能很大,不能一次性把所有文件内容都load进来)
Definition: core.hpp:117
EVFileStatus saveFile()
写入文件
Definition: loadsave.cpp:71
size_t start
文件起始行号(由于文件可能很大,不能一次性把所有文件内容都load进来)
Definition: core.hpp:116
int jumpTo
跳转行号
Definition: core.hpp:115
std::string fileName
文件名
Definition: core.hpp:110
EVFileStatus searchReplaceRegex(const std::string regexPattern, const std::string replacePattern)
在文件中查找匹配正则表达式的内容并替换
Definition: search_replace.cpp:59
std::vector< std::string > fileContent
文件内容
Definition: core.hpp:111