diff --git a/lua/argonaut/init.lua b/lua/argonaut/init.lua index 17f9486..2de56ea 100644 --- a/lua/argonaut/init.lua +++ b/lua/argonaut/init.lua @@ -1,4 +1,5 @@ local config = require('argonaut.config') +local types = require('argonaut.types') local function setup(opts, filetypes) config.set(opts, filetypes) diff --git a/lua/argonaut/types.lua b/lua/argonaut/types.lua new file mode 100644 index 0000000..8200ac7 --- /dev/null +++ b/lua/argonaut/types.lua @@ -0,0 +1,54 @@ +Cursor = {} + +function Cursor.new(x, y) + local cursor = { + x = x, + y = y, + } + + return setmetatable(cursor, {__index = Cursor}) +end + +function Cursor:print() + print('x: ' .. self.x .. ' y: ' .. self.y) +end + +BracePair = {} + +function BracePair.new(brace) + local escape = function(brace_raw) + if brace_raw == '[' or brace_raw == ']' then + return '\\' .. brace_raw + else + return brace_raw + end + end + + for _, brace_set in ipairs({{'(', ')'}, {'[', ']'}, {'{', '}'}, {'<', '>'}}) do + if brace_set[1] == brace or brace_set[2] == brace then + local brace_pair = { + open = brace_set[1], + close = brace_set[2], + escaped = { + open = escape(brace_set[1]), + closed = escape(brace_set[2]), + } + } + + return setmetatable(brace_pair, {__index = BracePair}) + end + end +end + +BraceRange = {} + +function BraceRange.new(start_cursor, stop_cursor, brace_pair, brace_params) + local brace_range = { + start_cursor = start_cursor, + stop_cursor = stop_cursor, + brace_pair = brace_pair, + brace_params = brace_params or {}, + } + + return setmetatable(brace_range, {__index = BraceRange}) +end