Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.69 KB | None | 0 0
  1. Name;Street;City;Age
  2. Peter Pan;Am Hang 5;12345 Einsam;42
  3. Maria Schmitz;Kölner Straße 45;50123 Köln;43
  4. Paul Meier;Münchener Weg 1;87654 München;65
  5.  
  6. Name |Street |City |Age|
  7. -------------+----------------+-------------+---+
  8. Peter Pan |Am Hang 5 |12345 Einsam |42 |
  9. Maria Schmitz|Kölner Straße 45|50123 Köln |43 |
  10. Paul Meier |Münchener Weg 1 |87654 München|65 |
  11.  
  12. describe("CV", function() {
  13. var CV = require('../../lib/cv/CV');
  14. var cv;
  15. var cvData;
  16.  
  17.  
  18. beforeEach(function() {
  19. cvData =
  20. `Name;Street;City;Age
  21. Peter Pan;Am Hang 5;12345 Einsam;42
  22. Maria Schmitz;Kölner Straße 45;50123 Köln;43
  23. Paul Meier;Münchener Weg 1;87654 München;65`;
  24. cv = new CV(cvData);
  25. });
  26.  
  27. it("should fetch table header data", function () {
  28. expect(cv.getHeader()).toEqual(["Name", "Street", "City", "Age"]);
  29. });
  30.  
  31. it("should fetch table body data", function () {
  32. expect(cv.getBody()[0]).toEqual(["Peter Pan", "Am Hang 5", "12345 Einsam", "42"]);
  33. expect(cv.getBody()[1]).toEqual(["Maria Schmitz", "Kölner Straße 45", "50123 Köln", "43"]);
  34. });
  35.  
  36. it("should calc columns max lenght", function () {
  37. expect(cv.calcColumnsMaxSize()).toEqual([13, 16, 13, 3]);
  38. });
  39. });
  40.  
  41. describe("Table", function () {
  42. var Table = require('../../lib/cv/Table');
  43. var table;
  44. var cvData;
  45.  
  46. beforeEach(function () {
  47. cvData =
  48. `Name;Street;City;Age
  49. Peter Pan;Am Hang 5;12345 Einsam;42
  50. Maria Schmitz;Kölner Straße 45;50123 Köln;43
  51. Paul Meier;Münchener Weg 1;87654 München;65`;
  52. table = new Table();
  53. });
  54.  
  55. it("should makes a column content", function () {
  56. let content = "test 1";
  57. let columnMaxSize = 10;
  58. expect(table.getColumnContent(content, columnMaxSize)).toBe("test 1 ")
  59. });
  60. it("should makes a row of header", function () {
  61. let contents = ["test 1", "test 2", "test 3"];
  62. let columnsMaxSizes = [10, 9, 15];
  63. expect(table.createHeader(contents, columnsMaxSizes)).
  64. toBe(`test 1 |test 2 |test 3 |n----------+---------+----------------n`)
  65. })
  66. it("should makes body rows", function () {
  67. let contents = [["test 1", "test 2", "test 3"], ["test 4", "test5", "test6"]];
  68. let columnsMaxSizes = [10, 9, 15];
  69. expect(table.createBody(contents, columnsMaxSizes)).
  70. toBe(`test 1 |test 2 |test 3 |ntest 4 |test5 |test6 |n`)
  71. });
  72.  
  73. });
  74.  
  75. class CV{
  76. constructor(cvData) {
  77. this.cvRawData = cvData.split("n");
  78. this.cvData = [];
  79. this.header = [];
  80. this.body = [];
  81. this.columnsMaxSize;
  82. this.fetchHeaderColumns();
  83. this.fetchBodyColumns();
  84. }
  85.  
  86. getHeader() {
  87. return this.header;
  88. }
  89.  
  90. getBody() {
  91. return this.body;
  92. }
  93.  
  94. fetchHeaderColumns() {
  95. this.header = this.cvRawData[0].split(";");
  96. }
  97.  
  98. fetchBodyColumns() {
  99. if (this.cvRawData.length <= 1)
  100. return;
  101. for (var i = 1; i < this.cvRawData.length; i++)
  102. this.body.push(this.cvRawData[i].split(";"));
  103. }
  104.  
  105. calcColumnsMaxSize() {
  106. var columnsMaxSize = new Array(this.header.length).fill(0);
  107. for (var j = 0; j < this.body.length; j++)
  108. for (var i = 0; i < columnsMaxSize.length; i++){
  109. if (this.body[j][i].length > columnsMaxSize[i])
  110. columnsMaxSize[i] = this.body[j][i].length;
  111. }
  112. for (var i = 0; i < columnsMaxSize.length; i++) {
  113. if (this.header[i].length > columnsMaxSize[i])
  114. columnsMaxSize[i] = this.header[i].length;
  115. }
  116.  
  117. return columnsMaxSize;
  118. }
  119. }
  120. module.exports = CV;
  121.  
  122.  
  123. class Table {
  124.  
  125. getColumnContent(content, columnMaxSize) {
  126. return content + " ".repeat(columnMaxSize - content.length)
  127. }
  128.  
  129. createHeader(contents, columnsMaxSizes) {
  130. let header = "";
  131. let separator = ""
  132. let totalCharactersSize = 0;
  133. for (let i = 0; i < contents.length; i++) {
  134. let columnContent = this.getColumnContent(contents[i], columnsMaxSizes[i]) + "|";
  135. header += columnContent;
  136. if (separator.length > 0) separator += "+";
  137. separator += "-".repeat(columnsMaxSizes[i]);
  138. totalCharactersSize += columnContent.length;
  139. }
  140. header += "n" + separator + "-n";
  141. return header;
  142. }
  143.  
  144. createBody(contents, columnsMaxSizes) {
  145. let body = "";
  146. for (let i = 0; i < contents.length; i++) {
  147. for (let j = 0; j < columnsMaxSizes.length; j++) {
  148. body += this.getColumnContent(contents[i][j], columnsMaxSizes[j]) + "|";
  149. }
  150. body += "n";
  151. }
  152. return body;
  153. }
  154.  
  155. createTable(header, body, columnsMaxSizes) {
  156. let headerContent = this.createHeader(header, columnsMaxSizes);
  157. let bodyContent = this.createBody(body, columnsMaxSizes);
  158. return headerContent + bodyContent;
  159. }
  160. }
  161.  
  162. module.exports = Table;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement