summaryrefslogtreecommitdiff
path: root/.obsidian/plugins/obsidian-enhancing-export/lua/markdown.lua
diff options
context:
space:
mode:
Diffstat (limited to '.obsidian/plugins/obsidian-enhancing-export/lua/markdown.lua')
-rwxr-xr-x.obsidian/plugins/obsidian-enhancing-export/lua/markdown.lua237
1 files changed, 0 insertions, 237 deletions
diff --git a/.obsidian/plugins/obsidian-enhancing-export/lua/markdown.lua b/.obsidian/plugins/obsidian-enhancing-export/lua/markdown.lua
deleted file mode 100755
index 6071148..0000000
--- a/.obsidian/plugins/obsidian-enhancing-export/lua/markdown.lua
+++ /dev/null
@@ -1,237 +0,0 @@
-package.path=debug.getinfo(1).source:gsub('@',''):sub(0):match('(.*[/\\])'):sub(0) .. '?.lua' .. ';' .. package.path
-
-require("polyfill")
-local url = require('url')
-
-local pandoc=pandoc
-local PANDOC_STATE=PANDOC_STATE
-
-PANDOC_VERSION:must_be_at_least '3.1.7'
-
-os.text = pandoc.text
-
-local PATH = pandoc.path
-local doc_dir = nil
-local media_dir = nil
-
-if Mode == nil then
- Mode = 'default'
-end
-
--- print("Mode: "..Mode)
-
-if PANDOC_STATE.output_file then
- local output_file = PANDOC_STATE.output_file
- doc_dir = PATH.directory(output_file)
- if PANDOC_WRITER_OPTIONS.variables["media_dir"] then
- media_dir = tostring(PANDOC_WRITER_OPTIONS.variables["media_dir"])
- else
- media_dir = PATH.split_extension(output_file)
- if Mode ~= 'hugo' then
- media_dir = media_dir .. '-media'
- end
- end
-end
-assert(doc_dir, "doc_dir is nil")
-assert(media_dir, "media_dir is nil")
-
-
-local function get_absolute_path(file_path)
- if PATH.is_absolute(file_path) then
- return file_path
- end
- for _, dir in pairs(PANDOC_STATE.resource_path) do
- local full_path = PATH.join({dir, file_path})
- if os.exists(full_path) then
- return full_path
- end
- end
- for _, file in pairs(PANDOC_STATE.input_files) do
- if not PATH.is_absolute(file) then
- file = PATH.join({pandoc.system.get_working_directory(), file_path})
- end
- local dir = PATH.directory(file)
- local full_path = PATH.join({dir, file_path})
- if os.exists(full_path) then
- return full_path
- end
- end
- return nil
-end
-
-local function get_output_file(file_path)
- if media_dir then
- local new_file_name = pandoc.utils.sha1(file_path)
- local _, new_file_ext = PATH.split_extension(file_path)
- file_path = new_file_name .. new_file_ext
- local full_path = PATH.join({media_dir, file_path})
- return full_path
- else
- return nil
- end
-end
-
-local function extract_media(file_path)
- os.mkdir(media_dir)
- file_path = url.decode(file_path)
- local abs_path = get_absolute_path(file_path)
- local file = get_output_file(file_path)
- if abs_path and file then
- if not os.exists(file) then
- os.copy(abs_path, file)
- end
- local rel_path = PATH.make_relative(file, doc_dir, false)
- local parts = PATH.split(rel_path)
- for i,v in ipairs(parts) do
- parts[i] = url.encode(v)
- end
- local encoded_rel_path = table.concat(parts, "/")
- if Mode == 'hugo' then
- encoded_rel_path = '../' .. encoded_rel_path
- end
- return encoded_rel_path
- end
-end
-
-local function raw(s)
- return pandoc.RawInline('markdown', s)
-end
-
-function Image(el)
- local src = extract_media(el.src)
- if src then
- el.src = src
- end
- return el
-end
-
-function Space()
- return raw(' ')
-end
-
-function SoftBreak()
- return raw('\n')
-end
-
-function RawInline(el)
- if el.format == "html" then
- el.format = 'markdown'
- el.text = string.gsub(el.text, '<img[^>]+>', function(img)
- return string.gsub(img, 'src="([^"]+)"', function(url)
- if string.find(url, '^[Hh][Tt][Tt][Pp][Ss]?://') == nil then
- local extract_media_url = extract_media(url)
- if extract_media_url then
- return 'src="' .. extract_media_url .. '"'
- end
- return '123'
- end
- return 'src="' .. url .. '"'
- end)
- end)
- end
- return el
-end
-
-function RawBlock(el)
- if el.format == "html" then
- el.format = 'markdown'
- end
- return el
-end
-
-function Math(el)
- if Mode == 'hugo' then
- if el.mathtype == 'DisplayMath' then
- return raw('{{< mathjax >}}\n$$' .. el.text .. '$$\n{{</mathjax >}}')
- else
- el.text = string.gsub(el.text, '\\[\\{\\}]', function (v)
- return '\\' .. v
- end)
- el.text = string.gsub(el.text, '_', function (v)
- return '\\' .. v
- end)
- end
- end
- return el
-end
-
-local function headerLink(input)
- -- github style section link
- return "#"..input:gsub(' ', '-')
-end
-
-
-local function insertLink(content, linkDescription)
- local descriptionText = table.concat(linkDescription, "")
-
- if string.find(descriptionText, '|') then
- local target, desc = descriptionText:match("(.*)|(.*)")
- table.insert(content, pandoc.Link(desc, headerLink(target)))
- else
- table.insert(content, pandoc.Link(descriptionText, headerLink(descriptionText)))
- end
-end
-
-function Para(el)
- local content = el.content
- content = ProcessMath(content)
- content = ProcessInternalLinks(content)
- el.content = content
- return el
-end
-
-function ProcessMath(elements)
- local content = {}
- local in_display_math = false
- for _, item in pairs(elements) do
- if item.t == 'Str'and item.text == "$$" then
- in_display_math = not in_display_math
- else
- if in_display_math then
- if item.t == 'RawInline' and item.format == 'tex' then
- local n = pandoc.Math('DisplayMath', '\n' .. item.text .. '\n')
- table.insert(content, Math(n))
- else
- table.insert(content, item)
- end
- else
- table.insert(content, item)
- end
- end
- end
- return content
-end
-
-function ProcessInternalLinks(elements)
- local content = {}
- local in_section_link = false
- local linkDescription = {}
-
- for _, item in pairs(elements) do
- if item.t == 'Str' and string.starts_with(item.text, '[[#') then
- in_section_link = true
- table.insert(linkDescription, string.sub(item.text, 4))
- elseif in_section_link then
- if string.ends_with(item.text, ']]') then
- table.insert(linkDescription, string.sub(item.text, 1, -3))
- insertLink(content, linkDescription)
- in_section_link = false
- linkDescription = {}
- else
- table.insert(linkDescription, item.text)
- end
- else
- table.insert(content, item)
- end
- end
- return content
-end
-
-function Plain(el)
- el.content = ProcessInternalLinks(el.content)
- return el
-end
-
-function Pandoc(el)
- return el
-end