Add anchor extraction function
`anchor.extract(string, anchor)` will find and extract a zettel anchor from any string passed in. It can be given an optional anchor regex which will supersede any regex set in the plugin options.
This commit is contained in:
parent
65e3b0bc1c
commit
44a985cce6
3 changed files with 36 additions and 2 deletions
|
@ -8,9 +8,10 @@ next up:
|
||||||
[ ] fix link following:
|
[ ] fix link following:
|
||||||
* [x] empty space (e.g. in link text, or link itself) disrupts link regex search
|
* [x] empty space (e.g. in link text, or link itself) disrupts link regex search
|
||||||
* [x] line-end following breaks if cursor is in the MIDDLE of the link
|
* [x] line-end following breaks if cursor is in the MIDDLE of the link
|
||||||
* [ ] extract anchor from link/string (anchor.lua)
|
* [x] extract anchor from link/string (anchor.lua)
|
||||||
|
* [x] probably stop hardcoding anchor regex, make an option
|
||||||
|
* [ ] implement custom anchor creation function to go with custom regex
|
||||||
* [ ] opening zettel should use generated link table for full filename anchor search
|
* [ ] opening zettel should use generated link table for full filename anchor search
|
||||||
* [ ] probably stop hardcoding anchor regex, make an option
|
|
||||||
* [ ] implement fallback to filename
|
* [ ] implement fallback to filename
|
||||||
|
|
||||||
## TODO: needed functionality
|
## TODO: needed functionality
|
||||||
|
|
|
@ -26,4 +26,15 @@ function A.prepend(anchor, text)
|
||||||
return text
|
return text
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Returns anchor contents if an anchor is contained in the input string.
|
||||||
|
-- It takes an optional regex parameter with which the plugin option
|
||||||
|
-- of which anchor to look for can be overwritten.
|
||||||
|
--
|
||||||
|
-- If multiple anchors are contained, returns the contents of the first
|
||||||
|
-- one encountered.
|
||||||
|
function A.extract(input, regex)
|
||||||
|
regex = regex or o.anchor().regex
|
||||||
|
return input:match(regex)
|
||||||
|
end
|
||||||
|
|
||||||
return A
|
return A
|
||||||
|
|
|
@ -39,3 +39,25 @@ describe("prepend", function()
|
||||||
assert.same("1910291645---arated", A.prepend("1910291645", "arated"))
|
assert.same("1910291645---arated", A.prepend("1910291645", "arated"))
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
describe("extract", function()
|
||||||
|
it("should get the default anchor from a string of text", function()
|
||||||
|
assert.same("2010261208", A.extract(
|
||||||
|
"/home/office/docs/2010261208 we are the champions.md"))
|
||||||
|
end)
|
||||||
|
it("should return nil when default anchor not contained", function()
|
||||||
|
assert.same(nil, A.extract(
|
||||||
|
"/home/office/docs/10261208 we are the champions.md"))
|
||||||
|
end)
|
||||||
|
it("should use the anchor set in options", function()
|
||||||
|
vim.g.zettel_anchor_regex = '[%u][%l][%d][%d][%d][%d]'
|
||||||
|
assert.same("Fa1984", A.extract(
|
||||||
|
"/home/office/docs/Fa1984_we are the champions.md"))
|
||||||
|
end)
|
||||||
|
it("should use the anchor regex argument if one is passed", function()
|
||||||
|
assert.same("bO133T",
|
||||||
|
A.extract(
|
||||||
|
"/home/office/docs/bO133T-we are the champions.md",
|
||||||
|
"[%l][%u][%d][%d][%d][%u]"))
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
Loading…
Reference in a new issue