mirror of
https://github.com/Ascyii/telekasten.nvim.git
synced 2026-01-01 06:14:23 -05:00
refact: move escape and remove alias
This commit is contained in:
@@ -157,19 +157,6 @@ local function defaultConfig(home)
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
--- escapes a string for use as exact pattern within gsub
|
|
||||||
local function escape(s)
|
|
||||||
return string.gsub(s, "[%%%]%^%-$().[*+?]", "%%%1")
|
|
||||||
end
|
|
||||||
|
|
||||||
local function remove_alias(link)
|
|
||||||
local split_index = string.find(link, "%s*|")
|
|
||||||
if split_index ~= nil and type(split_index) == "number" then
|
|
||||||
return string.sub(link, 0, split_index - 1)
|
|
||||||
end
|
|
||||||
return link
|
|
||||||
end
|
|
||||||
|
|
||||||
local function file_exists(fname)
|
local function file_exists(fname)
|
||||||
if fname == nil then
|
if fname == nil then
|
||||||
return false
|
return false
|
||||||
@@ -215,7 +202,7 @@ local function generate_note_filename(uuid, title)
|
|||||||
local pp = Path:new(title)
|
local pp = Path:new(title)
|
||||||
local p_splits = pp:_split()
|
local p_splits = pp:_split()
|
||||||
local filename = p_splits[#p_splits]
|
local filename = p_splits[#p_splits]
|
||||||
local subdir = title:gsub(escape(filename), "")
|
local subdir = title:gsub(tkutils.escape(filename), "")
|
||||||
|
|
||||||
local sep = M.Cfg.uuid_sep or "-"
|
local sep = M.Cfg.uuid_sep or "-"
|
||||||
if M.Cfg.new_note_filename ~= "uuid" and #title > 0 then
|
if M.Cfg.new_note_filename ~= "uuid" and #title > 0 then
|
||||||
@@ -755,8 +742,8 @@ function Pinfo:resolve_path(p, opts)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- now work out subdir relative to root
|
-- now work out subdir relative to root
|
||||||
self.sub_dir = p:gsub(escape(self.root_dir .. "/"), "")
|
self.sub_dir = p:gsub(tkutils.escape(self.root_dir .. "/"), "")
|
||||||
:gsub(escape(self.filename), "")
|
:gsub(tkutils.escape(self.filename), "")
|
||||||
:gsub("/$", "")
|
:gsub("/$", "")
|
||||||
:gsub("^/", "")
|
:gsub("^/", "")
|
||||||
|
|
||||||
@@ -917,8 +904,8 @@ function Pinfo:resolve_link(title, opts)
|
|||||||
|
|
||||||
-- now work out subdir relative to root
|
-- now work out subdir relative to root
|
||||||
self.sub_dir = self.filepath
|
self.sub_dir = self.filepath
|
||||||
:gsub(escape(self.root_dir .. "/"), "")
|
:gsub(tkutils.escape(self.root_dir .. "/"), "")
|
||||||
:gsub(escape(self.filename), "")
|
:gsub(tkutils.escape(self.filename), "")
|
||||||
:gsub("/$", "")
|
:gsub("/$", "")
|
||||||
:gsub("^/", "")
|
:gsub("^/", "")
|
||||||
|
|
||||||
@@ -1055,7 +1042,7 @@ local function find_files_sorted(opts)
|
|||||||
local function iconic_display(display_entry)
|
local function iconic_display(display_entry)
|
||||||
local display_opts = {
|
local display_opts = {
|
||||||
path_display = function(_, e)
|
path_display = function(_, e)
|
||||||
return e:gsub(escape(opts.cwd .. "/"), "")
|
return e:gsub(tkutils.escape(opts.cwd .. "/"), "")
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1637,7 +1624,7 @@ local function FindFriends(opts)
|
|||||||
|
|
||||||
vim.cmd("normal yi]")
|
vim.cmd("normal yi]")
|
||||||
local title = vim.fn.getreg('"0')
|
local title = vim.fn.getreg('"0')
|
||||||
title = remove_alias(title)
|
title = linkutils.remove_alias(title)
|
||||||
title = title:gsub("^(%[)(.+)(%])$", "%2")
|
title = title:gsub("^(%[)(.+)(%])$", "%2")
|
||||||
|
|
||||||
builtin.live_grep({
|
builtin.live_grep({
|
||||||
@@ -2208,7 +2195,7 @@ local function FollowLink(opts)
|
|||||||
vim.cmd("normal yi]")
|
vim.cmd("normal yi]")
|
||||||
title = vim.fn.getreg('"0')
|
title = vim.fn.getreg('"0')
|
||||||
title = title:gsub("^(%[)(.+)(%])$", "%2")
|
title = title:gsub("^(%[)(.+)(%])$", "%2")
|
||||||
title = remove_alias(title)
|
title = linkutils.remove_alias(title)
|
||||||
else
|
else
|
||||||
-- we are in an external [link]
|
-- we are in an external [link]
|
||||||
vim.cmd("normal yi)")
|
vim.cmd("normal yi)")
|
||||||
@@ -2309,7 +2296,7 @@ local function FollowLink(opts)
|
|||||||
local function iconic_display(display_entry)
|
local function iconic_display(display_entry)
|
||||||
local display_opts = {
|
local display_opts = {
|
||||||
path_display = function(_, e)
|
path_display = function(_, e)
|
||||||
return e:gsub(escape(opts.cwd .. "/"), "")
|
return e:gsub(tkutils.escape(opts.cwd .. "/"), "")
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
|
--- Escapes Lua pattern characters for use in gsub
|
||||||
|
function M.escape(s)
|
||||||
|
-- return s:gsub("[^%w]", "%%%1") -- Escape everything ?
|
||||||
|
return s:gsub("[%%%]%^%-$().[*+?]", "%%%1")
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Returns string with listed chars removed (= safer gsub)
|
||||||
|
function M.strip(s, chars_to_remove)
|
||||||
|
return s:gsub("[" .. M.escape(chars_to_remove) .. "]", "")
|
||||||
|
end
|
||||||
|
|
||||||
-- strip an extension from a file name, escaping "." properly, eg:
|
-- strip an extension from a file name, escaping "." properly, eg:
|
||||||
-- strip_extension("path/Filename.md", ".md") -> "path/Filename"
|
-- strip_extension("path/Filename.md", ".md") -> "path/Filename"
|
||||||
local function strip_extension(str, ext)
|
local function strip_extension(str, ext)
|
||||||
|
|||||||
@@ -128,4 +128,15 @@ M.generate_backlink_map = function(opts)
|
|||||||
return ret
|
return ret
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Remove alias in links to get only link part
|
||||||
|
-- [[my_cool_link | My Alias]] -> "my_cool_link"
|
||||||
|
--
|
||||||
|
function M.remove_alias(link)
|
||||||
|
local split_index = string.find(link, "%s*|")
|
||||||
|
if split_index ~= nil and type(split_index) == "number" then
|
||||||
|
return string.sub(link, 0, split_index - 1)
|
||||||
|
end
|
||||||
|
return link
|
||||||
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|||||||
Reference in New Issue
Block a user