0.4.3 • Published 10 months ago

oniguruma-to-js v0.4.3

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months 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

10 months ago

0.4.2

10 months ago

0.4.1

10 months ago

0.4.0

10 months ago

0.3.3

10 months ago

0.3.2

10 months ago

0.3.1

10 months ago

0.3.0

10 months ago

0.2.5

10 months ago

0.2.4

10 months ago

0.2.3

10 months ago

0.2.2

10 months ago

0.2.1

10 months ago

0.2.0

10 months ago

0.1.2

10 months ago

0.1.1

10 months ago

0.1.0

10 months ago