lib/utils: add literalLua for use in option docs

Creates a `literalExpression` equivalent to using `lib.nixvim.mkRaw`.
This commit is contained in:
Matt Sturgeon 2024-11-15 12:55:07 +00:00
parent de99f2938f
commit eb76e62a9b
No known key found for this signature in database
GPG key ID: 4F91844CED1A8299
3 changed files with 45 additions and 0 deletions

View file

@ -124,6 +124,37 @@ rec {
else
throw "mkRaw: invalid input: ${lib.generators.toPretty { multiline = false; } r}";
/**
Convert the given string into a literalExpression mkRaw.
For use in option documentation, such as examples and defaults.
# Example
```nix
literalLua "print('hi')"
=> literalExpression ''lib.nixvim.mkRaw "print('hi')"''
=> {
_type = "literalExpression";
text = ''lib.nixvim.mkRaw "print('hi')"'';
}
```
# Type
```
literalLua :: String -> AttrSet
```
*/
literalLua =
r:
let
# Pass the value through mkRaw for validation
raw = mkRaw r;
# TODO: consider switching to lib.generators.mkLuaInline ?
exp = "lib.nixvim.mkRaw " + builtins.toJSON raw.__raw;
in
lib.literalExpression exp;
wrapDo = string: ''
do
${string}