8,756
edits
(create module for general HTML parsing. Begin with a "pluralize" function that can be used in Favilink) |
mNo edit summary |
||
(20 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local conjugate = require'Module:Grammar/Conjugate' | |||
function p.pluralize(frame) | function p.pluralize(frame, apostrophe) | ||
local htmlString = frame.args | apostrophe = apostrophe or '' | ||
prefix, postfix = | 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)(</.*)' --split string at the last alphabetic character that appears immediately before a closing html tag </...> | |||
if (prefix == nil or prefix == '' or postfix == nil or postfix == '') then | 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) | return htmlString --return unmodified string (couldn't find alpha character followed by closing HTML tag) | ||
else | 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 | 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 | end | ||
return p | return p |