Module:CodeToText: Difference between revisions
Lighter implementation // via Wikitext Extension for VSCode |
// via Wikitext Extension for VSCode |
||
| Line 2: | Line 2: | ||
-- Extracts content snippets from a page using hook markers | -- Extracts content snippets from a page using hook markers | ||
-- | -- | ||
-- Finds content between matching hooks (e.g., 🪝, 📌, 🔖, ⭐) placed at the beginning and end of desired content. | -- Finds content between matching emoji hooks (e.g., 🪝, 📌, 🔖, ⭐) placed at the beginning and end of desired content. | ||
-- | -- | ||
-- Example: | -- Example: | ||
| Line 8: | Line 8: | ||
local p = {} | local p = {} | ||
function p.showSnippet(frame) | function p.showSnippet(frame) | ||
| Line 22: | Line 14: | ||
return "Error: 'page' parameter is required" | return "Error: 'page' parameter is required" | ||
end | end | ||
local hook = frame.args.hook | local hook = frame.args.hook | ||
if not hook then | if not hook then | ||
return "Error: 'hook' parameter is required" | return "Error: 'hook' parameter is required" | ||
end | end | ||
| Line 44: | Line 30: | ||
end | end | ||
-- Try inline hooks first | |||
local inlineSnippet = content:match(hook .. "(.-)" .. hook) | |||
-- | if inlineSnippet then | ||
local | return inlineSnippet | ||
end | end | ||
-- | -- Find block hooks | ||
local s, e = content:find(hook, 1, true) | |||
return | if not s then | ||
return "Error: Need at least 2 instances of hook '" .. hook .. "' in '" .. pageName .. "'" | |||
end | |||
local s2, e2 = content:find(hook, e + 1, true) | |||
if not s2 then | |||
return "Error: Need at least 2 instances of hook '" .. hook .. "' in '" .. pageName .. "'" | |||
end | |||
-- Extract text between the two hooks, excluding the hook lines | |||
local snippet = content:sub(e + 1, s2 - 1) | |||
-- Trim leading and trailing newlines | |||
if snippet:sub(1,1) == "\n" then | |||
snippet = snippet:sub(2) | |||
end | |||
if snippet:sub(-1) == "\n" then | |||
snippet = snippet:sub(1, -2) | |||
end | |||
return snippet | |||
end | end | ||
return p | return p | ||