mergeSiblingPlainStringChildrenReducer.js.flow 795 B

1234567891011121314151617181920212223242526272829303132333435
  1. /* @flow */
  2. import { createStringTreeNode } from './../tree';
  3. import type { TreeNode } from './../tree';
  4. export default (
  5. previousNodes: TreeNode[],
  6. currentNode: TreeNode
  7. ): TreeNode[] => {
  8. const nodes = previousNodes.slice(
  9. 0,
  10. previousNodes.length > 0 ? previousNodes.length - 1 : 0
  11. );
  12. const previousNode = previousNodes[previousNodes.length - 1];
  13. if (
  14. previousNode &&
  15. (currentNode.type === 'string' || currentNode.type === 'number') &&
  16. (previousNode.type === 'string' || previousNode.type === 'number')
  17. ) {
  18. nodes.push(
  19. createStringTreeNode(
  20. String(previousNode.value) + String(currentNode.value)
  21. )
  22. );
  23. } else {
  24. if (previousNode) {
  25. nodes.push(previousNode);
  26. }
  27. nodes.push(currentNode);
  28. }
  29. return nodes;
  30. };