2024-02-14 09:15:26 -08:00
local static = require ( " codesnap.static " )
2024-03-16 10:07:12 -07:00
local table_utils = require ( " codesnap.utils.table " )
local string_utils = require ( " codesnap.utils.string " )
2024-02-19 06:27:17 -08:00
local visual_utils = require ( " codesnap.utils.visual " )
2024-03-17 07:34:01 -07:00
local path_utils = require ( " codesnap.utils.path " )
2024-02-14 09:15:26 -08:00
2024-03-16 10:07:12 -07:00
local assets_folder = static.cwd .. " /assets "
local function get_extension ( )
local file_path = vim.fn . expand ( " %:p " )
local file_extension = string.match ( file_path , " %.([^%.]+)$ " )
return file_extension
end
2024-02-21 02:33:44 -08:00
local main = {
cwd = static.cwd ,
preview_switch = static.preview_switch ,
}
2024-02-12 22:05:36 -08:00
function main . setup ( config )
2024-02-19 06:27:17 -08:00
static.config = table_utils.merge ( static.config , config == nil and { } or config )
2024-03-16 10:07:12 -07:00
end
2024-04-02 03:18:37 -07:00
local function get_config ( specify_extension )
2024-03-16 10:07:12 -07:00
local code = visual_utils.get_selected_text ( )
2024-04-02 03:18:37 -07:00
local extension = specify_extension or get_extension ( )
2024-02-19 06:27:17 -08:00
2024-03-16 10:07:12 -07:00
if string_utils.is_str_empty ( code ) then
2024-04-02 05:04:37 -07:00
error ( " No code is selected " , 0 )
return
2024-02-19 06:27:17 -08:00
end
2024-03-16 10:07:12 -07:00
if string_utils.is_str_empty ( extension ) then
2024-04-02 05:04:37 -07:00
error ( " Cannot detect current filetype " , 0 )
2024-03-16 10:07:12 -07:00
end
2024-02-19 06:27:17 -08:00
2024-03-16 10:07:12 -07:00
return table_utils.merge ( {
code = code ,
extension = extension ,
fonts_folder = assets_folder .. " /fonts " ,
themes_folder = assets_folder .. " /themes " ,
theme = " base16-onedark " ,
2024-03-17 07:34:01 -07:00
file_path = static.config . has_breadcrumbs and path_utils.get_relative_path ( ) or " " ,
2024-03-16 10:07:12 -07:00
} , static.config )
2024-02-12 22:05:36 -08:00
end
2024-04-02 03:18:37 -07:00
function main . copy_into_clipboard ( extension )
2024-04-02 04:22:12 -07:00
require ( " generator " ) . copy_into_clipboard ( get_config ( extension ) )
2024-03-16 10:07:12 -07:00
vim.cmd ( " delmarks <> " )
vim.notify ( " Save snapshot into clipboard successfully " )
2024-02-21 02:33:44 -08:00
end
2024-04-02 03:18:37 -07:00
function main . save_snapshot ( extension )
2024-03-16 10:07:12 -07:00
if string_utils.is_str_empty ( static.config . save_path ) then
2024-04-02 05:04:37 -07:00
error (
" If you want to save snapshot in somewhere, you should config the save_path before, refer: https://github.com/mistricky/codesnap.nvim?tab=readme-ov-file#save-the-snapshot " ,
0
)
2024-03-16 10:07:12 -07:00
end
2024-04-02 04:22:12 -07:00
require ( " generator " ) . save_snapshot ( get_config ( extension ) )
2024-03-16 10:07:12 -07:00
vim.cmd ( " delmarks <> " )
vim.notify ( " Save snapshot in " .. static.config . save_path .. " successfully " )
2024-02-21 02:33:44 -08:00
end
2024-02-12 22:05:36 -08:00
return main