Re: RegExp support in WebIDL

On 7/4/12, Lachlan Hunt <lachlan.hunt@lachy.id.au> wrote:
> Hi,
>    WebIDL currently doesn't support RegExp values.  However, we are
> working on a feature for Opera's extensions where the ability to set a
> value of a dictionary property to a regular expression would be useful.
>
> I believe most other built-in ECMAScript objects can be represented in
> WebIDL.  RegExp seems to be the only built-in ES5 object that can't.
>
> Our use case is for a dictionary that looks something like this:
>
> dictionary Properties {
>    (DOMString or RegExp) pattern
>    ...
> }
>
> When it's the value is set to a DOMString, the match is a simple keyword
> match. When it's a regular expression, it can handle more complicated
> pattern matching.
>
> Possible solutions we could use given the current state of the spec are
> to either:
>
> 1. Use (DOMString or object) and then handle evaluating it as a
>     regular expression in prose.
>
> 2. Define the pattern as a DOMString only, which when set to an ES
>     RegExp value, will stringify as "/.../" and can then be parsed
>     again. This would require carfully differentiating between strings
>     intended for keyword matches and strings intended to be regular
>     expressions.
>
String.prototype.search does it the other way around.
http://ecma-international.org/ecma-262/5.1/#sec-15.5.4.12

| If Type(regexp) is Object and the value of the [[Class]] internal
| property of regexp is "RegExp", then let rx be regexp;
|
| Else, let rx be a new RegExp object created as if by the expression
| new RegExp(regexp) where RegExp is the standard built-in
| constructor with that name.

The RegExp constructor will call ToString on the pattern arg passed.

Not sure if this matters at all...
-- 
Garrett
Twitter: @xkit
personx.tumblr.com

Received on Thursday, 5 July 2012 07:34:58 UTC