mirror of
https://github.com/nix-community/nixvim.git
synced 2025-08-17 07:51:27 +02:00
helpers: Add mkLua,mkLuaFn (defaultNullOpts or not) (#866)
This makes it such that defaultNullOpts.mkStr never represents a lua string, easing documenting where a string is a lua string vs lua code.
This commit is contained in:
parent
f2e808a519
commit
abd1c4007a
5 changed files with 70 additions and 45 deletions
|
@ -119,6 +119,27 @@ with lib; rec {
|
|||
mkCompositeOption = desc: options:
|
||||
mkNullOrOption (types.submodule {inherit options;}) desc;
|
||||
|
||||
mkNullOrLua = desc:
|
||||
lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = desc;
|
||||
apply = mkRaw;
|
||||
};
|
||||
|
||||
mkNullOrLuaFn = desc: let
|
||||
fnDesc = "(lua function)";
|
||||
in
|
||||
mkNullOrLua (
|
||||
if desc == ""
|
||||
then fnDesc
|
||||
else ''
|
||||
${desc}
|
||||
|
||||
${fnDesc}
|
||||
''
|
||||
);
|
||||
|
||||
defaultNullOpts = let
|
||||
maybeRaw = t: lib.types.either t rawType;
|
||||
in rec {
|
||||
|
@ -140,33 +161,38 @@ with lib; rec {
|
|||
# documentation
|
||||
mkNullableWithRaw = type: mkNullable (maybeRaw type);
|
||||
|
||||
mkLuaFn = default: desc:
|
||||
lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = let
|
||||
defaultDesc = ''
|
||||
default:
|
||||
```lua
|
||||
${default}
|
||||
```
|
||||
'';
|
||||
in
|
||||
if desc == ""
|
||||
then ''
|
||||
(lua function)
|
||||
mkLua = default: desc: let
|
||||
defaultDesc = "default: `${default}`";
|
||||
in
|
||||
mkNullOrLua
|
||||
(
|
||||
(optionalString (desc != "") ''
|
||||
${desc}
|
||||
|
||||
'')
|
||||
+ ''
|
||||
default: `${default}`
|
||||
''
|
||||
);
|
||||
|
||||
${defaultDesc}
|
||||
''
|
||||
else ''
|
||||
${desc}
|
||||
${defaultDesc}
|
||||
''
|
||||
);
|
||||
|
||||
(lua function)
|
||||
mkLuaFn = default: desc: let
|
||||
defaultDesc = "default: `${default}`";
|
||||
in
|
||||
mkNullOrLuaFn
|
||||
(
|
||||
if desc == ""
|
||||
then defaultDesc
|
||||
else ''
|
||||
${desc}
|
||||
|
||||
${defaultDesc}
|
||||
''
|
||||
);
|
||||
|
||||
${defaultDesc}
|
||||
'';
|
||||
apply = mkRaw;
|
||||
};
|
||||
mkNum = default: mkNullable (maybeRaw lib.types.number) (toString default);
|
||||
mkInt = default: mkNullable (maybeRaw lib.types.int) (toString default);
|
||||
# Positive: >0
|
||||
|
@ -179,7 +205,7 @@ with lib; rec {
|
|||
then "true"
|
||||
else "false"
|
||||
);
|
||||
mkStr = default: mkNullable lib.types.str ''${builtins.toString default}'';
|
||||
mkStr = default: mkNullable (maybeRaw lib.types.str) ''${builtins.toString default}'';
|
||||
mkAttributeSet = default: mkNullable lib.types.attrs ''${default}'';
|
||||
# Note that this function is _not_ to be used with submodule elements, as it may obstruct the
|
||||
# documentation
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue