amp-bind: Support Math functions#7797
Conversation
| ], | ||
| '[object Math]': | ||
| [ | ||
| Math.abs, |
There was a problem hiding this comment.
add sign (we polyfill it already so support is there)
|
|
||
| /** @const @private {!Object} */ | ||
| this.builtInScope_ = Object.create(null); | ||
| this.builtInScope_['Math'] = Math; |
There was a problem hiding this comment.
So if someone names their state "Math", it will be override without warning with this?
I wonder if we should put all builtins under a single namespace and prevent that to be used as a top level key for state. builtins.Math.foo? AMP.Math.foo? ...
There was a problem hiding this comment.
That is already something you can do in JS and it might be counter-intuitive to have to prefix a call to Math.random in bind when you don't have to in JS.
I imagine we'll have the complete list of all these built-in scopes published somewhere. If users end up overwriting one then it's likely they're not going to use ours anyway e.g. would someone naming their state "Math" reasonably expect that certain uses of Math will refer to the custom state, and others to our built-in?
There was a problem hiding this comment.
Yea, that was intended to replicate JS behavior. I think it's fine and the error message will be clear -- e.g. if Math is overriden with a number:
[object Number].random() is not a supported function.
There was a problem hiding this comment.
I am still concerned about this. Requiring state definition be aware of a list of reserved keywords is not a good idea. In real-world scenarios, state is normally not handwritten, it is auto-generated from some data and a lot of times that data itself is based on user-input. Requiring the developer to sanitize the state to account for our reserved keywords is not great.
Imagine a scenario where server-side template uses username as amp-bind variables:
// this is a server-size template,`{{Username}}` will be replaced by a JSEncoded string of the username at render time
<button on="tap:AMP.setState({{Username}}, true)>Activate your account</button>
<div [show]="{{Username}}">
You account is active.
Your lucky number is <span [text]="Math.random()"></span>
</div>
Now with this code everything is fine until someone decides to use Math as their username causing a user-specific, hard-to-debug issue.
Maybe the right solution is clearly separating builtin functions from state and state property access syntax. e.g. -20 | Math.floor instead of Math.floor(-20) this way, Math is not longer a scope same way state is a scope.
There was a problem hiding this comment.
I see your point, but this issue isn't limited to the Math object. A server-side template that performs AMP.setState({{Username}}='foo') will also overwrite <amp-state> data with the same id value. IMO this "gotcha" is worth the simplicity and flexibility it provides (e.g. <amp-state> can be used as default values for mutable data).
Personally not a fan of pipe syntax, but I can probably avoid adding Math to the scope as you mention by baking it in to the expression parser. Perhaps we should leave out Math altogether -- the expression floor(-20) shouldn't ever conflict with user data since we disallow custom functions.
Thanks for the suggestion.
There was a problem hiding this comment.
I like your proposal, inducing removing Math. prefix.
There was a problem hiding this comment.
Done. We might want to add static functions from other built-in objects in the future, e.g. Date.now(), but I'm not aware of any overlapping function names.
e65654c to
d3a64f8
Compare
d3a64f8 to
2572517
Compare
|
I strongly suggest keeping the |
|
@jridgewell Agree that would be ideal, though I spent some time trying to make this work in the expression parser and so far no dice. I'll merge this now but first remove it from public documentation ( BTW I scanned through all JS built-in objects and looks like the only collision is |
It would require setting |
|
That's close to how it originally worked. I was trying to get the parser to parse |
|
Is it needed for the parser to do this? We can just set the property on the state, then forbid assignments to it? |
|
It's the only way to completely avoid the problem that Ali pointed out.
Preventing assignment would cause AMP.setState({Math: 'foo'}) to fail,
which may cause unintended behavior on pages that assume this to work.
…On Tue, Feb 28, 2017 at 7:09 PM Justin Ridgewell ***@***.***> wrote:
Is it needed for the parser to do this? We can just set the property on
the state, then forbid assignments to it?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#7797 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ANd2kHsr8ML5zRh-yhHLQN3NgsA_Aragks5rhLcagaJpZM4MLynl>
.
--
You received this message because you are subscribed to the Google Groups
"amphtml-eng-github" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to ***@***.***
To post to this group, send email to ***@***.***
To view this discussion on the web visit
https://groups.google.com/a/google.com/d/msgid/amphtml-eng-github/ampproject/amphtml/pull/7797/c283202345%40github.com
<https://groups.google.com/a/google.com/d/msgid/amphtml-eng-github/ampproject/amphtml/pull/7797/c283202345%40github.com?utm_medium=email&utm_source=footer>
.
--
You received this message because you are subscribed to the Google Groups
"amphtml-eng" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to ***@***.***
To post to this group, send email to ***@***.***
To view this discussion on the web visit
https://groups.google.com/a/google.com/d/msgid/amphtml-eng/ampproject/amphtml/pull/7797/c283202345%40github.com
<https://groups.google.com/a/google.com/d/msgid/amphtml-eng/ampproject/amphtml/pull/7797/c283202345%40github.com?utm_medium=email&utm_source=footer>
.
|
We don't necessarily have to prevent overriding it. Just read @aghassemi's comments. I don't see how removing the |
Because the expression parser can disambiguate between |
|
Yah, so my expression is <button on="tap:AMP.setState({{Username}}=foo)>Activate your account</button>
So now my |
|
Actually the unit test linked above tests that exact scenario, check it out. 😃 The expression grammar doesn't define function invocation as |
|
Ahh, now I see it. I'm still not a fan of the no |
kmh287
left a comment
There was a problem hiding this comment.
Would like to re-review this before merge
* initial setup for extension nexxtv-player * added nexxtv player logic * nexxtv player bugfixes, cleanup, tests, docs * added video interface, changed attribute start to seek-to * reworked video interface for nexxtv-player * added message handler for nexxtv player and tests * nexxtv player minor fixes & cleanup * nexxtv player changed indents from 4 spaces to 2 * added unlayoutCallback for nexxtv player * initial setup for extension nexxtv-player * added nexxtv player logic * nexxtv player bugfixes, cleanup, tests, docs * added video interface, changed attribute start to seek-to * reworked video interface for nexxtv-player * added message handler for nexxtv player and tests * nexxtv player minor fixes & cleanup * nexxtv player changed indents from 4 spaces to 2 * added unlayoutCallback for nexxtv player * fixed linting issues (#7673) * initial setup for extension nexxtv-player * added nexxtv player logic * nexxtv player bugfixes, cleanup, tests, docs * added video interface, changed attribute start to seek-to * reworked video interface for nexxtv-player * added message handler for nexxtv player and tests * nexxtv player minor fixes & cleanup * nexxtv player changed indents from 4 spaces to 2 * added unlayoutCallback for nexxtv player * initial setup for extension nexxtv-player * added nexxtv player logic * nexxtv player bugfixes, cleanup, tests, docs * added video interface, changed attribute start to seek-to * reworked video interface for nexxtv-player * added message handler for nexxtv player and tests * nexxtv player minor fixes & cleanup * fixed linting issues (#7673) * nexxtv player review fixes (#7816) * nexxtv player: updated validation rules (#7816) * nexxtv player validator ordered alphabetical, changed spec_url * fire amp-dom-update event on insert and replace (#7819) * temp * trigger `amp-dom-update` event on insert and replace * switch -amp-form to i-amp-form * Validator Rollup (#7844) * Revision bump. * Revision bump for amp-playbuzz changes in #7450 * Revision bump. * Allow filtering by HtmlFormat (AMP, AMP4ADS) in the code generator. * Revision bump. * Revision bump due to Github pull. * Code generation now driven by a variable LIGHT, which is broader than the previous GENERATE_DETAILED_ERRORS distinction. LIGHT implies filtered for specific format (AMP or AMP4ADS, and only amp.validator.validateSaxEvents, and no detailed errors. * Generate ValidatorRules.directAttrLists and globalAttrs and ampLayoutAttrs, reducing overhead by indirection. * Implement parallax effect extension (#7794) * Do not set hidden attribute on hide/collapse (#7879) * amp-bind: Support `Math` functions (#7797) * initial commit for Math in amp-bind * fix lint * ali's comment * avoid scope conflicts with built-in functions * remove Math functions from documentation * Measure 3P ad latency (#7902) * Update spec URLs from github to ampproject. (#7901) * Update github urls to ampproject urls * test .out updated * Too many slashes. * Moved Developing.md and Design_Principles.md (#7908) * Rename DEVELOPING.md to contributing/DEVELOPING.md * Move files to new folder * Renaming toggle to toggleVisibility because it was conflicting with sidebar and breaking it (#7855) * disable scrollRestoration auto for embed case (#7899) * Disable Fast Fetch for all ads when remote.html is used. (#7906) * Fix DoubleClick Fast Fetch bugs around categoryExclusions and tagForChildDirectedTreatment (#7843) * Fix incorrect parameter name for `tagForChildDirectedTreatment` in DoubleClick. * Added unit test for tagForChildDirectedTreatment. * Fixed the categoryExclusions bug in Fast Fetch DoubleClick. * Removed parens in arrow functions to satisfy linter * Adds two new experiment IDs (#7850) * Adds two new experiment IDs to distinguish "any externally triggered" experiment from "any internally triggered". Also updates tests to remove a number of assumptions that only a single eid will be populated. * Use return val to detect "externally selected"; test updates. * Updated network implementation guide. (#7862) * Updated network impl guide. * Changed 'validation' to 'verification' * Cid timeout error should not be dev error (#7911) * Fix amp-ad test (#7918) * Update amp-install-serviceworker.md (#7932) Fully escape javascript regex. * Update amp-cache-modifications.md (#7933) Add `data-no-service-worker-fallback-shell-url` as a URL to be rewritten as absolute. * amp-fx-parallax Don't use global (#7942) * Viewer integration: rewrite error message to indicate request name (#7923) * rewrite error message * update * ticks * Fix up links in DEVELOPING.md (#7944) We moved DEVELOPING.md to the contributing folder but didn't update many of the relative links accordingly. * Popin ad extension document updated. (#7674) * Add popin ad extension. * register popin. * Add resizeable attribute. * Remove resizable. * Implemented the render-start and no-content APIs. * Fixed lint. * Remove quatation. * Use tei@popin.cc * Rebase old commit . * Fixed document because tag was not closed. * I replaced the removed double quotes. * Add double quotes. * Support for bind expressions in mustache templates (#7602) * first pass at adding/removing subtrees * tests passing * Add ability to add and remove bindings in the subtree rooted at a specific node * lint fixes * merge conflict * ci issues * some cleanup * pr comments * pr comments, new method of removing bindings for node and its children * fix some lint warnings * test and lint fixes * mutation observer * update comments * add observer * naive implementation * cleanup * clean * cleanup bind impl * very simple example of bind in a template * pr comments * lint errors * pr comments * cleanup * lint errors * pr comments * pr comments and lint warnings * typo * comments * more lint warnings * pr comment * change README * cleanup * pr comments * pr comments 2 * lint warnings * don't use foreach on Nodelist * casting * more ci warnings * even more ci warnings * even more ci warnings * even more ci issues * even more ci comments * even more ci issues * pr comments * more pr comments * fix refactoring oversight * pr comments * pr comments * merge * pr comments * ci issues * pr comments * assertElement * pr comments * typo * updating sanitizer * fixing up sanitizer test * pr comments * pr comments * expanded on amp-mustache tests * pr comments * remove class from whitelist * restore whole sandbox * update mustache validator test and output * pr comments * nexxtv player gulp check-types fixes (#7816) * nexxtv player fix error gulp presumbit with postmessage (#7816) * added dependency check for nexxtv player (#7816) * nexxtv player minor fix in validator (#7816) * nexxtv player fixed validator (#7816) * fixed validator (#7816)
* initial commit for Math in amp-bind * fix lint * ali's comment * avoid scope conflicts with built-in functions * remove Math functions from documentation
* initial setup for extension nexxtv-player * added nexxtv player logic * nexxtv player bugfixes, cleanup, tests, docs * added video interface, changed attribute start to seek-to * reworked video interface for nexxtv-player * added message handler for nexxtv player and tests * nexxtv player minor fixes & cleanup * nexxtv player changed indents from 4 spaces to 2 * added unlayoutCallback for nexxtv player * initial setup for extension nexxtv-player * added nexxtv player logic * nexxtv player bugfixes, cleanup, tests, docs * added video interface, changed attribute start to seek-to * reworked video interface for nexxtv-player * added message handler for nexxtv player and tests * nexxtv player minor fixes & cleanup * nexxtv player changed indents from 4 spaces to 2 * added unlayoutCallback for nexxtv player * fixed linting issues (ampproject#7673) * initial setup for extension nexxtv-player * added nexxtv player logic * nexxtv player bugfixes, cleanup, tests, docs * added video interface, changed attribute start to seek-to * reworked video interface for nexxtv-player * added message handler for nexxtv player and tests * nexxtv player minor fixes & cleanup * nexxtv player changed indents from 4 spaces to 2 * added unlayoutCallback for nexxtv player * initial setup for extension nexxtv-player * added nexxtv player logic * nexxtv player bugfixes, cleanup, tests, docs * added video interface, changed attribute start to seek-to * reworked video interface for nexxtv-player * added message handler for nexxtv player and tests * nexxtv player minor fixes & cleanup * fixed linting issues (ampproject#7673) * nexxtv player review fixes (ampproject#7816) * nexxtv player: updated validation rules (ampproject#7816) * nexxtv player validator ordered alphabetical, changed spec_url * fire amp-dom-update event on insert and replace (ampproject#7819) * temp * trigger `amp-dom-update` event on insert and replace * switch -amp-form to i-amp-form * Validator Rollup (ampproject#7844) * Revision bump. * Revision bump for amp-playbuzz changes in ampproject#7450 * Revision bump. * Allow filtering by HtmlFormat (AMP, AMP4ADS) in the code generator. * Revision bump. * Revision bump due to Github pull. * Code generation now driven by a variable LIGHT, which is broader than the previous GENERATE_DETAILED_ERRORS distinction. LIGHT implies filtered for specific format (AMP or AMP4ADS, and only amp.validator.validateSaxEvents, and no detailed errors. * Generate ValidatorRules.directAttrLists and globalAttrs and ampLayoutAttrs, reducing overhead by indirection. * Implement parallax effect extension (ampproject#7794) * Do not set hidden attribute on hide/collapse (ampproject#7879) * amp-bind: Support `Math` functions (ampproject#7797) * initial commit for Math in amp-bind * fix lint * ali's comment * avoid scope conflicts with built-in functions * remove Math functions from documentation * Measure 3P ad latency (ampproject#7902) * Update spec URLs from github to ampproject. (ampproject#7901) * Update github urls to ampproject urls * test .out updated * Too many slashes. * Moved Developing.md and Design_Principles.md (ampproject#7908) * Rename DEVELOPING.md to contributing/DEVELOPING.md * Move files to new folder * Renaming toggle to toggleVisibility because it was conflicting with sidebar and breaking it (ampproject#7855) * disable scrollRestoration auto for embed case (ampproject#7899) * Disable Fast Fetch for all ads when remote.html is used. (ampproject#7906) * Fix DoubleClick Fast Fetch bugs around categoryExclusions and tagForChildDirectedTreatment (ampproject#7843) * Fix incorrect parameter name for `tagForChildDirectedTreatment` in DoubleClick. * Added unit test for tagForChildDirectedTreatment. * Fixed the categoryExclusions bug in Fast Fetch DoubleClick. * Removed parens in arrow functions to satisfy linter * Adds two new experiment IDs (ampproject#7850) * Adds two new experiment IDs to distinguish "any externally triggered" experiment from "any internally triggered". Also updates tests to remove a number of assumptions that only a single eid will be populated. * Use return val to detect "externally selected"; test updates. * Updated network implementation guide. (ampproject#7862) * Updated network impl guide. * Changed 'validation' to 'verification' * Cid timeout error should not be dev error (ampproject#7911) * Fix amp-ad test (ampproject#7918) * Update amp-install-serviceworker.md (ampproject#7932) Fully escape javascript regex. * Update amp-cache-modifications.md (ampproject#7933) Add `data-no-service-worker-fallback-shell-url` as a URL to be rewritten as absolute. * amp-fx-parallax Don't use global (ampproject#7942) * Viewer integration: rewrite error message to indicate request name (ampproject#7923) * rewrite error message * update * ticks * Fix up links in DEVELOPING.md (ampproject#7944) We moved DEVELOPING.md to the contributing folder but didn't update many of the relative links accordingly. * Popin ad extension document updated. (ampproject#7674) * Add popin ad extension. * register popin. * Add resizeable attribute. * Remove resizable. * Implemented the render-start and no-content APIs. * Fixed lint. * Remove quatation. * Use tei@popin.cc * Rebase old commit . * Fixed document because tag was not closed. * I replaced the removed double quotes. * Add double quotes. * Support for bind expressions in mustache templates (ampproject#7602) * first pass at adding/removing subtrees * tests passing * Add ability to add and remove bindings in the subtree rooted at a specific node * lint fixes * merge conflict * ci issues * some cleanup * pr comments * pr comments, new method of removing bindings for node and its children * fix some lint warnings * test and lint fixes * mutation observer * update comments * add observer * naive implementation * cleanup * clean * cleanup bind impl * very simple example of bind in a template * pr comments * lint errors * pr comments * cleanup * lint errors * pr comments * pr comments and lint warnings * typo * comments * more lint warnings * pr comment * change README * cleanup * pr comments * pr comments 2 * lint warnings * don't use foreach on Nodelist * casting * more ci warnings * even more ci warnings * even more ci warnings * even more ci issues * even more ci comments * even more ci issues * pr comments * more pr comments * fix refactoring oversight * pr comments * pr comments * merge * pr comments * ci issues * pr comments * assertElement * pr comments * typo * updating sanitizer * fixing up sanitizer test * pr comments * pr comments * expanded on amp-mustache tests * pr comments * remove class from whitelist * restore whole sandbox * update mustache validator test and output * pr comments * nexxtv player gulp check-types fixes (ampproject#7816) * nexxtv player fix error gulp presumbit with postmessage (ampproject#7816) * added dependency check for nexxtv player (ampproject#7816) * nexxtv player minor fix in validator (ampproject#7816) * nexxtv player fixed validator (ampproject#7816) * fixed validator (ampproject#7816)
* initial commit for Math in amp-bind * fix lint * ali's comment * avoid scope conflicts with built-in functions * remove Math functions from documentation
* initial setup for extension nexxtv-player * added nexxtv player logic * nexxtv player bugfixes, cleanup, tests, docs * added video interface, changed attribute start to seek-to * reworked video interface for nexxtv-player * added message handler for nexxtv player and tests * nexxtv player minor fixes & cleanup * nexxtv player changed indents from 4 spaces to 2 * added unlayoutCallback for nexxtv player * initial setup for extension nexxtv-player * added nexxtv player logic * nexxtv player bugfixes, cleanup, tests, docs * added video interface, changed attribute start to seek-to * reworked video interface for nexxtv-player * added message handler for nexxtv player and tests * nexxtv player minor fixes & cleanup * nexxtv player changed indents from 4 spaces to 2 * added unlayoutCallback for nexxtv player * fixed linting issues (ampproject#7673) * initial setup for extension nexxtv-player * added nexxtv player logic * nexxtv player bugfixes, cleanup, tests, docs * added video interface, changed attribute start to seek-to * reworked video interface for nexxtv-player * added message handler for nexxtv player and tests * nexxtv player minor fixes & cleanup * nexxtv player changed indents from 4 spaces to 2 * added unlayoutCallback for nexxtv player * initial setup for extension nexxtv-player * added nexxtv player logic * nexxtv player bugfixes, cleanup, tests, docs * added video interface, changed attribute start to seek-to * reworked video interface for nexxtv-player * added message handler for nexxtv player and tests * nexxtv player minor fixes & cleanup * fixed linting issues (ampproject#7673) * nexxtv player review fixes (ampproject#7816) * nexxtv player: updated validation rules (ampproject#7816) * nexxtv player validator ordered alphabetical, changed spec_url * fire amp-dom-update event on insert and replace (ampproject#7819) * temp * trigger `amp-dom-update` event on insert and replace * switch -amp-form to i-amp-form * Validator Rollup (ampproject#7844) * Revision bump. * Revision bump for amp-playbuzz changes in ampproject#7450 * Revision bump. * Allow filtering by HtmlFormat (AMP, AMP4ADS) in the code generator. * Revision bump. * Revision bump due to Github pull. * Code generation now driven by a variable LIGHT, which is broader than the previous GENERATE_DETAILED_ERRORS distinction. LIGHT implies filtered for specific format (AMP or AMP4ADS, and only amp.validator.validateSaxEvents, and no detailed errors. * Generate ValidatorRules.directAttrLists and globalAttrs and ampLayoutAttrs, reducing overhead by indirection. * Implement parallax effect extension (ampproject#7794) * Do not set hidden attribute on hide/collapse (ampproject#7879) * amp-bind: Support `Math` functions (ampproject#7797) * initial commit for Math in amp-bind * fix lint * ali's comment * avoid scope conflicts with built-in functions * remove Math functions from documentation * Measure 3P ad latency (ampproject#7902) * Update spec URLs from github to ampproject. (ampproject#7901) * Update github urls to ampproject urls * test .out updated * Too many slashes. * Moved Developing.md and Design_Principles.md (ampproject#7908) * Rename DEVELOPING.md to contributing/DEVELOPING.md * Move files to new folder * Renaming toggle to toggleVisibility because it was conflicting with sidebar and breaking it (ampproject#7855) * disable scrollRestoration auto for embed case (ampproject#7899) * Disable Fast Fetch for all ads when remote.html is used. (ampproject#7906) * Fix DoubleClick Fast Fetch bugs around categoryExclusions and tagForChildDirectedTreatment (ampproject#7843) * Fix incorrect parameter name for `tagForChildDirectedTreatment` in DoubleClick. * Added unit test for tagForChildDirectedTreatment. * Fixed the categoryExclusions bug in Fast Fetch DoubleClick. * Removed parens in arrow functions to satisfy linter * Adds two new experiment IDs (ampproject#7850) * Adds two new experiment IDs to distinguish "any externally triggered" experiment from "any internally triggered". Also updates tests to remove a number of assumptions that only a single eid will be populated. * Use return val to detect "externally selected"; test updates. * Updated network implementation guide. (ampproject#7862) * Updated network impl guide. * Changed 'validation' to 'verification' * Cid timeout error should not be dev error (ampproject#7911) * Fix amp-ad test (ampproject#7918) * Update amp-install-serviceworker.md (ampproject#7932) Fully escape javascript regex. * Update amp-cache-modifications.md (ampproject#7933) Add `data-no-service-worker-fallback-shell-url` as a URL to be rewritten as absolute. * amp-fx-parallax Don't use global (ampproject#7942) * Viewer integration: rewrite error message to indicate request name (ampproject#7923) * rewrite error message * update * ticks * Fix up links in DEVELOPING.md (ampproject#7944) We moved DEVELOPING.md to the contributing folder but didn't update many of the relative links accordingly. * Popin ad extension document updated. (ampproject#7674) * Add popin ad extension. * register popin. * Add resizeable attribute. * Remove resizable. * Implemented the render-start and no-content APIs. * Fixed lint. * Remove quatation. * Use tei@popin.cc * Rebase old commit . * Fixed document because tag was not closed. * I replaced the removed double quotes. * Add double quotes. * Support for bind expressions in mustache templates (ampproject#7602) * first pass at adding/removing subtrees * tests passing * Add ability to add and remove bindings in the subtree rooted at a specific node * lint fixes * merge conflict * ci issues * some cleanup * pr comments * pr comments, new method of removing bindings for node and its children * fix some lint warnings * test and lint fixes * mutation observer * update comments * add observer * naive implementation * cleanup * clean * cleanup bind impl * very simple example of bind in a template * pr comments * lint errors * pr comments * cleanup * lint errors * pr comments * pr comments and lint warnings * typo * comments * more lint warnings * pr comment * change README * cleanup * pr comments * pr comments 2 * lint warnings * don't use foreach on Nodelist * casting * more ci warnings * even more ci warnings * even more ci warnings * even more ci issues * even more ci comments * even more ci issues * pr comments * more pr comments * fix refactoring oversight * pr comments * pr comments * merge * pr comments * ci issues * pr comments * assertElement * pr comments * typo * updating sanitizer * fixing up sanitizer test * pr comments * pr comments * expanded on amp-mustache tests * pr comments * remove class from whitelist * restore whole sandbox * update mustache validator test and output * pr comments * nexxtv player gulp check-types fixes (ampproject#7816) * nexxtv player fix error gulp presumbit with postmessage (ampproject#7816) * added dependency check for nexxtv player (ampproject#7816) * nexxtv player minor fix in validator (ampproject#7816) * nexxtv player fixed validator (ampproject#7816) * fixed validator (ampproject#7816)
Math.prefix, e.g.[text]="random()"random()in particular needed for the game demo in amp-bind: Turing machine and game examples #7742/to @aghassemi @kmh287 PTAL 👀