- From: Guillaume via GitHub <sysbot+gh@w3.org>
- Date: Thu, 03 Aug 2023 12:25:33 +0000
- To: public-css-archive@w3.org
> As I said, the context-sensitivity is indicated by the functions have a `for` value, versus generally usable functions that don't have a `for` value.
Please tell me if I should open new issue(s) and/or PR(s).
If I am not mistaken, all functions below are defined `for` a single context except `rect()`.
**TLDR:** I suspect that you think most of them should rather be context-free.
In Filter Effects 1, filter functions (`blur()`, `brightness()`, etc) are defined `for` the `filter` property, but `<filter-function>` also expands to `<blur()> | <brightness() | etc`.
In CSS Transforms 1-2, transform functions (`matrix()`, `rotate()`, etc) are defined for the `transform` property, but they are also annotated between `<` and `>` in proses in the spec.
In CSS Shapes 1, shape functions (`circle()`, `ellipse()`, etc) are defined `for` the `<basic-shape>` type, which is not explicitly expanded (I requested this in #7390).
Among shape functions, the definition of `rect()` changes in CSS Masking 1, where it is used `for` the `clip` property. I [suggested](https://github.com/w3c/fxtf-drafts/pull/468) to inline its definition in the value definition of `clip`.
In CSS Values 5, `crossorigin()`, `integrity()`, `referrerpolicy()`, are defined `for` the `<request-url-modifier>` type.
In CSS Easing 1-2:
- `cubic-bezier()` is defined `for` the `<cubic-bezier-easing-function>` type
- `steps()` is defined for the `<step-easing-function>` type
- `linear()` is not defined `for` the `<linear-easing-function>` type but `<linear-easing-function> = linear(<linear-stop-list>)` is explicitly defined
In CSS Content 3, `leader()` is defined `for` the `<content-list>` type but it is also annotated between `<` and `>` in the value definition of `<content-list>`.
In CSS Overflow 4, `fade()` is defined `for` the `text-overflow` property but it is also annotated between `<` and `>` in the value definition of `text-overflow`.
In CSS Page Floats 3, `snap-block()` and `snap-inline()` are defined `for` the `float` property, but they are also annotated between `<` and `>` in the value definition of `float`.
In CSS Images 4, `type()` is defined `for` the `image-set()` function.
---
As a grammar-driven parser implementer, I have to manually define a context-sensitive function definition when it does not appear in the value definition of its context.
For example, I would have to define:
- `<filter-shape> = circle(<shape-radius>? [at <position>]?) | ellipse([<shape-radius>{2}]? [at <position>]?) | etc`
- `<transform-function> = matrix(<number>#{6}) | translate(<length-percentage> , <length-percentage>?) | etc`
- `<basic-shape> = circle(<shape-radius>? [at <position>]?) | ellipse([<shape-radius>{2}]? [at <position>]?) | etc`
- `<cubic-bezier-easing-function> = cubic-bezier(<number [0,1]>, <number>, <number [0,1]>, <number>)`
- `<step-easing-function> = steps(<integer>, <step-position>?)`
- etc
It would be nice to define in the spec.
--
GitHub Notification of comment by cdoublev
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/7682#issuecomment-1663891956 using your GitHub account
--
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Thursday, 3 August 2023 12:25:35 UTC