#include "editor.h" #include "utils.h" #include #include Editor::Editor(std::vector* contents): m_current_line(0) { m_contents = contents; } int Editor::run_editor() { std::vector* c = m_contents; bool stopped = false; while (!stopped) { print_contents_on_line(m_current_line); char input = Utils::getch(); switch (input) { case 'e': edit_command(); break; default: break; } } return 0; } int Editor::print_contents_on_line(int line) const { for (int i = line; i < std::min(m_contents->size(), line + OUTPUT_LINE_MAX); i++) { std::cout << i << " " << m_contents->at(i) << '\n'; } } int Editor::edit_command() { std::cout << "Edit which line? "; int line; std::cin >> line; if (std::cin.fail() || line < 0 || line >= m_contents->size()) { std::cout << "Not a valid line number!\n"; std::cin.clear(); std::cin.ignore(std::numeric_limits::max(),'\n'); return 1; } edit_line(line); } int Editor::edit_line(int line) { std::cout << "> "; std::string input; std::cin.ignore(std::numeric_limits::max(),'\n'); std::getline(std::cin, input); std::cin.clear(); (*m_contents)[line] = input; return 0; }