Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <map>
- #include <string>
- #include <fstream>
- #include "Item.h"
- bool isSeperator(char);
- bool createItem(std::vector<std::string>, Item &);
- std::string CSVify(Item);
- std::string CSVtitle();
- void main() {
- std::string path;
- std::cout << "Give path now." << std::endl;
- std::cin >> path;
- std::ifstream myStream;
- std::vector<std::string> myList;
- myStream.open(path);
- while (getline(myStream, path)) { myList.push_back(path); }
- myStream.close();
- //lexeme creation
- std::vector<std::vector<std::string>> tokens;
- for (int x = 0; x < (int)myList.size(); x++)
- {
- std::string tok = "";
- bool inString = false;
- std::vector<std::string> line;
- tokens.push_back(line);
- for (int l = 0; l < (int)myList[x].size(); l++)
- {
- if (inString) {
- if (myList[x][l] == '\"')
- {
- inString = false;
- if (tok != "")
- {
- tokens[x].push_back(tok);
- tok = "";
- }
- }
- else
- {
- tok += myList[x][l];
- }
- }
- else //if (!inString)
- {
- if (myList[x][l] == '\"')
- {
- inString = true;
- if (tok != "")
- {
- tokens[x].push_back(tok);
- tok = "";
- }
- }
- else if (isSeperator(myList[x][l]))
- {
- if (tok != "")
- {
- tokens[x].push_back(tok);
- tok = "";
- }
- std::string filler = "";
- filler += myList[x][l];
- if (filler != " " && filler != "") { tokens[x].push_back(filler); }
- }
- else
- {
- tok += myList[x][l];
- }
- }
- }
- if (tok != "")
- {
- tokens[x].push_back(tok);
- tok = "";
- }
- }
- //serialization
- std::vector<Item> items;
- for (int x = 0; x < (int)tokens.size(); x++)
- {
- Item thingaling;
- if (createItem(tokens[x], thingaling)) { items.push_back(thingaling); }
- else { std::cout << "ERROR ON ITEM " << x << std::endl; }
- }
- //write the csv...
- std::ofstream output;
- output.open("output.csv");
- output << CSVtitle() << std::endl;
- for (int x = 0; x < (int)items.size(); x++){output << CSVify(items[x]) << std::endl;}
- output.close();
- system("pause");
- //printing to csv
- }
- bool isSeperator(char c)
- {
- return (c == '<' || c == '>' || c == '(' || c == ')' || c == '}' || c == '{' || c == ' ' || c == ',' || c == '|');
- }
- bool createItem(std::vector<std::string> tokens, Item & thing)
- {
- int cur = 0;
- if (tokens[cur++] != "[")
- {
- std::cout << 1 << std::endl;
- return false;
- }
- thing.ItemID = tokens[cur++];
- if (tokens[cur++] != ",")
- {
- std::cout << 2 << std::endl;
- return false;
- }
- thing.ItemName = tokens[cur++];
- if (tokens[cur++] != ",")
- {
- std::cout << 3 << std::endl;
- return false;
- }
- if (tokens[cur++] != "[")
- {
- std::cout << 4 << std::endl;
- return false;
- }
- thing.MeshData = "";
- while (tokens[cur] != "]")
- {
- if (tokens[cur] != ",")
- {
- thing.MeshData += tokens[cur++];
- }
- else
- {
- thing.MeshData += " ";
- cur++;
- }
- }
- cur++;
- if (tokens[cur++] != ",")
- {
- std::cout << 9 << std::endl;
- return false;
- }
- while (tokens[cur] != ",")
- {
- thing.Modifier += tokens[cur++];
- }
- if (tokens[cur++] != ",")
- {
- std::cout << thing.Modifier << std::endl;
- std::cout << tokens[cur - 1] << std::endl;
- std::cout << 6 << std::endl;
- return false;
- }
- while (tokens[cur] != ",")
- {
- thing.capabilities += tokens[cur++];
- }
- if (tokens[cur++] != ",")
- {
- std::cout << thing.Modifier << std::endl;
- std::cout << thing.capabilities << std::endl;
- std::cout << tokens[cur-1] << std::endl;
- std::cout << 7 << std::endl;
- return false;
- }
- thing.price = tokens[cur++];
- if (tokens[cur++] != ",")
- {
- std::cout << 7 << std::endl;
- return false;
- }
- while (tokens[cur++] != ",")
- {
- if (tokens[cur] == "weight")
- {
- cur++;
- cur++;
- thing.weight = tokens[cur++];
- cur++;
- cur++;
- }
- else if (tokens[cur] == "head_armor")
- {
- cur++;
- cur++;
- thing.head_armor = tokens[cur++];
- cur++;
- cur++;
- }
- else if (tokens[cur] == "leg_armor")
- {
- cur++;
- cur++;
- thing.leg_armor = tokens[cur++];
- cur++;
- cur++;
- }
- else if (tokens[cur] == "body_armor")
- {
- cur++;
- cur++;
- thing.body_armor = tokens[cur++];
- cur++;
- cur++;
- }
- else if (tokens[cur] == "spd_rating")
- {
- cur++;
- cur++;
- thing.spd_rating = tokens[cur++];
- cur++;
- cur++;
- }
- else if (tokens[cur] == "weapon_length")
- {
- cur++;
- cur++;
- thing.weapon_length = tokens[cur++];
- cur++;
- cur++;
- }
- else if (tokens[cur] == "difficulty")
- {
- cur++;
- cur++;
- thing.difficulty = tokens[cur++];
- cur++;
- cur++;
- }
- else if (tokens[cur] == "hit_points")
- {
- cur++;
- cur++;
- thing.hit_points = tokens[cur++];
- cur++;
- cur++;
- }
- else if (tokens[cur] == "horse_charge")
- {
- cur++;
- cur++;
- thing.horse_charge = tokens[cur++];
- cur++;
- cur++;
- }
- else if (tokens[cur] == "horse_speed")
- {
- cur++;
- cur++;
- thing.horse_speed = tokens[cur++];
- cur++;
- cur++;
- }
- else if (tokens[cur] == "horse_maneuver")
- {
- cur++;
- thing.horse_maneuver = tokens[cur++];
- cur++;
- cur++;
- }
- else if (tokens[cur] == "swing_damage")
- {
- cur++;
- cur++;
- thing.swing_damage = tokens[cur++];
- if (tokens[cur++] != ",")
- {
- return false;
- }
- thing.swing_damage_type += tokens[cur++];
- cur++;
- }
- else if (tokens[cur] == "thrust_damage")
- {
- cur++;
- cur++;
- thing.thrust_damage = tokens[cur++];
- if (tokens[cur++] != ",")
- {
- return false;
- }
- thing.thrust_damage_type += tokens[cur++];
- cur++;
- }
- }
- thing.flags = tokens[cur++];
- thing.triggers = "";
- if (tokens[cur++] == "," && cur+1 < tokens.size())
- {
- while (tokens[cur] != ",")
- {
- thing.triggers += tokens[cur++];
- }
- }
- std::cout << "ITEM ADDED: " << thing.ItemID << std::endl;
- return true;
- }
- std::string CSVtitle()
- {
- std::string str = "";
- str += "ID,name,Mesh,Modifier,capabilities,price,weight,body_armor,head_armor,leg_armor,spd_rating,weapon_length,swing_damage_type,swing_damage,thrust_damage_type,thrust_damage,horse_maneuver,horse_speed,horse_charge,hit_points,difficulty,flags,triggers,factions";
- return str;
- }
- std::string CSVify(Item item)
- {
- std::string str = "";
- str += item.ItemID + "," + item.ItemName + "," + item.MeshData + "," + item.Modifier + "," + item.capabilities + "," + item.price + "," + item.weight + "," + item.body_armor + "," + item.head_armor + "," + item.leg_armor + "," + item.spd_rating + "," + item.weapon_length + "," + item.swing_damage_type + "," + item.swing_damage + "," + item.thrust_damage_type + "," + item.thrust_damage + "," + item.horse_maneuver + "," + item.horse_speed + "," + item.horse_charge + "," + item.hit_points + "," + item.difficulty + "," + item.flags + "," + item.triggers + "," + item.factions;
- return str;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement