Closed mathiasbynens closed 7 years ago
Fixed by #6. Released in v1.2.0.
regexgen
return value. TL;DR IMHO, it makes more sense to have regexgen(foo)
return a string instead of a regular expression object. WDYT?Another option would be to just return the Trie from regexgen. Then the user could call toString
or toRegExp
themselves.
I do like the convenience of just returning a RegExp though. You could do regexgen(words).source
to get a string without the slashes when combining. Is your main concern with bugs in JS implementations? The one you linked seems to have been fixed in v8. Are there others you know of?
Another option would be to just return the Trie from regexgen. Then the user could call
toString
ortoRegExp
themselves.
I like this option a lot. As a bonus, doing so would match the Regenerate API. :)
Is your main concern with bugs in JS implementations […]
I don’t know of any others off the top of my head, but if the risk of JS engine bugs can be avoided, then that’s a plus in my book.
That said, my main concern is that the API — in this case, the return value — should match the common use case, not the uncommon one. But perhaps I’m wrong in thinking that getting the pattern as a string is the most common/sensible use case.
I do like the convenience of just returning a RegExp though.
Could you point me to some examples of where you’re using this pattern (see what I did there)? Are you using regexgen at runtime?
Are you using regexgen at runtime?
No, but my build scripts don't need to combine regexes. So I just do regexgen(words, 'g')
instead of something like '/' + regexgen(words) + '/g'
.
I’m assuming this project’s main usage scenario is in build scripts (rather than using it dynamically at run-time), just like Regenerate. Is this correct?
If so, how about returning a string representing the pattern instead of a RegExp object? This seems more useful:
new RegExp(string)
. (But this is only useful at run-time, which I think is not the main use case of this project.)Strings compose more easily. Consider a build script that does something like…
Instead, currently you’d have to call
RegExp#toString
(which is surprisingly buggy) on each of regexgen’s return values and remove the first and last/
as well as the flags, if any, or use.source
.You could then also remove the logic for supporting flags, as the user would just deal with that themselves.