Giter Site home page Giter Site logo

unist-util-find-all-between's Introduction

unist-util-find-all-between

Travis Coverage Status

unist utility to find nodes between two nodes.

Install

npm i -S unist-util-find-all-between

Usage

const between = require('unist-util-find-all-between')
const u = require('unist-builder')

const parent = u('tree', [
  u('leaf', 'leaf 1'),
  u('node', [u('leaf', 'leaf 2'), u('leaf', 'leaf 3')]),
  u('leaf', 'leaf 4'),
  u('node', [u('leaf', 'leaf 5')]),
  u('leaf', 'leaf 6'),
  u('void'),
  u('leaf', 'leaf 7')
])

const result = between(parent, 0, 4, 'leaf')

console.log(result)

Yields:

[ { type: 'leaf', value: 'leaf 4' } ]

You can also pass a node in as start and/or end. For example given the tree above,

// ...

const start = {
  type: 'leaf',
  value: 'leaf 4'
}

const end = {
  type: 'leaf',
  value: 'leaf 6'
}

const result = between(parent, start, end, 'node')

console.dir(result, {depth: null})

Yields:

[ { type: 'node',
    children: [ { type: 'leaf', value: 'leaf 5' } ] } ]

API

between(parent, start, end[, test])

Find all child nodes of parent, that pass test between but not including start and end.

parent

Type: Node

Parent node to search through.

start

Type: Node | index

Child of parent node. Can be an actual node or the index of a child node. If a node is given, unist-util-find is used to find the node.

end

Type: Node | index

Child of parent node. Can be an actual node or the index of a child node. If a node is given, unist-util-find is used to find the node.

test?

Type: Function | String | Object | Array

Test to find nodes. Uses unist-util-is to check.

Related

Contribute

PRs accepted and greatly appreciated.

License

MIT © Paul Zimmer

unist-util-find-all-between's People

Contributors

dependabot[bot] avatar montogeek avatar mrzmmr avatar trieloff avatar wooorm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

unist-util-find-all-between's Issues

fix the "Error [ERR_REQUIRE_ESM]: require() of ES Module not supported"

Can you support also ESM with "type": "module", in package.json.

The main issue is unist-util-find actually, and it needs to use import instead of require() in index.js file

import {is} from 'unist-util-is';
import find from 'unist-util-find';

Can you upgrade the dependencies also?

Lack of the upgrade causes the error "Error [ERR_REQUIRE_ESM]: require() of ES Module not supported" in nextjs application.

from

  "dependencies": {
    "unist-util-find": "^1.0.1",
    "unist-util-is": "^4.0.2"
  },

to

  "dependencies": {
    "unist-util-find": "^1.0.3",
    "unist-util-is": "^5.2.1"
  },

Last node is missing

findAllBetween does not include last node which I guess is unexpected and not mentioned in documentation.

I think even the example is misleading because it misses "." at the end.

It is also inconvenient when used with node rather than index because you have to switch to index syntax anyway even when you already have second node.

Add types

I would be willing to add types for this module.
In order to use dtslint I would have to create a local bundle.

My idea is to align the build pipeline with syntax-tree/unist-util-find-all-after.

With this the local module can be used to test the types correctly.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.