mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 00:25:42 +02:00
lib/lua: add isKeyword
and isIdentifier
Allow testing whether a string is a valid lua identifier or a reserved keyword.
This commit is contained in:
parent
b64ee08d6b
commit
01cf43dbaa
3 changed files with 118 additions and 3 deletions
|
@ -10,10 +10,10 @@ let
|
|||
nixvimUtils = import ./utils.nix { inherit lib nixvimTypes _nixvimTests; };
|
||||
nixvimOptions = import ./options.nix { inherit lib nixvimTypes nixvimUtils; };
|
||||
nixvimDeprecation = import ./deprecation.nix { inherit lib; };
|
||||
inherit (import ./to-lua.nix { inherit lib; }) toLuaObject;
|
||||
in
|
||||
{
|
||||
rec {
|
||||
maintainers = import ./maintainers.nix;
|
||||
lua = import ./to-lua.nix { inherit lib; };
|
||||
keymaps = import ./keymap-helpers.nix { inherit lib nixvimOptions nixvimTypes; };
|
||||
autocmd = import ./autocmd-helpers.nix { inherit lib nixvimOptions nixvimTypes; };
|
||||
neovim-plugin = import ./neovim-plugin.nix {
|
||||
|
@ -26,7 +26,7 @@ in
|
|||
};
|
||||
vim-plugin = import ./vim-plugin.nix { inherit lib nixvimOptions nixvimUtils; };
|
||||
inherit nixvimTypes;
|
||||
inherit toLuaObject;
|
||||
inherit (lua) toLuaObject;
|
||||
}
|
||||
// nixvimUtils
|
||||
// nixvimOptions
|
||||
|
|
|
@ -1,6 +1,37 @@
|
|||
{ lib }:
|
||||
with lib;
|
||||
rec {
|
||||
# Whether the string is a reserved keyword in lua
|
||||
isKeyword =
|
||||
s:
|
||||
elem s [
|
||||
"and"
|
||||
"break"
|
||||
"do"
|
||||
"else"
|
||||
"elseif"
|
||||
"end"
|
||||
"false"
|
||||
"for"
|
||||
"function"
|
||||
"if"
|
||||
"in"
|
||||
"local"
|
||||
"nil"
|
||||
"not"
|
||||
"or"
|
||||
"repeat"
|
||||
"return"
|
||||
"then"
|
||||
"true"
|
||||
"until"
|
||||
"while"
|
||||
];
|
||||
|
||||
# Valid lua identifiers are not reserved keywords, do not start with a digit,
|
||||
# and contain only letters, digits, and underscores.
|
||||
isIdentifier = s: !(isKeyword s) && (match "[A-Za-z_][0-9A-Za-z_]*" s) == [ ];
|
||||
|
||||
# Black functional magic that converts a bunch of different Nix types to their
|
||||
# lua equivalents!
|
||||
toLuaObject =
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue