The suggest action allows you to define a custom suggestion script that will
be executed for each match. The script should return an array of strings called suggestions.
Scripts are written in Tengo and are stored in the $StylesPath/config/actions directory.
Here’s an example script:
go
Copy
text := import("text")// `match` is provided by Vale and represents the rule's matched text.made := text.re_replace(`([A-Z]w+)([A-Z]w+)`, match, `$1-$2`)made = text.replace(made, "-", "_", 1)made = text.to_lower(made)// `suggestions` is required by Vale and represents the script's output.suggestions := [made]
We would save this script as CamelToSnake.tengo and then reference it in
our rule:
yaml
Copy
extends: existencemessage: "'%s' should be in snake_case."nonword: truelevel: erroraction: name: suggest params: - CamelToSnake.tengotokens: - '[A-Z]w+[A-Z]w+'