pairify

1.0.4 • Public • Published

Pairify

Finds balanced matches.

👉 Playground

The library matches the following balanced pairs:

  • { and }
  • ( and )
  • [ and ]
  • < and >
  • ' and '
  • " and "
  • ` and `
  • /* and */
  • // and \n

Example

Consider the following code.js file:

function getAnswer(answer = { value: 42 }) {
  return "The answer is " + answer.value;
}
console.log(getAnswer({ value: 100 }));

and when we pass it to Pairify

const Pairify = require('pairify');
const code = fs.readFileSync('./code.js').toString('utf8');

console.log(Pairify.analyze(code))

We'll get the following result:

[
  {"type":"curly","from":[1,29],"to":[1,42],"body":[28,13]},
  {"type":"round","from":[1,19],"to":[1,43],"body":[18,24]},
  {"type":"double-quotes","from":[2,10],"to":[2,26],"body":[54,16]},
  {"type":"curly","from":[1,44],"to":[3,2],"body":[43,45]},
  {"type":"curly","from":[4,23],"to":[4,37],"body":[111,14]},
  {"type":"round","from":[4,22],"to":[4,38],"body":[110,16]},
  {"type":"round","from":[4,12],"to":[4,39],"body":[100,27]}
]

Installation

API

  • Pairify.analyze(code: string): Pair[] - parses all the code and returns all the balanced matches
  • Pairify.match(code: string, line:number, position: number): Pair[] - returns balanced matches based on the provided line and position.

where Pair is the following

{
  type: string; // curly, round, square, angle, single-quotes, double-quotes, template-literal, comment-single-line or comment-block
  from: number[]; // [line, position],
  to: number[]; // [line, position],
  body: number[] // [char, length]
}

Package Sidebar

Install

npm i pairify

Weekly Downloads

1

Version

1.0.4

License

MIT

Unpacked Size

12.3 kB

Total Files

5

Last publish

Collaborators

  • krasimir