Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

skava / chain-able-traverse   js

Repository URL to install this package:

Version: 6.0.1 

/ __tests__ / subexpr.ts

import traverse from '../src'

test('subexpr', () => {
  const obj = ['a', 4, 'b', 5, 'c', 6]
  const r = traverse(obj).map(function(x) {
    if (typeof x === 'number') {
      this.update([x - 0.1, x, x + 0.1], true)
    }
  })

  expect(obj).toEqual(['a', 4, 'b', 5, 'c', 6])
  expect(r).toEqual([
    'a',
    [3.9, 4, 4.1],
    'b',
    [4.9, 5, 5.1],
    'c',
    [5.9, 6, 6.1],
  ])
})

test('block', () => {
  const obj = [[1], [2], [3]]
  const r = traverse(obj).map(function(x) {
    if (Array.isArray(x) && !this.isRoot) {
      if (x[0] === 5) this.block()
      else this.update([[x[0] + 1]])
    }
  })

  expect(r).toEqual([[[[[[5]]]]], [[[[5]]]], [[[5]]]])
})