Jump to content

Module:Bibleverse

Permanently protected module
From Wikipedia, the free encyclopedia

-- This module implements Template:Bibleverse.localp={}--codes from bvf that may be in uselocalversion_num_codes={[9]='kjv',[31]='niv',[45]='amp',[49]='nasb',[64]='nivuk',[51]='nlt',[65]='msg',[76]='nirv',[105]='he',[104]='jps',[120]='opb',[121]='bb',[122]='bbc',[123]='bbl',[131]='nrsv',}--possible book inputs, based on Chicago Manuallocalbook_aliases={['genesis']={'gen','gn'},--old testament/tanakh['exodus']={'exod','ex'},['leviticus']={'lev','lv'},['numbers']={'num','nm'},['deuteronomy']={'deut','dt'},['joshua']={'josh','jo'},['judges']={'judg','jgs'},['ruth']={'ru'},['1_samuel']={'1sam','1sm'},['2_samuel']={'2sam','2sm'},['1_kings']={'1kgs'},['2_kings']={'2kgs'},['1_chronicles']={'1chron','1chr'},['2_chronicles']={'2chron','2chr'},['ezra']={'ezr'},['nehemiah']={'neh'},['esther']={'est'},['job']={'jb'},['psalms']={'ps','pss','psalm'},['proverbs']={'prov','prv'},['ecclesiastes']={'eccles','eccl','qoheleth'},['song_of_solomon']={'songofsol','songofsongs','song','sg','canticles','canticleofcanticles'},['isaiah']={'isa','is'},['jeremiah']={'jer'},['lamentations']={'lam'},['ezekiel']={'ezek','ez'},['daniel']={'dan','dn'},['hosea']={'hos'},['joel']={'jl'},['amos']={'am'},['obadiah']={'obad','ob'},['jonah']={'jon'},['micah']={'mic','mi'},['nahum']={'nah','na'},['habakkuk']={'hab','hb'},['zephaniah']={'zeph','zep'},['haggai']={'hag','hg'},['zechariah']={'zech','zec'},['malachi']={'mal'},['baruch']={'bar'},--apocrypha/deuterocanon['ecclesiasticus']={'ecclus','wisdomofsirach','sirach','sir'},['1_esdras']={'1esd'},['2_esdras']={'2esd'},['judith']={'jth','jdt'},['1_maccabees']={'1macc','1mc'},['2_maccabees']={'2macc','2mc'},['3_maccabees']={'3macc','3mc'},['4_maccabees']={'4macc','4mc'},['prayer_of_manasseh']={'profman','prayerofmanasses'},['susanna']={'sus'},['tobit']={'tob','tb'},['wisdom_of_solomon']={'ws','wisdom','wisofsol'},['prayer_of_azariah']={'prayerofazariahandhymnofthethreechildren'},['rest_of_esther']={'additionstoesther'},['bel_and_the_dragon']={'bel'},['epistle_of_jeremiah']={'letterofjeremiah'},['matthew']={'matt','mt'},--new testament['mark']={'mk'},['luke']={'lk'},['john']={'jn'},['acts']={'actsoftheapostles'},['romans']={'rom'},['1_corinthians']={'1cor'},['2_corinthians']={'2cor'},['galatians']={'gal'},['ephesians']={'eph'},['philippians']={'phil'},['colossians']={'col'},['1_thessalonians']={'1thess','1thes'},['2_thessalonians']={'2thess','2thes'},['1_timothy']={'1tim','1tm'},['2_timothy']={'2tim','2tm'},['titus']={'ti'},['philemon']={'philem','phlm'},['hebrews']={'heb'},['james']={'jas'},['1_peter']={'1pet','1pt'},['2_peter']={'2pet','2pt'},['1_john']={'1jn'},['2_john']={'2jn'},['3_john']={'3jn'},['jude']={'jude'},['revelation']={'rev','apocalypse','apoc','rv'},}localapoc={['1_esdras']=true,['2_esdras']=true,['judith']=true,['1_maccabees']=true,['2_maccabees']=true,['3_maccabees']=true,['4_maccabees']=true,['prayer_of_manasseh']=true,['susanna']=true,['tobit']=true,['wisdom_of_solomon']=true,['prayer_of_azariah']=true,['rest_of_esther']=true,['bel_and_the_dragon']=true,['epistle_of_jeremiah']=true,['sirach']=true,['ecclesiasticus']=true,}--these books only have one chapter, have to be handled differentlylocalno_chapters={['obadiah']=true,['epistle_of_jeremiah']=true,['prayer_of_azariah']=true,['susanna']=true,['bel_and_the_dragon']=true,['prayer_of_manasseh']=true,['philemon']=true,['2_john']=true,['3_john']=true,['jude']=true,}--sets the website to be used for each version, biblegateway is the fallback so don't define any for itlocalsite_tbl={nrsv='oremus',nrsvae='oremus',kjv='wikisource',asv='wikisource',wyc='wikisource',ws='wikisource',web='wikisource',he='mechon_mamre',jps='mechon_mamre',niv='biblica',nivuk='biblica',nirv='biblica',nab='usccb',bb='bible_hub',bbc='bible_hub',bbl='bible_hub',opb='bible_hub',esv='esv_bible',}--pattern for the url of each site using _book etc. (underscore then letters [a-z]) for variableslocalurlpat_tbl={oremus='https://bible.oremus.org/?passage=_book%20_vrange&version=_version',wikisource='s:Bible (_version)/_book#_schap:_svers',mechon_mamre='https://mechon-mamre.org/_version_book_schap.htm#_svers',biblica='https://www.biblica.com/bible/?osis=_version:_book%20_vrange',usccb='https://bible.usccb.org/bible/_book/_schap?_svers',biblegateway='https://www.biblegateway.com/passage/?search=_book+_vrange&version=_version',bible_hub='https://_version/_book/_schap-_svers.htm',esv_bible='https://www.esv.org/_book+_schap:_svers',}--changes book name to use in url for each site, only if necessarylocalsite_book_tbl={oremus={['epistle_of_jeremiah']='letter of jeremiah',},usccb={['song_of_solomon']='song_of_songs',['wisdom_of_solomon']='wisdom',['ecclesiasticus']='sirach',},mechon_mamre={['genesis']='01',['exodus']='02',['leviticus']='03',['numbers']='04',['deuteronomy']='05',['joshua']='06',['judges']='07',['1_samuel']='08a',['2_samuel']='08b',['1_kings']='09a',['2_kings']='09b',['isaiah']='10',['jeremiah']='11',['ezekiel']='12',['hosea']='13',['joel']='14',['amos']='15',['obadiah']='16',['jonah']='17',['micah']='18',['nahum']='19',['habakkuk']='20',['zephaniah']='21',['haggai']='22',['zechariah']='23',['malachi']='24',['1_chronicles']='25a',['2_chronicles']='25b',['psalms']='26',['job']='27',['proverbs']='28',['ruth']='29',['song_of_solomon']='30',['ecclesiastes']='31',['lamentations']='32',['esther']='33',['daniel']='34',['ezra']='35a',['nehemiah']='35b',}}--changes to the version name to be used in urls, only if necessarylocalsite_version_tbl={mechon_mamre={he='p/pt/pt',jps='e/et/et',},wikisource={kjv='King James',['9']='King James',asv='American Standard',ws='Wikisource',web='World English',wyc='Wycliffe',},bible_hub={bb='biblebrowser.com',bbc='biblecommenter.com',bbl='scripturetext.com',opb='bible.cc',}}localfunctiontrimArg(text)iftype(text)=='string'thentext=text:match('(%S.-)%s*$')--trimmed text or nil if emptyendreturntextendlocalfunctionvalueExists(tbl,value)for_,vinpairs(tbl)doifvalue==vthenreturntrueendendreturnfalseendlocalfunctiontitlecase(arg)-- http://grammar.yourdictionary.com/capitalization/rules-for-capitalization-in-titles.html-- recommended by The U.S. Government Printing Office Style Manual:-- 'Capitalize all words in titles of publications and documents,-- except a, an, the, at, by, for, in, of, on, to, up, and, as, but, or, and nor.'localalwayslower={['a']=true,['an']=true,['the']=true,['and']=true,['but']=true,['or']=true,['for']=true,['nor']=true,['on']=true,['in']=true,['at']=true,['to']=true,['from']=true,['by']=true,['of']=true,['up']=true,}localwords=mw.text.split(mw.text.trim(argor''),'_')fori,sinipairs(words)dos=string.lower(s)ifi>1thenifnotalwayslower[s]thens=mw.getContentLanguage():ucfirst(s)endelses=mw.getContentLanguage():ucfirst(s)endwords[i]=sendreturntable.concat(words,'_')endfunctionp.main(frame)localtargs=frame:getParent().argslocalargs={}for_,paraminipairs({1,2,3,4,5,'nobook','wlink','multi'})doargs[param]=trimArg(targs[param])endlocaldefault_version='nrsv'localinput_book=''localref=''localversion=''localversion_numlocaltext=''localwikilink=''localmainspace=mw.title.getCurrentTitle():inNamespaces(0)ifargs[1]==nilorargs[2]==nilortonumber(args[1])~=nilthen-- first argument is a numeric prefix and second is book nameinput_book=trimArg((args[1]or'')..' '..(args[2]or''))or''wikilink=trimArg((args[1]or'Book of')..' '..(args[2]or''))or''ref=args[3]or''version=mw.ustring.lower(args[4]ordefault_version)text=args[5]ortrimArg((input_book..' '..ref))else-- first argument is the whole book nameinput_book=args[1]or''wikilink='Book of '..args[1]ref=args[2]or''version=mw.ustring.lower(args[3]ordefault_version)text=args[4]or(input_book..' '..ref)endifargs.nobook=='yes'thentext=refendifargs.wlink=='yes'thentext=refwikilink='[['..wikilink..'|'..input_book..']] 'elsewikilink=''endifargs.multi=='yes'thenlocallinktext=text:gsub(' ','+')return'[https://www.biblegateway.com/passage/?search='..linktext..'&version=NRSV'..' '..text..']'endtext=text:gsub('-','–')--change hyphens to en dashes (3:2-5 → 3:2–5)iftonumber(version)thenversion=version_num_codes[tonumber(version)]orversionversion_num=trueendlocalerrors={}ifversion=='jpr'orversion=='jp'then--chabad doesn't work so rerouteversion='he'ifmainspacethentable.insert(errors,'[[Category:Pages with Bible version errors]]')endendlocalbook=input_book:gsub('%p',''):gsub(' ','_')book=mw.ustring.lower(book)localbook_found=falselocalstandard=book:gsub('_','')forfull_book,aliasesinpairs(book_aliases)doifstandard==full_book:gsub('_','')orvalueExists(aliases,standard)thenbook=full_bookbook_found=truebreakendendlocalsite=site_tbl[version]or'biblegateway'--fall back on biblegateway for unrecognized version because it has so many versionsifapoc[book]andversion=='nrsv'andsite=='oremus'then--oremus's nrsv doesn't have the apocryphaversion='nrsvae'--the anglicized version doesendlocalurlpat=urlpat_tbl[site]localsplit_ref=mw.text.split(ref,'[-–—]')--split the ref into the part before and after the dash/hyphenlocals_ref=mw.text.split(split_ref[1],'%p')--any punctuation can be used to separate chapter from verselocale_ref=split_ref[2]orsplit_ref[1]e_ref=mw.text.split(e_ref,'%p')fori,vinipairs(s_ref)dos_ref[i]=v:gsub('%D','')end--remove any non-numeric character (such as f)fori,vinipairs(e_ref)doe_ref[i]=v:gsub('%D','')endlocale_chap,e_vers,s_chap,s_verslocalchapter_only=nots_ref[2]ifno_chapters[book]thenchapter_only=falses_chap=1s_vers=s_ref[2]ors_ref[1]or1--verse 3 can be specified as "3" or "1:3"e_chap=1e_vers=e_ref[2]ore_ref[1]or1elses_chap=s_ref[1]or1s_vers=s_ref[2]or1ife_ref[2]ornots_ref[2]then--chapter-chapter or chapter(:verse)?-chapter:versee_chap=e_ref[1]ors_chapelse--chapter:verse-versee_chap=s_chapende_vers=e_ref[2]ore_ref[1]ors_versendiftype(site_book_tbl[site])=='table'thenbook=site_book_tbl[site][book]orbookendbook=titlecase(book)--title case looks better at oremus where they display the inputifsite=='mechon_mamre'then--special case handling for components of the urlifnottonumber(s_chap)then--non-numeric characters were omitted above so this may not be what was enterederror('Bibleverse error: start chapter should be a number',0)ends_chap=string.format('%x',s_chap/10)..(s_chap%10)elseifsite=='biblica'orsite=='oremus'thenbook=book:gsub('_','%%20')elseifsite=='esv_bible'orsite=='biblegateway'thenbook=book:gsub('_','+')elseifsite=='bible_hub'thenbook=string.lower(book)elseifsite=='usccb'thenbook=book:gsub('_','')endiftype(site_version_tbl[site])=='table'thenversion=site_version_tbl[site][version]endlocalv_rangeifchapter_onlythenife_chap==s_chapthenv_range=s_chapelsev_range=s_chap..'–'..e_chapendelseife_chap==s_chapande_vers==s_versthenv_range=s_chap..':'..s_verselseife_chap==s_chapthenv_range=s_chap..':'..s_vers..'–'..e_verselsev_range=s_chap..':'..s_vers..'–'..e_chap..':'..e_versendendlocalurl=urlpat:gsub('_%l+',{--get the components into the url_book=book,_schap=s_chap,_svers=s_vers,_echap=e_chap,_evers=e_vers,_vrange=v_range,_version=version,})localfulllinkifsite=='wikisource'then--interwikilinkfulllink=wikilink..'[['..url..'|'..text..']]'elsefulllink=wikilink..'['..url..' '..text..']'endifmainspacethenifnotbook_foundthentable.insert(errors,'<span style="color:red">Template:Bibleverse with invalid book</span>[[Category:Pages with Bible book errors]]')endifversion_numthentable.insert(errors,'[[Category:Pages with numeric Bible version references]]')endendreturnfulllink..table.concat(errors)endreturnp
close