0.4.3 • Published 1 year ago

oniguruma-to-js v0.4.3

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

oniguruma-to-js

npm version npm downloads bundle JSDocs License

Convert Oniguruma-flavor Regexp to JavaScript native RegExp.

Supported Oniguruma features:

  • [:alnum:], [:alpha:] etc. POSIX bracket expressions
  • (?x) extended, free-spacing mode
  • (?i:..) flags modifiers
  • (?>..) atomic group via regex
  • ..*+ possessive quantifiers via regex
  • \h \H hex digit shorthands
  • \p{Blank} \p{Print} etc. Oniguruma-flavored unicode property escapes

Usage

npm i oniguruma-to-js
import { onigurumaToRegexp } from 'oniguruma-to-js'

const re = onigurumaToRegexp(`[[:alnum:]_]+`)
console.log(re) // /^[a-zA-Z0-9_]+$/
import { construct, syntaxLowering } from 'oniguruma-to-js'

const pattern = syntaxLowering(`(?x:
  \d+    # Match one or more digits
  \s*    # Match zero or more whitespace characters
  [A-Z]+ # Match one or more uppercase letters
)`)
console.log(pattern) // "\d+\s*[A-Z]+"

const re = construct(pattern)
console.log(re) // /\d+\s*[A-Z]+/

Additional Features

Lowering TextMate Grammar

Traverse all the regex patterns in a TextMate grammar, and apply syntaxLowering to lower the syntax.

import { loweringTextmateGrammar } from 'oniguruma-to-js/textmate'
import grammar from '../path/to/grammars/json.json'

const lowered = loweringTextmateGrammar(grammar)

Note this function will not guarantee the correctness of the result, you may need to verify the result manually.

Sponsors

License

MIT License © 2024-PRESENT Anthony Fu

0.4.3

1 year ago

0.4.2

1 year ago

0.4.1

1 year ago

0.4.0

1 year ago

0.3.3

1 year ago

0.3.2

1 year ago

0.3.1

1 year ago

0.3.0

1 year ago

0.2.5

1 year ago

0.2.4

1 year ago

0.2.3

1 year ago

0.2.2

1 year ago

0.2.1

1 year ago

0.2.0

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago