An experimental safe and functional API for JavaScript regexes
/*
* Dasherize camelCased identifiers inside string literals
*/
let code = {|
let borderLeftColor = "borderLeftColor";
let borderRightColor = "borderRightColor";
|};
code |> Revamp.replace({|"([^"]+)"|}, /* Matches the content of string literals */
Revamp.replace("[A-Z]", letter => /* Matches uppercase letters */
"-" ++ letter |> Js.String.toLowerCase)) /* Convert to lower case and prefix with a dash */
|> Js.log;
/* Outputs:
let borderLeftColor = "border-left-color";
let borderRightColor = "border-right-color";
*/
npm install --save @glennsl/bs-revamp
Then add @glennsl/bs-revamp
to bs-dependencies
in your bsconfig.json
:
{
...
"bs-dependencies": ["@glennsl/bs-revamp"]
}
- A sane, safe API
- Low performance overhead (secondary)
- Full feature parity
For the moment, please see the interface file, Revamp.rei.
- [BREAKING] Removed
Match.matches
, deprecated in 0.1.0, due to being unsound
- Changed type of
captures
fromSequence.t(array(string))
toSequence.t(list(option(string)))
because the former was unsound. - Added
Match.match
andMatch.captures
- Deprecated
Match.matches
due to being unsound