stew3254 3 years ago
parent
commit
27affebad1
  1. 44
      src/Buffer.cpp
  2. 2
      src/FileBrowser.cpp
  3. 3
      src/FileBrowser.h
  4. 5
      test.txt

44
src/Buffer.cpp

@ -37,39 +37,45 @@ bool Buffer::open(const string & new_file_name)
line.replace(char_loc, 4, "\n");
// Find link tags and process them.
for(auto tag_loc = line.find("<a"); tag_loc != -1; tag_loc = line.find("<a", tag_loc + 1))
for(auto tag_loc = line.find("<a "); tag_loc != -1; tag_loc = line.find("<a", tag_loc + 1))
{
++curr_link;
auto tag_len = line.find_first_of('>', tag_loc) - tag_loc;
std::string link_tag = line.substr(tag_loc, tag_len);
std::string link_tag = line.substr(tag_loc + 3, tag_len - 3);
auto second_space_loc = link_tag.find_first_of(' ', 4);
std::string file_name = link_tag.substr(4, second_space_loc - 1);
std::string link_name = link_tag.substr(second_space_loc, tag_len - 1);
auto second_space_loc = link_tag.find_first_of(' ', 0);
std::string file_name = link_tag.substr(0, second_space_loc - 1);
std::string link_name = link_tag.substr(second_space_loc + 1);
v_links_.push_back({file_name, link_name});
line.replace(tag_loc, tag_len, "<" + link_name + ">[" + to_string(curr_link) + "]");
line.replace(tag_loc, tag_len + 1, "<" + link_name + ">[" + to_string(curr_link) + "]");
}
// See if there is a new paragraph being made and make one if it is.
auto p_tag = line.find("<p>");
std::string extra_text;
if(p_tag != -1)
// Search for all paragraphs in the line and add them to the v_lines vector.
for(auto p_tag = line.find("<p>"); p_tag != -1; p_tag = line.find("<p>"))
{
extra_text = line.substr(p_tag + 4);
std::string extra_text = line.substr(p_tag + 4);
line.erase(p_tag);
curr_p += line;
v_lines_.push_back(curr_p);
curr_p = extra_text;
}
else // Otherwise just append the data on this line to the current paragraph being read.
{
curr_p += line;
// However, if the paragraph is empty, then it shouldn't be added.
if(curr_p != "")
{
v_lines_.push_back(curr_p);
curr_p = "";
}
line = extra_text;
}
}
// Append any data left on this line to the current paragraph being read.
curr_p += line;
}
// Push the contents of curr_p as it has the last paragraph in the file.
v_lines_.push_back(curr_p);
file_name_ = new_file_name;
ix_top_line_ = 0;

2
src/FileBrowser.cpp

@ -9,7 +9,7 @@ void FileBrowser::display()
const string long_separator(50, '-');
const string short_separator(8, '-');
system(clear_command);
system("cls || clear");
if (!error_message_.empty()) {
cout << "ERROR: " + error_message_ << endl;

3
src/FileBrowser.h

@ -10,9 +10,6 @@
#include "Buffer.h"
const char clear_command[] = "cls"; // for Windows
//const char clear_command[] = "clear"; // for Linux and possibly Mac's
class FileBrowser
{
public:

5
test.txt

@ -0,0 +1,5 @@
<p> This is the first line in the file.
<p> This is the second <br> and third line of the file.
<p> This line has a link to the <a docs/specification.txt specification> file.
<p> This line is split into <p> two paragraph tags.
<p> This line contains some<br> problematic<p> tags.
Loading…
Cancel
Save