String Recursion

by Matthew Day

HTML

<div ng-app="app">
  <div ng-controller="SplitController as vm">
<!--     <ul>
      <li ng-repeat="value in vm.someArr">{{value}}</li>
    </ul> -->
    <form ng-submit="vm.split(vm.string, vm.separator)">
      <input type="text" placeholder="string" value="{{vm.string}}" />
      <input type="text" placeholder="separator" value="{{vm.separator}}" />
      <button type="submit">Submit</button>
    </form>
    <pre ng-if="vm.cycle[1]">{{vm.cycle | json}}</pre>
    <div ng-if="vm.final">RESULT: <span>{{vm.final}}</span></div>
  </div>
</div>

CSS

body {
  color: #444;
}

input {
  padding: 4px;
}

span {
  color: crimson;
}

JavaScript

angular.module('app', []);

angular.module('app')
.controller('SplitController', function() {

	var vm = this;
  vm.string = '1/23/4567/abcd/e';
  vm.separator ='/';
  vm.cycle = {};
  vm.final = '';
  
  let _count = '0';
  
  vm.split = ((string, separator) => {
  	let _index = string.indexOf(separator);
  	if(_index == -1) {
      _count++;
    	vm.cycle[_count] = {};
      vm.cycle[_count].beginningString = string;
      vm.cycle[_count].newIndex = _index;
      vm.cycle[_count].separatorIndex = string.indexOf(separator);
      vm.cycle[_count].result = string;
    	vm.final += string;
      return string;
    }
    _count++;
    vm.cycle[_count] = {}
    vm.cycle[_count].beginningString = string;
    vm.cycle[_count].newIndex = _index;
    vm.cycle[_count].separatorIndex = string.indexOf(separator);
    vm.cycle[_count].result = string.slice(0, _index);
    vm.cycle[_count].newStringPassedToFn = string.slice(_index + separator.length);
    vm.final += string.slice(0, _index);
    return string.slice(0, _index) + vm.split(string.slice(_index + separator.length), separator);
  });
  
});