mirror of
https://github.com/storytold/effectcraft.git
synced 2026-10-14 19:27:05 -04:00
Expressions: prop.get reports a syntax error that disabled the expression (#163)
prop.setExpression keeps an expression with a syntax error but disables it, and says why only in its own reply. MCP set_property answers with prop.get instead, and prop.get reported `evaluated` / `expressionError` only for enabled expressions, so set_property, get_property and prop.get all showed the broken expression as if it were installed. prop.get now reports a disabled expression too: `evaluated` is the static value that renders, and `expressionError` is its syntax error. Test: expression_syntax_errors_reach_the_reply (set_property and get_property carry the SyntaxError; runtime errors and valid expressions report as before). Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
3aaa840471
commit
8421489167
3 files changed
+32
-3
No files matched your search
+2
-1
@@ -136,7 +136,8 @@ build real projects through these interfaces; they are worked examples of everyt
|
||||
* **One call, one undo step**: `batch {"steps":[{"command":"layer.newShape","params":{"kind":"ellipse","name":"Ring"}},{"command":"layer.addShapeItem","params":{"layer":"$1.layer","kind":"trim"}},{"command":"prop.addKey","params":{"layer":"$1.layer","path":"transform/opacity","time":0,"value":0}}]}`
|
||||
(a string param that is exactly `"$N"` or `"$N.key"` is replaced; `$2.path` is the trim's path).
|
||||
* **Expressions**: `set_property`/`get_property` replies carry `evaluated` (what renders) next to
|
||||
`value` (the keyframed value) and `expressionError` when the expression fails.
|
||||
`value` (the keyframed value) and `expressionError` when the expression fails. An expression with
|
||||
a syntax error is kept but disabled, so it renders `value` and reports the syntax error.
|
||||
* **Keyframes like a person**: `keys.select {keys, toggle: true}` (Shift+click), `keys.selectEqual`
|
||||
/ `selectPrevious` / `selectFollowing`, `keys.move {delta, merge}` (steps sharing a merge key are
|
||||
one drag: each applies to the keys as they were before it, so a key passed over survives) and
|
||||
|
||||
Reference in new issue
Block a user