Advertisement
Guest User

Untitled

a guest
Oct 21st, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.83 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <map>
  4. #include <string>
  5. #include <fstream>
  6. #include "Item.h"
  7.  
  8. bool isSeperator(char);
  9. bool createItem(std::vector<std::string>, Item &);
  10. std::string CSVify(Item);
  11. std::string CSVtitle();
  12.  
  13. void main() {
  14. std::string path;
  15. std::cout << "Give path now." << std::endl;
  16. std::cin >> path;
  17. std::ifstream myStream;
  18. std::vector<std::string> myList;
  19. myStream.open(path);
  20. while (getline(myStream, path)) { myList.push_back(path); }
  21. myStream.close();
  22. //lexeme creation
  23. std::vector<std::vector<std::string>> tokens;
  24. for (int x = 0; x < (int)myList.size(); x++)
  25. {
  26. std::string tok = "";
  27. bool inString = false;
  28. std::vector<std::string> line;
  29. tokens.push_back(line);
  30. for (int l = 0; l < (int)myList[x].size(); l++)
  31. {
  32.  
  33. if (inString) {
  34. if (myList[x][l] == '\"')
  35. {
  36. inString = false;
  37. if (tok != "")
  38. {
  39. tokens[x].push_back(tok);
  40. tok = "";
  41. }
  42. }
  43. else
  44. {
  45. tok += myList[x][l];
  46. }
  47. }
  48. else //if (!inString)
  49. {
  50. if (myList[x][l] == '\"')
  51. {
  52. inString = true;
  53. if (tok != "")
  54. {
  55. tokens[x].push_back(tok);
  56. tok = "";
  57. }
  58. }
  59. else if (isSeperator(myList[x][l]))
  60. {
  61. if (tok != "")
  62. {
  63. tokens[x].push_back(tok);
  64. tok = "";
  65. }
  66. std::string filler = "";
  67. filler += myList[x][l];
  68. if (filler != " " && filler != "") { tokens[x].push_back(filler); }
  69. }
  70. else
  71. {
  72. tok += myList[x][l];
  73. }
  74. }
  75. }
  76. if (tok != "")
  77. {
  78. tokens[x].push_back(tok);
  79. tok = "";
  80. }
  81. }
  82. //serialization
  83. std::vector<Item> items;
  84. for (int x = 0; x < (int)tokens.size(); x++)
  85. {
  86. Item thingaling;
  87. if (createItem(tokens[x], thingaling)) { items.push_back(thingaling); }
  88. else { std::cout << "ERROR ON ITEM " << x << std::endl; }
  89. }
  90. //write the csv...
  91. std::ofstream output;
  92. output.open("output.csv");
  93. output << CSVtitle() << std::endl;
  94. for (int x = 0; x < (int)items.size(); x++){output << CSVify(items[x]) << std::endl;}
  95. output.close();
  96. system("pause");
  97. //printing to csv
  98. }
  99.  
  100. bool isSeperator(char c)
  101. {
  102. return (c == '<' || c == '>' || c == '(' || c == ')' || c == '}' || c == '{' || c == ' ' || c == ',' || c == '|');
  103. }
  104.  
  105. bool createItem(std::vector<std::string> tokens, Item & thing)
  106. {
  107. int cur = 0;
  108. if (tokens[cur++] != "[")
  109. {
  110. std::cout << 1 << std::endl;
  111. return false;
  112. }
  113. thing.ItemID = tokens[cur++];
  114. if (tokens[cur++] != ",")
  115. {
  116. std::cout << 2 << std::endl;
  117. return false;
  118. }
  119. thing.ItemName = tokens[cur++];
  120. if (tokens[cur++] != ",")
  121. {
  122. std::cout << 3 << std::endl;
  123. return false;
  124. }
  125. if (tokens[cur++] != "[")
  126. {
  127. std::cout << 4 << std::endl;
  128. return false;
  129. }
  130. thing.MeshData = "";
  131. while (tokens[cur] != "]")
  132. {
  133. if (tokens[cur] != ",")
  134. {
  135. thing.MeshData += tokens[cur++];
  136. }
  137. else
  138. {
  139. thing.MeshData += " ";
  140. cur++;
  141. }
  142.  
  143. }
  144. cur++;
  145. if (tokens[cur++] != ",")
  146. {
  147. std::cout << 9 << std::endl;
  148. return false;
  149. }
  150. while (tokens[cur] != ",")
  151. {
  152. thing.Modifier += tokens[cur++];
  153. }
  154. if (tokens[cur++] != ",")
  155. {
  156. std::cout << thing.Modifier << std::endl;
  157. std::cout << tokens[cur - 1] << std::endl;
  158. std::cout << 6 << std::endl;
  159. return false;
  160. }
  161. while (tokens[cur] != ",")
  162. {
  163. thing.capabilities += tokens[cur++];
  164. }
  165. if (tokens[cur++] != ",")
  166. {
  167. std::cout << thing.Modifier << std::endl;
  168. std::cout << thing.capabilities << std::endl;
  169. std::cout << tokens[cur-1] << std::endl;
  170. std::cout << 7 << std::endl;
  171. return false;
  172. }
  173. thing.price = tokens[cur++];
  174. if (tokens[cur++] != ",")
  175. {
  176. std::cout << 7 << std::endl;
  177. return false;
  178. }
  179. while (tokens[cur++] != ",")
  180. {
  181. if (tokens[cur] == "weight")
  182. {
  183. cur++;
  184. cur++;
  185. thing.weight = tokens[cur++];
  186. cur++;
  187. cur++;
  188. }
  189. else if (tokens[cur] == "head_armor")
  190. {
  191. cur++;
  192. cur++;
  193. thing.head_armor = tokens[cur++];
  194. cur++;
  195. cur++;
  196. }
  197. else if (tokens[cur] == "leg_armor")
  198. {
  199. cur++;
  200. cur++;
  201. thing.leg_armor = tokens[cur++];
  202. cur++;
  203. cur++;
  204. }
  205. else if (tokens[cur] == "body_armor")
  206. {
  207. cur++;
  208. cur++;
  209. thing.body_armor = tokens[cur++];
  210. cur++;
  211. cur++;
  212. }
  213. else if (tokens[cur] == "spd_rating")
  214. {
  215. cur++;
  216. cur++;
  217. thing.spd_rating = tokens[cur++];
  218. cur++;
  219. cur++;
  220. }
  221. else if (tokens[cur] == "weapon_length")
  222. {
  223. cur++;
  224. cur++;
  225. thing.weapon_length = tokens[cur++];
  226. cur++;
  227. cur++;
  228. }
  229. else if (tokens[cur] == "difficulty")
  230. {
  231. cur++;
  232. cur++;
  233. thing.difficulty = tokens[cur++];
  234. cur++;
  235. cur++;
  236. }
  237. else if (tokens[cur] == "hit_points")
  238. {
  239. cur++;
  240. cur++;
  241. thing.hit_points = tokens[cur++];
  242. cur++;
  243. cur++;
  244. }
  245. else if (tokens[cur] == "horse_charge")
  246. {
  247. cur++;
  248. cur++;
  249. thing.horse_charge = tokens[cur++];
  250. cur++;
  251. cur++;
  252. }
  253. else if (tokens[cur] == "horse_speed")
  254. {
  255. cur++;
  256. cur++;
  257. thing.horse_speed = tokens[cur++];
  258. cur++;
  259. cur++;
  260. }
  261. else if (tokens[cur] == "horse_maneuver")
  262. {
  263. cur++;
  264. thing.horse_maneuver = tokens[cur++];
  265. cur++;
  266. cur++;
  267. }
  268. else if (tokens[cur] == "swing_damage")
  269. {
  270. cur++;
  271. cur++;
  272. thing.swing_damage = tokens[cur++];
  273. if (tokens[cur++] != ",")
  274. {
  275.  
  276. return false;
  277. }
  278. thing.swing_damage_type += tokens[cur++];
  279. cur++;
  280. }
  281. else if (tokens[cur] == "thrust_damage")
  282. {
  283. cur++;
  284. cur++;
  285. thing.thrust_damage = tokens[cur++];
  286. if (tokens[cur++] != ",")
  287. {
  288. return false;
  289. }
  290. thing.thrust_damage_type += tokens[cur++];
  291. cur++;
  292. }
  293. }
  294. thing.flags = tokens[cur++];
  295. thing.triggers = "";
  296. if (tokens[cur++] == "," && cur+1 < tokens.size())
  297. {
  298. while (tokens[cur] != ",")
  299. {
  300. thing.triggers += tokens[cur++];
  301. }
  302. }
  303. std::cout << "ITEM ADDED: " << thing.ItemID << std::endl;
  304. return true;
  305. }
  306.  
  307. std::string CSVtitle()
  308. {
  309. std::string str = "";
  310. 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";
  311. return str;
  312. }
  313.  
  314. std::string CSVify(Item item)
  315. {
  316. std::string str = "";
  317. 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;
  318. return str;
  319. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement