Browse Source

First part of comment and variable cleanup.

master
Cameron Weinfurt 3 years ago
parent
commit
348016989d
  1. 35
      src/Buffer.cpp
  2. 2
      src/Buffer.h

35
src/Buffer.cpp

@ -11,15 +11,15 @@ void Buffer::display() const
for (int i = ix_top_line_; i < ix_stop_line_; ++i)
{
if (i < v_lines_.size())
cout << std::setw(4) << i+1 << " " << v_lines_[i];
cout << std::setw(6) << i+1 << " " << v_lines_[i];
cout << '\n';
}
}
//Pass the string by copy because I don't want to change the original, but still need to manipulate it
//Pass the string by copy because we don't want to change the original, but still need to manipulate it.
void Buffer::split_line(string str)
{
// Split up the lines and then push them onto the line vector
// Split up the lines and then push them onto the line vector.
while (str.length() > maximum_length_)
{
//Initialize the substring and set the positions in the string where they need to exist
@ -28,7 +28,7 @@ void Buffer::split_line(string str)
size_t total_pos = curr_pos;
bool searching = true;
//While searching for the next space in a string
// TODO: Explain this loop in a tiny bit of detail
while (searching)
{
str_part = str_part.substr(curr_pos + 1, str_part.length());
@ -46,7 +46,7 @@ void Buffer::split_line(string str)
total_pos += curr_pos + 1;
}
}
//Check if the string part can still be chopped
//Check if the string part can still be chopped. TODO: Add what is happening after the check.
if (str_part.length() != str.length())
{
str_part = str.substr(0, total_pos);
@ -61,9 +61,11 @@ void Buffer::split_line(string str)
break;
}
}
// TODO: What is being pushed and why?
v_lines_.push_back(str);
}
//Finds the next paragraph or break tag in the line provided and returns the position of it.
size_t Buffer::get_tag_(const string & line)
{
size_t p_tag = line.find("<p>");
@ -83,14 +85,14 @@ bool Buffer::open(const string & new_file_name, bool add_to_hist_)
v_links_.clear();
v_lines_.clear();
//Note: the vector is cleared only after we know the file
//Note: the vectors are cleared only after we know the file
//opened successfully.
int curr_link = 0;
std::string curr_line, line;
while(getline(file, line))
{
//Find tags and process them.
//Find anchor tags and process them.
for(auto tag_loc = line.find("<a "); tag_loc != -1; tag_loc = line.find("<a", tag_loc + 1))
{
++curr_link;
@ -111,43 +113,44 @@ bool Buffer::open(const string & new_file_name, bool add_to_hist_)
line.replace(tag_loc, tag_len + 1, "<" + link_name + ">[" + to_string(curr_link) + "]");
}
//Search for all paragraphs and breaks in the line and add them to the v_lines vector.
//Search for all paragraphs and breaks in the line. These two tags mark where a line in the viewer is defined before spliting, so they will be given to the split_line function which will push each segment of the line onto the v_lines vector.
for(auto _tag = get_tag_(line); _tag != -1; _tag = get_tag_(line))
{
//Check to see if we have a paragraph tag, so we can add a blank line.
//Check to see if we have a paragraph tag, so we know how big the current tag being processed is..
bool is_p = _tag == line.find("<p>");
int tag_len = is_p ? 3 : 4;
//Separate out text that should stay in the previous line and text that goes in the new line. Delete the tag in the process.
//Separate out text that should stay in the line to be split and text that goes in the next line. Delete the tag in the process.
std::string extra_text = line.substr(_tag + tag_len);
line.erase(_tag);
curr_line += line;
//However, if the tag is located at the start of the file, there will be no data, so it shouldn't be added as it will be an empty line.
//If the tag is located at the start of the file, there will be no data, so it shouldn't be added as it will be an empty line.
if(curr_line != "")
{
split_line(curr_line);
curr_line = "";
if(is_p)
//Add a blank line if a paragraph tag was just processed.
if(is_p)
{
v_lines_.push_back("");
}
}
//Move any remaining data on the line back into the line variable so that it can be processed.
//Move any remaining data on the line back into the line variable so that it can be processed in the next line.
line = extra_text;
}
//Add any data that has been unprocessed up to this point.
curr_line += line;
}
// Push the contents of curr_line as it has the last line in the file.
// The contents of curr_line are the final parts of the last paragraph, so there will be no break or paragraph tags to push it onto the vector. The line is told to be processed here to allow this final content to get added in.
split_line(curr_line);
ix_top_line_ = 0;
file_name_ = new_file_name;
//If we used the open or go command to open a file, we should add this to the history vector.
if(add_to_hist_)
{
v_hist_.push_back(file_name_);

2
src/Buffer.h

@ -33,7 +33,7 @@ private:
std::vector<std::pair<std::string, std::string>> v_links_;
std::vector<std::string> v_hist_;
std::vector<std::string>::iterator curr_link_itr = v_hist_.end();
bool add_to_hist_ = 1;
bool add_to_hist_ = true;
int ix_top_line_ = 0;
int window_height_ = 0;
int maximum_length_ = 0;

Loading…
Cancel
Save