+-------------------------------------------------------------------------------
+-- Configuration for nota
+-------------------------------------------------------------------------------
+local Configuration = {}
+
+local Util = require('util')
+-------------------------------------------------------------------------------
+-- Internal Functions
+-------------------------------------------------------------------------------
+local fs = vim.loop
+
local defaults = {
nota_home = '~/.local/share/nota', -- Root location in which to store all notes
default_keybinds = true, -- Whether or not to set the default keybinds
},
learning = {
learning_file = 'learning.md', -- Location of the file in which to store learning entries, relative to nota_home
- prefix = '%Y-%x-%d: ' -- Prefix to add when capturing learning entries
+ prefix = '%Y-%m-%d: ' -- Prefix to add when capturing learning entries
},
plan = {
archive = 'plans', -- Location of the plan archives.
-- Recursively extends a table with another
local function extend(target, extender)
for key, value in pairs(extender) do
- if type(target[key]) == "table" and type(value) == "table" then
+ if type(target[key]) == 'table' and type(value) == 'table' then
extend(target[key], value)
else
target[key] = value
end
end
-function configure(user_configuration)
- return extend(defaults, extender)
+-------------------------------------------------------------------------------
+-- Public Interface
+-------------------------------------------------------------------------------
+
+Configuration.configuration = {}
+extend(Configuration.configuration, defaults)
+
+--- Extends configuration with another configuration
+function Configuration.configure(configuration)
+ configuration = configuration or {}
+ extend(Configuration.configuration, configuration)
+end
+
+--- Gets expanded paths relative to nota_home
+-- @param path string the relative path to expand
+function Configuration.path_for(path)
+ if not path then
+ return vim.fn.expand(Configuration.configuration.nota_home)
+ end
+ return Util.join(vim.fn.expand(Configuration.configuration.nota_home), path)
+end
+
+--- Loads a template by template name
+function Configuration.load_template(type)
+ local template_path = Configuration.path_for(Configuration.configuration.templates[type])
+
+ local template_file = io.open(template_path, 'r')
+ if not template_file then
+ return ''
+ end
+ local content = template_file:read('*a')
+ template_file:close()
+ return content
end
+
+return Configuration