tsvToArray.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. var tsvToArray = null;
  2. (function ($) {
  3. tsvToArray = {
  4. file: 'cells.txt',
  5. text: null,
  6. json: null,
  7. initLoadText: function (text) {
  8. this.text = text;
  9. return this.generateJSON();
  10. },
  11. numberOfTabs: function (text) {
  12. var count = 0;
  13. var index = 0;
  14. while (text.charAt(index++) === "\t") {
  15. count++;
  16. }
  17. return count;
  18. },
  19. generateJSON: function () {
  20. var self = this;
  21. var text = self.text;
  22. var lines = text.split(/\r\n|\r|\n/);
  23. self.generatedArray = [];
  24. var previousTabPosition = 0;
  25. var currentContent = null;
  26. var previousContent = null;
  27. $.each(lines, function (lineNumber, line) {
  28. var line = this;
  29. var content = line.replace(/\t/g, '');
  30. var tabPosition = self.numberOfTabs(line);
  31. currentContent = content.length ? content : currentContent;
  32. if (!self.generatedArray[lineNumber]) {
  33. self.generatedArray[lineNumber] = [];
  34. }
  35. if (tabPosition > previousTabPosition) {
  36. self.generatedArray[lineNumber] = self.autoFillArray(self.generatedArray[lineNumber], lineNumber, previousTabPosition, tabPosition, previousContent, currentContent);
  37. } else {
  38. self.generatedArray[lineNumber].push(content);
  39. previousTabPosition = tabPosition;
  40. previousContent = content;
  41. }
  42. });
  43. return self.generatedArray;
  44. },
  45. autoFillArray: function (array, lineNumber, previousTabPosition, currentTabPosition, previousContent, currentContent) {
  46. var self = this;
  47. var currentElementArray = [currentContent];
  48. var previousLineArray = self.generatedArray[lineNumber - 1];
  49. var pluckedArray = previousLineArray.slice(0, currentTabPosition);
  50. var newArray = pluckedArray.concat(currentElementArray);
  51. return newArray;
  52. },
  53. convertArrayToTabContentString: function(array){
  54. var newLines = [];
  55. for(var i = 0; i < array.length; i++){
  56. var lineArray = array[i];
  57. var lineArrayString = lineArray.join('\t');
  58. newLines.push(lineArrayString);
  59. }
  60. return newLines.join('\n');
  61. },
  62. getAutoFilledTabContent: function(text){
  63. var array = this.initLoadText(text);
  64. var string = this.convertArrayToTabContentString(array);
  65. return string;
  66. },
  67. init: function () {
  68. }
  69. };
  70. tsvToArray.init();
  71. })(jQuery);