🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

elxr

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

elxr

Regular expression-like syntax generalized for list operations

0.0.3
latest
Source
npm
Version published
Weekly downloads
0
-100%
Maintainers
1
Weekly downloads
 
Created
Source

Elxr (List expressions)

Regular expression-like syntax for list operations. An experiment generalizing regex-like operations to a list.

npm

Install

To install the latest stable version of elxr -

yarn add elxr
// OR
npm install --save elxr

Syntax

Whitespaces are ignored (except within literals)

  • \s => Any string
  • \n => Any number
  • \b => Any boolean
  • \o => Any object (has to be a record) [TODO]
  • \a => Any array [TODO]
  • \T => Any truthy value
  • \F => Any falsey value
  • a|b => match a or b
  • a* => Zero or more consecutive instances of pattern a in the list
  • a+ => One or more consecutive instances of pattern a in the list
  • a{2, 5} => Min-Max quantifiers (example matches a more than 2 times but less than 5)
  • (\s\T) => Group (example matches any non-empty string)
  • ^a$ => ^ indicates start of list, and $ indicates end of list [TODO]
  • a,b => match a on current item followed by b on the next item (sequence)
  • [name \s\T] => match property of object (example matches items with property name as non-empty string)
  • > n | >= n | < n | <= n => Comparison with literal number [TODO]
  • /pat/ => Test string values against regex
  • "foobar" => String literal (example matches the string foobar)
  • -2.05 => Number literal (example matches the number -2.05)
  • true => Boolean literal (example matches the value true)
  • (?<myMatch> \s\T) => Named capture group (example matches \s\T pattern with the name myMatch) [TODO]
  • (?: \s\T) => Non-capturing group (example checks for \s\T but doesn't return it as a match) [TODO]

Examples

matchAll

// | Match for any number or any non-empty string or any object with `prop` is true
matchAll(/ \n | \s\T /, [null, 23, '', 'wow', false ]

// > {
//   groups: [
//     { index: 1, value: 23 }, // \n
//     { index: 3, value: 'wow' }, // \s\T
//   ]
// }
// | Match for property `seperator` true, followed by one or more list of id's that are non-empty strings
matchAll(/ [seperator true], [id \s\T]+ /, [
  { seperator: true },
  { id: '1' },
  { id: '2' },
  { id: '3' },
  { seperator: true },
  { id: '4' },
  { id: '5' },
  { id: '6' },
])

// > {
//   groups: [
//     {
//       index: 0,
//       value: [
//         [{ value: { seperator: true }, index: 0 }],
//         [{ value: [{ id: '1' }, { id: '2' }, { id: '3' }], index: 1 }],
//       ],
//     },
//     {
//       index: 4,
//       value: [
//         [{ value: { seperator: true }, index: 4 }],
//         [{ value: [{ id: '4' }, { id: '5' }, { id: '6' }], index: 5 }],
//       ],
//     },
//   ]
// }

replaceAll

// | Match for any number or any non-empty string or any object with `prop` is true
const replacer = (_, matches) => matches.value.reduce((a, b) => a + b, 0)
replaceAll(/ \n+ /, replacer, [ 'start', 3, 5, 'mid', 2, 0, 4, 'end' ])

// > [ 'start', 8, 'mid', 6, 'end' ]

License

Elxr is licensed under MIT

Keywords

regex

FAQs

Package last updated on 17 Feb 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts