Modul:URL
Vində tispir
Documentation for this module may be created atModul:URL/doc
functionstartsWith(source,substring)
ifmw.ustring.len(substring)>mw.ustring.len(source)then
returnfalse
end
returnmw.ustring.sub(source,1,mw.ustring.len(substring))==substring
end
p={}
functionformatUrlImpl(source,title,length)
localscheme,host,path
localpostfix=''
localarg1,arg2=source,title
localisTestPage=mw.title.getCurrentTitle().prefixedText=='Modul:URL'
ifstring.find(arg1,"[[",1,true)then
localresult=arg1
ifnotisTestPagethen
result=result..'[[Kateqoriya:Vikipediya:URL modulu istifadə edən səhifələr]]'
ifarg2then
result=result..'[[Kateqoriya:Vikipediya:URL modulu xətası olan səhifələr]]'
end
end
returnresult
end
ifselect(2,string.gsub(arg1,"%[",""))>1then
localresult=arg1
ifnotisTestPagethen
result=result..'[[Kateqoriya:Vikipediya:URL modulu qarışıq olan səhifələr]]'
ifarg2then
result=result..'[[Kateqoriya:Vikipediya:URL modulu xətası olan səhifələr]]'
end
end
returnresult
end
source=mw.text.trim(source,"%[%]")
localtitleDelimeterPosition=mw.ustring.find(source,"",1)
iftitleDelimeterPositionthen
ifnottitleortitle==""then
title=mw.ustring.sub(source,titleDelimeterPosition+1)
localpostfixDelimeterPosition=mw.ustring.find(title,"%]",1)
ifpostfixDelimeterPositionthen
postfix=mw.ustring.sub(title,postfixDelimeterPosition+1)
title=mw.ustring.sub(title,1,postfixDelimeterPosition-1)
end
end
source=mw.ustring.sub(source,1,titleDelimeterPosition-1)
end
localhostStartPosition
localschemeDelimeterPosition=mw.ustring.find(source,"://",1,true)
ifschemeDelimeterPositionthen
scheme=mw.ustring.sub(source,1,schemeDelimeterPosition+2)
hostStartPosition=schemeDelimeterPosition+3
elseifmw.ustring.find(source,"^//",1)then
scheme="//"
hostStartPosition=3
elseifmw.ustring.find(source,"^mailto:",1)then
scheme="mailto:"
hostStartPosition=8
elseifmw.ustring.find(source,"@",1)then
scheme="mailto:"
source=scheme..source
hostStartPosition=8
else
scheme="http://"
source=scheme..source
hostStartPosition=8
end
iftitlethen
localfinds=mw.ustring.find(arg1,"[",1,true)
iftitleDelimeterPositionandfindsandfinds>titleDelimeterPosition+1then
ifarg2==nilthen
returnarg1..(isTestPageand''or'[[Kateqoriya:Vikipediya:URL modulu qarışıq olan səhifələr]]')
else
returnarg1..(isTestPageand''or'[[Kateqoriya:Vikipediya:URL modulu xətası olan səhifələr]]')
end
end
return'['..source..' '..title..']'..postfix
end
localhostDelimeterPosition=mw.ustring.find(source,"/",hostStartPosition,true)
ifhostDelimeterPositionthen
host=mw.ustring.sub(source,hostStartPosition,hostDelimeterPosition-1)
ifhostDelimeterPosition==mw.ustring.len(source)then
path=nil
else
path=mw.ustring.sub(source,hostDelimeterPosition+1)
end
else
host=mw.ustring.sub(source,hostStartPosition)
end
-- post-split format options
ifstartsWith(host,' ')then
host=mw.ustring.sub(host,5)
end
host=mw.language.new('en'):lc(host)
ifpathandpath~=''andpath~='/'then
localtitle=host..'/'..path
iflengthand#title>lengththen
title=host..'/'..mw.ustring.sub(path,1,length-#title-2)..'…'
end
return'['..source..' '..title..']'..postfix
else
return'['..source..' '..host..']'..postfix
end
end
functionp.formatUrl(frame)
localurl=frame.args[1]or''
localtitle=frame.args[2]or''
locallength=frame.args['length']andtonumber(frame.args['length'])
url=mw.text.trim(url)
title=mw.text.trim(title)
ifurl==''then
returnnil
end
iftitle==''then
title=nil
end
returnformatUrlImpl(url,title,length)
end
functionp.formatUrlSingle(context,options,url)
url=mw.text.trim(url)
ifurl==''then
returnnil
end
localtitle=nil
if(options['text']andoptions['text']~='')then
title=options['text']
end
locallength=options['length']andtonumber(options['length'])
returnformatUrlImpl(url,title,length)
end
returnp