diff --git a/luago.lua b/luago.lua
index 362e971..3ceaccf 100644
--- a/luago.lua
+++ b/luago.lua
@@ -1,3 +1,6 @@
+local script_dir = debug.getinfo(1, "S").source:match("@?(.*/)")
+if script_dir then package.path = script_dir .. "?.lua;" .. script_dir .. "?/init.lua;" .. package.path end
+
local lfs = require("lfs")
-- list of markdown files in working directory
@@ -140,125 +143,8 @@ for index, _ in ipairs(markdownFiles) do
if markdownFiles[index].hasHtml then content = io.open(markdownFiles[index].fileName .. ".html"):read("*all") end
-- STYLING
- local function styleLists(s)
- local lines = {}
- for line in (s .. "\n"):gmatch("([^\n]*)\n") do
- table.insert(lines, line)
- end
-
- local result = {}
- local inUl = false
- local inOl = false
-
- for _, line in ipairs(lines) do
- local ulItem = line:match("^[%-%*%+]%s+(.*)")
- local olItem = line:match("^%d+%.%s+(.*)")
-
- if ulItem then
- if inOl then table.insert(result, ""); inOl = false end
- if not inUl then table.insert(result, "
"); inUl = true end
- table.insert(result, "- " .. ulItem .. "
") -- ulItem!
-
- elseif olItem then
- if inUl then table.insert(result, "
"); inUl = false end
- if not inOl then table.insert(result, ""); inOl = true end
- table.insert(result, "- " .. olItem .. "
")
-
- else
- if inUl then table.insert(result, ""); inUl = false end
- if inOl then table.insert(result, "
"); inOl = false end
- table.insert(result, line)
- end
- end
-
- if inUl then table.insert(result, "") end
- if inOl then table.insert(result, "") end
-
- return table.concat(result, "\n")
- end
- local function styleParagraph(s)
- local lines = {}
- for line in (s .. "\n"):gmatch("([^\n]*)\n") do
- table.insert(lines, line)
- end
-
- local result = {}
- local pLines = {}
-
- local function flushP()
- if #pLines > 0 then
- table.insert(result, "" .. table.concat(pLines, "\n") .. "
")
- pLines = {}
- end
- end
-
- for _, line in ipairs(lines) do
- local isBlock = line:match("^<") or line:match("^#")
- local isEmpty = line:match("^%s*$")
-
- if isBlock or isEmpty then
- flushP()
- table.insert(result, line)
- else
- table.insert(pLines, line)
- end
- end
- flushP()
-
- return table.concat(result, "\n")
- end
- local function styling(s)
- -- blockquote
- local lines = {}
- for line in (s .. "\n"):gmatch("([^\n]*)\n?") do
- local nline = line:gsub("^>%s*(.*)", "%1
")
- table.insert(lines, nline)
- end
- s = table.concat(lines, "\n")
- -- lists
- s = styleLists(s)
- -- paragraph
- s = styleParagraph(s)
- s = s:gsub("", "")
- -- line breaks
- s = s:gsub("\r?\n", "
")
- -- remove
tags around block elements
- local blockTags = { "ul", "ol", "li", "blockquote", "p",
- "h1", "h2", "h3", "h4", "h5", "h6", "hr" }
- for _, tag in ipairs(blockTags) do
- s = s:gsub("(" .. tag .. ">)
", "%1")
- s = s:gsub("
(" .. tag .. ">)", "%1")
- s = s:gsub("(<" .. tag .. ">)
", "%1")
- s = s:gsub("
(<" .. tag .. ">)", "%1")
- end
- -- self-closing hr
- s = s:gsub("(
)
", "%1")
- s = s:gsub("
(
)", "%1")
- -- headers
- s = s:gsub("######%s*(.-)%s*
", "%1
")
- s = s:gsub("#####%s*(.-)%s*
", "%1
")
- s = s:gsub("####%s*(.-)%s*
", "%1
")
- s = s:gsub("###%s*(.-)%s*
", "%1
")
- s = s:gsub("##%s*(.-)%s*
", "%1
")
- s = s:gsub("#%s*(.-)%s*
", "%1
")
- -- TODO: h1 and h2 using == and --
- -- bold and italic text
- s = s:gsub("%*%*(.-)%*%*", "%1")
- s = s:gsub("%*(.-)%*", "%1")
- s = s:gsub("%_%_(.-)%_%_", "%1")
- s = s:gsub("%_(.-)%_", "%1")
- -- images
- s = s:gsub("!%[(.-)%]%((.-)%)", '
')
- -- links
- s = s:gsub("%[(.-)%]%((.-)%)", '%1')
- -- code
- s = s:gsub("`(.-)`", "%1")
- -- horizontal rule
- s = s:gsub("%-%-%-", "
")
-
- return s
- end
- markdownFiles[index].content = styling(markdownFiles[index].content)
+ local styling = require("styling")
+ markdownFiles[index].content = styling.transform(markdownFiles[index].content)
-- start_idx, end_idx = c
-- {{pageContent}} shortcode