Content deleted Content added
fix |
mNo edit summary |
||
(6 intermediate revisions by 2 users not shown) | |||
Line 1:
local p = {}
local
local lcVChars = 'aeiouà-æè-ïò-öø-üāăąēĕėęěĩīĭįıijōŏőœũūŭůűų'
Line 13 ⟶ 7:
local function findWord(s, t)
for i, v in ipairs(t) do
if
return true
end
Line 20 ⟶ 14:
function p._main(args)
local s = args[1] and mw.text.trim(args[1])
local pron = 'a'
local ret = ''
if s and s ~= '' then
local origStr = s
s =
s = mw.ustring.gsub(s, '
s = mw.ustring.gsub(mw.ustring.gsub(s, '%[%[', ''), '%]%]', '')
s = match(s, '^%.?[0-9%u%l]+') or s -- Extract the first word▼
s = mw.ustring.gsub(s, '^["%$\'%(<%[%{¢-¥₠-₿]+', '') -- Strip some symbols at the beginning
▲ s = mw.ustring.match(s, '^%.?[0-9%u%l]+') or s -- Extract the first word
if mw.ustring.find(s, '^[0-9]') then -- It begins with a number
s = mw.ustring.match(s, '^[0-9]
if findWord(s, words
pron = 'an'
end
elseif mw.ustring.match(s, '^[0-9%u]
if mw.ustring.find(s, '^[' .. ucVvChars .. ']')
and not findWord(s, words
or findWord(s, words.vvAcronyms) -- 'UNRWA' etc.
then
pron = 'an'
end
else
s = mw.ustring.lower(s) -- Uncapitalize
if mw.ustring.find(s, '^['.. lcVChars .. ']') then -- It begins with a vowel
if not findWord(s, words
or findWord(s, words
then
pron = 'an'
end
elseif args.variety and mw.ustring.lower(args.variety) == 'us' -- 'herb' etc.
and findWord(s, words
or findWord(s, words
then
pron = 'an'
end
end
ret = pron .. ' ' ..
end
Line 64 ⟶ 61:
function p.main(frame)
return p._main(frame:getParent().args)▼
▲ return p._main(args)
end
|