Module:HTMLParse

local p = {} local conjugate = require'Module:Grammar/Conjugate'

function p.pluralize(frame, apostrophe) apostrophe = apostrophe or '' local htmlString = frame.args.html if string.find(htmlString, "{") then htmlString = frame:preprocess(htmlString)  --expand any templates that may have been passed to this module end prefix, postfix = htmlString:match'(.*%a)( if (prefix == nil or prefix ==  or postfix == nil or postfix == ) then return htmlString  --return unmodified string (couldn't find alpha character followed by closing HTML tag) else return (conjugate.pluralize(prefix, apostrophe) .. postfix) end end

function p.make_possessive(frame) return p.pluralize(frame, "'") end

function p.capitalize(frame) local htmlString = frame.args.html if string.find(htmlString, "{") then htmlString = frame:preprocess(htmlString)  --expand any templates that may have been passed to this module end --split string at the first alphabetic character that appears immediately after a starting html tag <...> prefix = htmlString:match'([^/]*>)' or '' if (prefix == nil or prefix == '') then return conjugate.capitalize(htmlString) else _, a = htmlString:find'([^/]*>)' postfix = htmlString:sub(a + 1) or '' mw.log('prefix: ' .. prefix) mw.log('postfix: ' .. postfix) return (prefix .. conjugate.capitalize(postfix)) end end

function p.strip_formatting(frame) local htmlString = frame.args.html htmlString = frame:preprocess(htmlString) return (htmlString:gsub("<[^>]->", "")) end

return p