Skip to content

Commit ed0cba7

Browse files
committed
feat: add type annotations for plenary.operators
1 parent a31de61 commit ed0cba7

File tree

2 files changed

+53
-1
lines changed

2 files changed

+53
-1
lines changed

lua/plenary/init.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
---@field json PlenaryJson
1313
---@field log PlenaryLog
1414
---@field nvim_meta PlenaryNvimMeta
15+
---@field operators PlenaryOperators
1516
---@field path PlenaryPath
1617
---@field scandir PlenaryScandir
1718
---@field strings PlenaryStrings

lua/plenary/operators.lua

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
---Lua has no currying so we have to make a function for each operator.
55
---@brief ]]
66

7-
return {
7+
---@class PlenaryOperators
8+
local M = {
89
----------------------------------------------------------------------------
910
-- Comparison operators
1011
----------------------------------------------------------------------------
@@ -30,15 +31,27 @@ return {
3031
----------------------------------------------------------------------------
3132
-- Arithmetic operators
3233
----------------------------------------------------------------------------
34+
---@param a number
35+
---@param b number
36+
---@return number
3337
add = function(a, b)
3438
return a + b
3539
end,
40+
---@param a number
41+
---@param b number
42+
---@return number
3643
div = function(a, b)
3744
return a / b
3845
end,
46+
---@param a number
47+
---@param b number
48+
---@return integer
3949
floordiv = function(a, b)
4050
return math.floor(a / b)
4151
end,
52+
---@param a number
53+
---@param b number
54+
---@return integer
4255
intdiv = function(a, b)
4356
local q = a / b
4457
if a >= 0 then
@@ -47,54 +60,92 @@ return {
4760
return math.ceil(q)
4861
end
4962
end,
63+
---@param a number
64+
---@param b number
65+
---@return number
5066
mod = function(a, b)
5167
return a % b
5268
end,
69+
---@param a number
70+
---@param b number
71+
---@return number
5372
mul = function(a, b)
5473
return a * b
5574
end,
75+
---@param a number
76+
---@return number
5677
neq = function(a)
5778
return -a
5879
end,
80+
---@param a number
81+
---@return number
5982
unm = function(a)
6083
return -a
6184
end, -- an alias
85+
---@param a number
86+
---@param b number
87+
---@return number
6288
pow = function(a, b)
6389
return a ^ b
6490
end,
91+
---@param a number
92+
---@param b number
93+
---@return number
6594
sub = function(a, b)
6695
return a - b
6796
end,
97+
---@param a number
98+
---@param b number
99+
---@return number
68100
truediv = function(a, b)
69101
return a / b
70102
end,
71103

72104
----------------------------------------------------------------------------
73105
-- String operators
74106
----------------------------------------------------------------------------
107+
---@param a string
108+
---@param b string
109+
---@return string
75110
concat = function(a, b)
76111
return a .. b
77112
end,
113+
---@param a string
114+
---@return integer
78115
len = function(a)
79116
return #a
80117
end,
118+
---@param a string
119+
---@return integer
81120
length = function(a)
82121
return #a
83122
end, -- an alias
84123

85124
----------------------------------------------------------------------------
86125
-- Logical operators
87126
----------------------------------------------------------------------------
127+
---@param a boolean
128+
---@param b boolean
129+
---@return boolean
88130
land = function(a, b)
89131
return a and b
90132
end,
133+
---@param a boolean
134+
---@param b boolean
135+
---@return boolean
91136
lor = function(a, b)
92137
return a or b
93138
end,
139+
---@param a boolean
140+
---@return boolean
94141
lnot = function(a)
95142
return not a
96143
end,
144+
---@param a boolean
145+
---@return boolean
97146
truth = function(a)
98147
return not not a
99148
end,
100149
}
150+
151+
return M

0 commit comments

Comments
 (0)