My email totally mangled your post.  Anyway, if you think you've got code
that is equivalent to Flash's  String.match, that's good enough for now.
If folks find issues later we can improve on the utility function.

If you want to alter the compiler output, see how I handled Array.sortOn
in FunctionCallEmitter.java.  I think you can do something similar for
String.match and String.search.

Thanks,
-Alex

On 7/20/17, 2:28 PM, "Harbs" <harbs.li...@gmail.com> wrote:

>No. We thought that the “?” found the string in Flash. It does not.
>
>trace("https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fww
>w.google.com%2Fsearch%3Fq%3Ddogs&data=02%7C01%7C%7Ce68f4223e52d48e8c03908d
>4cfb6524c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636361829356324151&
>sdata=voY1pLBiaj2u1GDu0YeKMipu%2FGRHwMWQzRRA0JCTkZc%3D&reserved=0".match("
>?"));
>trace("https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fww
>w.google.com%2Fsearch%3Fq%3Ddogs&data=02%7C01%7C%7Ce68f4223e52d48e8c03908d
>4cfb6524c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636361829356324151&
>sdata=voY1pLBiaj2u1GDu0YeKMipu%2FGRHwMWQzRRA0JCTkZc%3D&reserved=0".search(
>"?"));
>trace("https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fww
>w.google.com%2Fsearch%3Fq%3Ddogs&data=02%7C01%7C%7Ce68f4223e52d48e8c03908d
>4cfb6524c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636361829356324151&
>sdata=voY1pLBiaj2u1GDu0YeKMipu%2FGRHwMWQzRRA0JCTkZc%3D&reserved=0".indexOf
>("?"));
>
>outputs:
>
>null
>-1
>29
>
>> On Jul 21, 2017, at 12:00 AM, Alex Harui <aha...@adobe.com.INVALID>
>>wrote:
>> 
>> I think I'm still confused.  My current thinking is that in Flash there
>> are strings you can pass in that are "invalid RegExp" that will still
>>find
>> matches in a string.  Isn't that what Yishay showed?  IOW, passing in
>>just
>> "?" in Flash will find question marks in a string but is an error in JS
>> because it isn't valid RegExp.
>> 
>> So, right now I think the utility function needs to catch the error and
>> either escape the string so it is valid RegExp and call match() or use
>> indexOf() and compute the same result.  It should not always return
>>null.
>> Then I think it would completely implement how it worked in Flash and
>>the
>> users won't have to figure out how to regex-ify the strings in the apps
>> they are porting.
>> 
>> My 2 cents,
>> -Alex
>> 
>> 
>> 
>> On 7/20/17, 12:55 PM, "Harbs" <harbs.li...@gmail.com
>><mailto:harbs.li...@gmail.com>> wrote:
>> 
>>> After all this discussion, I’m having second thoughts about this whole
>>> thing.
>>> 
>>> What’s the point of using an invalid RegExp that will not match
>>>anything?
>>> 
>>> I think the JS behavior makes more sense than the Flash behavior. If a
>>> RegExp is invalid, it should throw an error rather than never matching
>>> anything. The use of such a RegExp in the first place can only be
>>> described as a bug.
>>> 
>>> “Fixing” the JS behavior to match the Flash behavior is the wrong thing
>>> to do.
>>> 
>>>> On Jul 20, 2017, at 10:34 PM, Harbs <harbs.li...@gmail.com> wrote:
>>>> 
>>>> new RegExp({})
>>>> returns:
>>>> /[object Object]/
>>>> 
>>>> I think the wrapping that I did in the code I already committed is
>>>> correct:
>>>> 
>>>> try{return input.match(pattern);}
>>>> catch (e:Error){return null;}
>>>> 
>>>> If the try fails, that means the RegExp is an invalid expression and
>>>> will not match anything in Flash. In that case, match should always
>>>> return null and search should always return -1.
>>>> 
>>>> I do think that warning developers against using strings is a good
>>>> idea. Accepting any value and automatically converting it to RegExp
>>>> seems like a poorly conceived idea to me...
>>>> 
>>>>> On Jul 20, 2017, at 9:48 PM, Alex Harui <aha...@adobe.com.INVALID
>>>>> <mailto:aha...@adobe.com.INVALID <mailto:aha...@adobe.com.INVALID>>>
>>>>>wrote:
>>>>> 
>>>>> I'm confused.  Doesn't Yishay's example use syntax that Harbs claimed
>>>>> threw an error?
>>>>> 
>>>>> Anyway, I can believe the three steps Harbs listed are correct for JS
>>>>> since step 1 might just happen via implicit type coercion. I suppose
>>>>> someone could test it by seeing if JS handles "new RegExp({})";
>>>>> 
>>>>> But since there are differences between SWF and JS I want to first
>>>>>make
>>>>> sure we have agreement that the goal here is to be backward
>>>>>compatible
>>>>> with SWF if we can.  I don't think we should be requiring folks to
>>>>> modify
>>>>> existing passing of strings or getting the compiler to try to modify
>>>>> those
>>>>> strings if we can figure out how to get match() in JS to be
>>>>>equivalent
>>>>> to
>>>>> SWF's match().
>>>>> 
>>>>> So I think Herbs suggested wrapping in try catch like this, correct?
>>>>> 
>>>>> public function match(input:String, pattern:*):Array
>>>>> {
>>>>> COMPILE::SWF
>>>>> {
>>>>>   return input.match(pattern);
>>>>> }
>>>>> COMPILE::JS
>>>>> {
>>>>>   try
>>>>>   {
>>>>>     return input.match(pattern);
>>>>>   }
>>>>>   catch (e:Error)
>>>>>   {
>>>>>     pattern = pattern.toString();
>>>>>     if (input.indexOf(pattern) != -1)
>>>>>       return [ pattern ]; // or whatever should be returned
>>>>>     return null;
>>>>>   }
>>>>> }
>>>>> }
>>>>> 
>>>>> I don't think we should use trace to tell folks not to use String.
>>>>>You
>>>>> are welcome to add it to the ASDoc though.
>>>>> 
>>>>> -Alex
>>>>> 
>>>>> 
>>>>> On 7/20/17, 10:52 AM, "yishayw" <yishayj...@hotmail.com
>>>>><mailto:yishayj...@hotmail.com>
>>>>> <mailto:yishayj...@hotmail.com <mailto:yishayj...@hotmail.com>>>
>>>>>wrote:
>>>>> 
>>>>>> I think there would still be a difference between flash and js
>>>>>> because the
>>>>>> flash implementation (counter to AS3 documentation) always returns
>>>>>> null
>>>>>> when
>>>>>> an invalid regex is passed as a string. So according to your
>>>>>>suggested
>>>>>> implementation for
>>>>>> 
>>>>>> Var s: String = "m?o";
>>>>>> Var a:Array = s.match("?")
>>>>>> 
>>>>>> a  is null in flash but ["?"] in JS.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> --
>>>>>> View this message in context:
>>>>>> 
>>>>>> 
>>>>>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fapach
>>>>>>e- 
>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fapac
>>>>>>he->
>>>>>> fle 
>>>>>> 
>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fapac
>>>>>>he 
>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fapac
>>>>>>he>
>>>>>> -fle>
>>>>>> x-development.2333347.n4.nabble.com
>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fx-de
>>>>>>velopment.2333347.n4.nabble.com%2F&data=02%7C01%7C%7Ce68f4223e52d48e8
>>>>>>c03908d4cfb6524c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6363618
>>>>>>29356324151&sdata=TG6M8KryM8pQq0jjjBGCjM30i4j8R78tIYwdKo9S9o4%3D&rese
>>>>>>rved=0>
>>>>>> 
>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fx-de
>>>>>>ve 
>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fx-de
>>>>>>ve>
>>>>>> lopment.2333347.n4.nabble.com
>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Flopm
>>>>>>ent.2333347.n4.nabble.com%2F&data=02%7C01%7C%7Ce68f4223e52d48e8c03908
>>>>>>d4cfb6524c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6363618293563
>>>>>>24151&sdata=n7GTeuktiyF%2FrxSvm%2BtZqbcZ1RlX6xbLT8PXnFjkMhk%3D&reserv
>>>>>>ed=0>%2F&data=02%7C01%7C%7C6ec68d20c01e4fae6173
>>>>>> 
>>>>>>08d4cfa95280%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C63636177351
>>>>>>99
>>>>>> 
>>>>>>74472&sdata=UiouHqnKJ4SI1gEcaeu9N5%2FHqGYle%2FKELTCvKRo8c8c%3D&reserv
>>>>>>ed
>>>>>> =0>%2FFlexJS-String-match-tp63392p63467.ht
>>>>>> 
>>>>>> 
>>>>>>ml&data=02%7C01%7C%7C381f79bbe2594b1cab0808d4cf9af1a0%7Cfa7b1b5a7b344
>>>>>>38
>>>>>> 794
>>>>>> 
>>>>>> 
>>>>>>aed2c178decee1%7C0%7C0%7C636361711762211281&sdata=gA2I9N%2Bq%2F%2FvIL
>>>>>>p7
>>>>>> C3c
>>>>>> UQHenXZDXmu0lK3PtJ%2FnhetW4%3D&reserved=0
>>>>>> Sent from the Apache Flex Development mailing list archive at
>>>>>> Nabble.com 
>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fnabb
>>>>>>le.com%2F&data=02%7C01%7C%7Ce68f4223e52d48e8c03908d4cfb6524c%7Cfa7b1b
>>>>>>5a7b34438794aed2c178decee1%7C0%7C0%7C636361829356324151&sdata=wstsyap
>>>>>>Iw9kn5y22ZFoCDiYuBb%2FGD0h5PX0OEPLHcWU%3D&reserved=0>
>>>>>> 
>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fnabb
>>>>>>le 
>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fnabb
>>>>>>le>
>>>>>> 
>>>>>>.com%2F&data=02%7C01%7C%7C6ec68d20c01e4fae617308d4cfa95280%7Cfa7b1b5a
>>>>>>7b
>>>>>> 
>>>>>>34438794aed2c178decee1%7C0%7C0%7C636361773519974472&sdata=1Eu83yHYa6T
>>>>>>aL
>>>>>> rDm0RmuENLfQREVxolgz4%2BbWUgKB9c%3D&reserved=0>.
>

Reply via email to