|
1 | 1 | local M = {} |
2 | 2 |
|
3 | | -function M.line_begin(line_to_cursor, matched_trigger) |
4 | | - -- +1 because `string.sub("abcd", 1, -2)` -> abc |
5 | | - return line_to_cursor:sub(1, -(#matched_trigger + 1)):match("^%s*$") |
6 | | -end |
7 | | - |
8 | | -function M.line_end(line_to_cursor) |
9 | | - local line = vim.api.nvim_get_current_line() |
10 | | - return #line_to_cursor == #line |
11 | | -end |
12 | | - |
| 3 | +----------------------- |
| 4 | +-- CONDITION OBJECTS -- |
| 5 | +----------------------- |
13 | 6 | local memoization_mt = { |
14 | 7 | -- logic operators |
15 | 8 | -- not |
@@ -38,14 +31,21 @@ function M.memoization_factory(func, invalidate) |
38 | 31 | return setmetatable({func=func, invalidate=invalidate}, memoization_mt) |
39 | 32 | end |
40 | 33 |
|
41 | | --- F1 = memoization_factory(function() return true end) |
42 | | --- F2 = memoization_factory(function() return false end) |
43 | | --- F3 = F1 + F2 |
44 | | --- F4 = F1 * -F2 |
45 | | --- |
46 | | --- local m = {F1=F1, F2=F2, F3=F3, F4=F4} |
47 | | --- for _,name in ipairs{"F1", "F2", "F3", "F4"} do |
48 | | --- print(name, m[name]()) |
49 | | --- end |
| 34 | +------------- |
| 35 | +-- PRESETS -- |
| 36 | +------------- |
| 37 | +local function line_begin(line_to_cursor, matched_trigger) |
| 38 | + -- +1 because `string.sub("abcd", 1, -2)` -> abc |
| 39 | + return line_to_cursor:sub(1, -(#matched_trigger + 1)):match("^%s*$") |
| 40 | +end |
| 41 | +function M.line_begin() return M.memoization_factory(line_begin, nil) -- TODO invalidation function |
| 42 | +end |
| 43 | + |
| 44 | +local function line_end(line_to_cursor) |
| 45 | + local line = vim.api.nvim_get_current_line() |
| 46 | + return #line_to_cursor == #line |
| 47 | +end |
| 48 | +function M.line_end() return M.memoization_factory(line_end, nil) -- TODO invalidation function |
| 49 | +end |
50 | 50 |
|
51 | 51 | return M |
0 commit comments