#include #include #include #include #include #include "roman.h" #include "FRC.h" #include "input.h" //HelpStr, iHelpStr #include "strings.h" using std::string; using std::vector; using std::cin; using std::cout; using std::endl; bool Continue = true; input_trie commands; void runCommand(input_trie commands, string in); int main(int argc, char** argv) { string in; commands.insert(std::vector>({{ std::pair(std::string("h"), new functdata( [](std::vector inList){ if (inList.size() > 1) { int len = 0; functdata *found = commands.longestPrefix(toLower(inList[1]), &len); if (found) { cout<help<(std::string("q"), new functdata( [](std::vector inList){ Continue = false; }, 0, std::string("Quit"))), std::pair(std::string("e"), new functdata( [](std::vector inList){ cout<<'['; for (unsigned i = 0; i != inList.size(); i++) { cout<(std::string("x"), new functdata( [](std::vector inList){ inList.erase(inList.begin()); int len = 0; functdata *found = commands.longestPrefix(toLower(inList[0]), &len); if (found) { if (inList.size() > (unsigned)found->argC) { (*found)(inList); } else { cout<<"Please specify all "<argC<<" arguments for "<(std::string("p"), new functdata( [](std::vector inList){ if (inList.size() == 1) { auto dump = commands.getIndex(); for (unsigned i = 0; i != dump.size(); i++) { cout<help<<" [takes "<argC<<']'<<(found->call?' ':'!')<(std::string("p-"), new functdata( [](std::vector inList){ auto t = commands.allWithPrefix(inList[1]); for (auto i : t) { cout<(std::string("t"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(inList[i])<<" = " <(inList[i]), 0)<(std::string("te"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(inList[i])<<" = " <(inList[i]), 0)<(std::string("ts"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(inList[i])<<" = " <(inList[i]))<(std::string("tc"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(inList[i])<<" = " <(inList[i]), 0, 4)<(std::string("tl"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(inList[i])<<" = " <(inList[i]))<(std::string("tf"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(inList[i])<<" = " <(inList[i]), 0)<(std::string("tfc"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(inList[i])<<" = " <(inList[i]), 0, 4)<(std::string("tfl"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(inList[i])<<" = " <(inList[i]))<(std::string("tt"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(std::string("ttc"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(std::string("ttl"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(std::string("f"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(std::string("fc"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(std::string("fl"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(std::string("ff"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(std::string("ffc"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(std::string("ffl"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(std::string("ft"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(std::string("ftc"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(std::string("ftl"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { std::cout<(std::string("v"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { auto a = fromStr(inList[i]); auto b = toERoman(a, 0); auto c = fromERomanTI(b, 24); if (a != c) { std::cout<(std::string("vs"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { auto a = fromStr(inList[i]); auto b = toSRoman(a); auto c = fromERomanTI(b, 24); if (a != c) { std::cout<(std::string("vc"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { auto a = fromStr(inList[i]); auto b = toERoman(a, 0, 4); auto c = fromERomanTI(b, 4); if (a != c) { std::cout<(std::string("vl"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { auto a = fromStr(inList[i]); auto b = toLRoman(a); auto c = fromERomanTI(b, 10); if (a != c) { std::cout<(std::string("vf"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { auto a = fromStr(inList[i]); auto b = toERoman(a, 0); auto c = fromERomanTF(b, 24); if (a != c) { std::cout<(std::string("vfc"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { auto a = fromStr(inList[i]); auto b = toERoman(a, 0, 4); auto c = fromERomanTF(b, 4); if (a != c) { std::cout<(std::string("vfl"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { auto a = fromStr(inList[i]); auto b = toLRoman(a); auto c = fromERomanTF(b, 10); if (a != c) { std::cout<(std::string("vt"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { auto a = sanitizeNumeric(inList[i]); auto b = toERoman(a, 0); auto c = fromERomanTS(b, 24); if (a != c) { std::cout<(std::string("vtc"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { auto a = sanitizeNumeric(inList[i]); auto b = toERoman(a, 0, 4); auto c = fromERomanTS(b, 4); if (a != c) { std::cout<(std::string("vtl"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { auto a = sanitizeNumeric(inList[i]); auto b = toLRoman(a); auto c = fromERomanTS(b, 10); if (a != c) { std::cout<(std::string("c"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { auto a = sanitizeNumeral(inList[i]); auto b = fromERomanTI(a, 24); auto c = toERoman(b, 0); cout<(std::string("cc"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { auto a = sanitizeNumeral(inList[i]); auto b = fromERomanTI(a, 4); auto c = toERoman(b, 0, 4); cout<(std::string("cl"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { auto a = sanitizeNumeral(inList[i]); auto b = fromERomanTI(a, 10); auto c = toLRoman(b); cout<(std::string("ct"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { auto a = sanitizeNumeral(inList[i]); auto b = fromERomanTS(a, 24); auto c = toERoman(b, 0); cout<(std::string("ctc"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { auto a = sanitizeNumeral(inList[i]); auto b = fromERomanTS(a, 4); auto c = toERoman(b, 0); cout<(std::string("ctl"), new functdata( [](std::vector inList){ for (unsigned i = 1; i != inList.size(); i++) { auto a = sanitizeNumeral(inList[i]); auto b = fromERomanTS(a, 10); auto c = toLRoman(b); cout< scriptedCommands; bool display_promt = true, display_promt_s = false, cont_after = false; for (int i = 1; i < argc; i++) { //cout<<"["< "< "; getline(cin, in); if (in.empty()) { continue; } runCommand(commands, in); } catch (const std::runtime_error& err) { cout<<"Failed to read input. "< inList = tokenizeInput(in); //inList[0] = toLower(inList[0]); std::transform(inList[0].begin(), inList[0].end(), inList[0].begin(), ::tolower); int len = 0; functdata *found = commands.longestPrefix(toLower(inList[0]), &len); if (found) { if (inList.size() > (unsigned)found->argC) { (*found)(inList); } else { cout<<"Please specify all "<argC<<" arguments for "<