goggles-quickstart icon indicating copy to clipboard operation
goggles-quickstart copied to clipboard

No warnings for invalid syntax submissions

Open devidw opened this issue 1 year ago • 5 comments

I noticed that invalid syntax gets silently submitted without any warnings.

Would be great to get notified about these syntax issues in submitted goggles.

This way, authors could fix them in their source files.

So, the goggle source code displayed on the brave search about page would equal the hosted code.

Here are some of the issues which don't result in warnings:

Invalid Value

Options

$discard=4,site=msn.com

https://github.com/Killthenews/brave/blob/de522bcc456646547f815a3de9ad4fcfa3494f35/news#L11-L18

Metadata

! public: foo
  • Expected behavior: Failing submission
  • Actual behavior: Gets submitted as private goggle

Illegal Range Value

Same for out of scope values for the action options:

$boost=30,site=github.com

https://github.com/9ktz/googles-technical/blob/cb75f9a9e4a9ce2f1d0a3304dbfddc57674fb96d/github.google#L8-L10

Multiple $'s

Same for having multiple $ inside the options part of the instructions.

bill_id=201720180SB1121$inurl,$boost=8

https://github.com/clening/DataProtectionGoggle/blob/19a3f9fd4bc9543c8f45ebfe4d0780826dc0ac18/dataprotection.goggle#L85

devidw avatar Sep 10 '22 15:09 devidw

Hi @devidw,

Thanks for opening this issue, that's great feedback! We'll look into it. Note, though that forbidding bill_id=201720180SB1121$inurl,$boost=8 might be problematic if you ever want to match a $ character in a URL (although I guess that might not be very common). Maybe we could show some lint messages in such cases instead of hard errors. Wdyt?

remusao avatar Sep 15 '22 11:09 remusao

Hey @remusao

Happy to hear that 🙂

When talking about these cases with multiple $’s inside the instruction lines, I guess this fully depends on how they are interpreted by Brave.

For example, taking this example:

a$inurl,$boost

Would this be interpreted as:

  • No (unescaped?) $ allowed in pattern:
    • Pattern: a
    • Options: inurl, boost

Or:

  • Valid options string after last $:
    • Pattern: a$inurl,
    • Options: boost

Or even differently?

Perhaps escape characters for goggle syntax critical tokens could help here?

devidw avatar Sep 15 '22 16:09 devidw

Hi @devidw,

a$inurl,$boost

Would be interpreted as:

  • Pattern: a$inurl,
  • Options: boost

Not sure if escaping would help since it's not really expected for a $ to be part of the options (it's not valid as part of a domain name) so it would not really make sense to have $ in options I think.

Wdyt?

remusao avatar Oct 23 '22 21:10 remusao

@remusao alright, I see.

In this case what I pointed out as error "Multiple $'s" would be indeed not an error at all but valid syntax.

The only problematic situation I could image would be someone writing an instruction with multiple dollar signs and don't want to add options to it. If the last part of the pattern matches one option, it would not be interpreted as pattern, but rather as instruction.

For example, if we want to write a pattern like:

a$boost

And actually want to have it interpreted as a$boost and not as only a.

The workaround would be to $boost to the end.

a$boost$boost

This would not change the results since boost is the default behavior.

And the final pattern would be the expected a$boost.

Perhaps it's even possible to add a single $ to the end and since it's the last one, it would be interpreted as separator for the options but wouldn't do anything. The only role would be to prevent the dollar sign before that one to be interpreted as option.

So something like a little hacky:

a$boost$

In case this works as described?

Alternatively, escaping in the pattern could help, so there would be no need to add a tailing dollar sign.

a\$boost

But I don't know if it makes sense to implement escaping because of the possibly unnecessary complexity overload.

devidw avatar Oct 24 '22 19:10 devidw

Adding a $ at the end might already work, actually. I did not check but I expect the rule should be parsed correctly in the way you described in your example.

remusao avatar Oct 24 '22 19:10 remusao