mirror of
https://github.com/Ascyii/telekasten.nvim.git
synced 2026-01-01 06:14:23 -05:00
refact: templates
This commit is contained in:
@@ -915,7 +915,7 @@ The following substitutions will be made during new note creation:
|
|||||||
| in template | expands to | example |
|
| in template | expands to | example |
|
||||||
+-----------------+-----------------------+-----------------------------+
|
+-----------------+-----------------------+-----------------------------+
|
||||||
| `{{title}}` | the title of the note | My new note |
|
| `{{title}}` | the title of the note | My new note |
|
||||||
| `{{shorttitle}} | the short title of the note | dir/dir/My Note -> My Note |
|
| `{{shorttitle}}` | the short title of the note | dir/dir/My Note -> My Note |
|
||||||
| `{{uuid}}` | UUID of the note | 202201271129 |
|
| `{{uuid}}` | UUID of the note | 202201271129 |
|
||||||
| `{{date}}` | date in iso format | 2021-11-21 |
|
| `{{date}}` | date in iso format | 2021-11-21 |
|
||||||
| `{{time24}}` | time with 24 hour clock | 19:12:23 |
|
| `{{time24}}` | time with 24 hour clock | 19:12:23 |
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ local tagutils = require("telekasten.utils.tags")
|
|||||||
local linkutils = require("telekasten.utils.links")
|
local linkutils = require("telekasten.utils.links")
|
||||||
local dateutils = require("telekasten.utils.dates")
|
local dateutils = require("telekasten.utils.dates")
|
||||||
local fileutils = require("telekasten.utils.files")
|
local fileutils = require("telekasten.utils.files")
|
||||||
|
local templates = require("telekasten.templates")
|
||||||
local Path = require("plenary.path")
|
local Path = require("plenary.path")
|
||||||
local tkpickers = require("telekasten.pickers")
|
local tkpickers = require("telekasten.pickers")
|
||||||
local tkutils = require("telekasten.utils")
|
local tkutils = require("telekasten.utils")
|
||||||
@@ -426,33 +427,6 @@ end
|
|||||||
|
|
||||||
-- end of image stuff
|
-- end of image stuff
|
||||||
|
|
||||||
local function linesubst(line, title, dates, uuid)
|
|
||||||
if dates == nil then
|
|
||||||
dates =
|
|
||||||
dateutils.calculate_dates(nil, M.Cfg.calendar_opts.calendar_monday)
|
|
||||||
end
|
|
||||||
if uuid == nil then
|
|
||||||
uuid = ""
|
|
||||||
end
|
|
||||||
|
|
||||||
local shorttitle = string.match(title, "^.+/(.+)$")
|
|
||||||
if shorttitle == nil then
|
|
||||||
shorttitle = title
|
|
||||||
end
|
|
||||||
|
|
||||||
local substs = vim.tbl_extend("error", dates, {
|
|
||||||
shorttitle = shorttitle:gsub("^%l", string.upper),
|
|
||||||
uuid = uuid,
|
|
||||||
title = title:gsub("^%l", string.upper),
|
|
||||||
})
|
|
||||||
|
|
||||||
for k, v in pairs(substs) do
|
|
||||||
line = line:gsub("{{" .. k .. "}}", v)
|
|
||||||
end
|
|
||||||
|
|
||||||
return line
|
|
||||||
end
|
|
||||||
|
|
||||||
local function create_note_from_template(
|
local function create_note_from_template(
|
||||||
title,
|
title,
|
||||||
uuid,
|
uuid,
|
||||||
@@ -471,7 +445,15 @@ local function create_note_from_template(
|
|||||||
-- now write the output file, substituting vars line by line
|
-- now write the output file, substituting vars line by line
|
||||||
local ofile = io.open(filepath, "a")
|
local ofile = io.open(filepath, "a")
|
||||||
for _, line in pairs(lines) do
|
for _, line in pairs(lines) do
|
||||||
ofile:write(linesubst(line, title, calendar_info, uuid) .. "\n")
|
ofile:write(
|
||||||
|
templates.subst_templated_values(
|
||||||
|
line,
|
||||||
|
title,
|
||||||
|
calendar_info,
|
||||||
|
uuid,
|
||||||
|
M.Cfg.calendar_opts.calendar_monday
|
||||||
|
) .. "\n"
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
ofile:flush()
|
ofile:flush()
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
-- Template handling
|
||||||
|
|
||||||
|
local dateutils = require("telekasten.utils.dates")
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.subst_templated_values(line, title, dates, uuid, calendar_monday)
|
||||||
|
-- Various date formats
|
||||||
|
if dates == nil then
|
||||||
|
dates = dateutils.calculate_dates(nil, calendar_monday)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- {{uuid}}: note UUID if any
|
||||||
|
if uuid == nil then
|
||||||
|
uuid = ""
|
||||||
|
end
|
||||||
|
|
||||||
|
-- {{shorttitle}}: only filename, not full subdir paths
|
||||||
|
local shorttitle = string.match(title, "^.+/(.+)$")
|
||||||
|
if shorttitle == nil then
|
||||||
|
shorttitle = title
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Expend the substitutions table and proceed
|
||||||
|
local substs = vim.tbl_extend("error", dates, {
|
||||||
|
title = title:gsub("^%l", string.upper),
|
||||||
|
shorttitle = shorttitle:gsub("^%l", string.upper),
|
||||||
|
uuid = uuid,
|
||||||
|
})
|
||||||
|
|
||||||
|
for k, v in pairs(substs) do
|
||||||
|
line = line:gsub("{{" .. k .. "}}", v)
|
||||||
|
end
|
||||||
|
|
||||||
|
return line
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
|
|||||||
Reference in New Issue
Block a user