mark-nicepants / figma2flutter

Converts design token json files to flutter

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[BUG] Expression parser fails with operators other than +/-* like roundTo()

freemansoft opened this issue · comments

ℹ️ Info

The expression parser does not handle some function calls or power operators.

Version: 0.2.0-alpha current head of the main branch

💬 Description

The expression parser for math operations will return incorrect results for math functions on operations.

solved to `NaN` for {"value": roundTo({semantic.fontSize.base} / {semantic.fontSize.scale}, 0), "type": "fontSizes", "path": ".semantic.fontSize", "name": "sm", "variableName": "semanticFontSizeSm" }

solved to `0.0` for {"value": roundTo({semantic.fontSize.base} * {semantic.fontSize.scale}^7, 0), "type": "fontSizes", "path": ".semantic.fontSize", "name": "6xl", "variableName": "semanticFontSize6xl" }

where base and scale have values though the values really don't matter

  "fontSize"
      "base": {
        "type": "fontSizes",
        "value": "16"
      },
      "scale": {
        "type": "fontSizes",
        "value": "1.2"
      },

📜 tokens file you tried to import

Example 2 in PR #4 demonstrates this. There extra logging in that PR

Can this be closed now that #4 is merged?

I'm pretty sure that function-based math operations are not implemented. The example in the PR had the roundTo(x,y) and ^ operations removed from the JSON.

Aah ok, I understand it better now. It's not a bug, but a missing feature. What type of token export generated these?

The current code fails silently I thin returning null for any clause that contains a function. This means you get a NaN if there is a division operator or a null if there is one of the other operators. The code should abort or log errors or something if it runs across an unsupported function.