require('strict');localp={}--[[--------------------------< B I B C O D E >--------------------------------------------------------------------Validates (sort of) a bibcode id.Format for bibcodes is specified here: http://adsabs.harvard.edu/abs_doc/help_pages/data.html#bibcodesBut, this: 2015arXiv151206696F is apparently valid so apparently, the only things that really matter are length, 19 charactersand first four digits must be a year. This function makes these tests: length must be 19 characters characters in position 1–4 must be digits and must represent a year in the range of 1000 – next year 5 must be a letter 6 must be letter, ampersand, or dot (ampersand cannot directly precede a dot; &. ) 7–8 must be letter, digit, ampersand, or dot (ampersand cannot directly precede a dot; &. ) 9–18 must be letter, digit, or dot 19 must be a letter or dot]]localfunctionbibcode(id)localerr_type;localyear;if19~=id:len()thenerr_type='length';elseyear=id:match("^(%d%d%d%d)[%a][%a&%.][%a&%.%d][%a&%.%d][%a%d%.]+[%a%.]$")-- ifnotyearthen-- if nil then no pattern matcherr_type='value';-- so value errorelselocalnext_year=tonumber(os.date('%Y'))+1;-- get the current year as a number and add one for next yearyear=tonumber(year);-- convert year portion of bibcode to a numberif(1000>year)or(year>next_year)thenerr_type='year';-- year out of boundsendifid:find('&%.')thenerr_type='journal';-- journal abbreviation must not have '&.' (if it does its missing a letter)endendendreturnerr_type;end--[=[-------------------------< E N T R Y P O I N T S >------------------------------------------------------This module is mostly a copy of the bibcode validation used in [[Module:Citation/CS1]]call this module with: {{#invoke:check bibcode|check_bibcode|{{{1|}}}}}where {{{1|}}} is the bibcode]=]functionp.check_bibcode(frame)localerr_type=bibcode(frame.args[1]);iferr_typethenreturn'<span style="font-size:100%" class="error citation-comment">Check bibcode: '..err_type..' ([[Template:Bibcode#Error_messages|help]])</span>';endreturn'';endreturnp;