#ifndef CHARMAN_H
#define CHARMAN_H

#include <string>
#include <vector>

class CharMan {
private:
  std::string &buffer;
  std::string &work;
  std::string &text;
  std::vector<int> &text_offsets;

  std::vector<std::pair<int, int>> pos_len;

  void validate(void);
  void regular_expressions();
  char get(int);
  void set(int, char);
  void insert(int, std::string);

  int word_mangler(std::pair<int, int> pos_len);
  int word_wrangler(std::pair<int, int> pos_len);
  int word_tangler(std::pair<int, int> pos_len);
  int level;

public:
  int mangle_count;
  int mangle_chars;
  int need_render;

  CharMan(std::string &buffer, std::string &work, std::string &text,
          std::vector<int> &text_offsets);
  ~CharMan();
  void diagnostics(void);
};

#endif