bible-reference-formatter
Version:
Utility that converts Bible references from OSIS to human-readable formats and Paratext.
1 lines • 7.22 kB
JavaScript
var OsisToReadable=function(t){function e(n){if(r[n])return r[n].exports;var s=r[n]={exports:{},id:n,loaded:!1};return t[n].call(s.exports,s,s.exports,e),s.loaded=!0,s.exports}var r={};return e.m=t,e.c=r,e.p="",e(0)}([function(t,e){"use strict";function r(){return{b:"$b",c:"$c",v:"$v","-":"-",",":", ",".":" ","c.v":":",$chapters:["ch","chs"],$verses:["v","vv"],singleChapterFormat:"bv",singleChapterBooks:["Obad","Phlm","2John","3John","Jude","PrAzar","SgThree","Sus","Bel","EpJer","PrMan","Ps151","AddPs"],Ps151Format:"bc",maxPs:150}}function n(){function t(t,r){if("string"!=typeof t)throw"osisToReadable: first argument must be a string.";for(var n=S(r),s=t.split(","),o=[];s.length>0;){var a=O(s.shift());o.push(g(a,n)),s.length>0&&o.push({osis:",",type:",",parts:[],laters:[]})}return e(o)}function e(t){t=b(t);for(var e=[];t.length>0;){var r=t.shift();"undefined"!=typeof r.bookSequence?e.push(n(r,t)):e.push(p(r))}return e.join("")}function n(t,e){var r=t.bookSequence;if("undefined"!=typeof r)for(;r.length>1;){var n=r.join(",");if("undefined"!=typeof j[n]&&"string"==typeof j[n][0])return a(r.length,e),j[n][0];r.pop()}return p(t)}function a(t,e){for(;t>1;)e.shift(),e.shift(),t--}function p(t){if("string"==typeof t.bookRange&&"undefined"!=typeof j[t.bookRange]&&"string"==typeof j[t.bookRange][0])return j[t.bookRange][0];for(var e=[],r=0,n=t.parts.length;r<n;r++)e.push(i(t,t.parts[r]));return e.join("")}function i(t,e){var r="";switch(e.type){case"c":case"v":""!==e.subType&&"undefined"!=typeof A[e.subType]&&(r=f(e.subType,e,t));case"b":return r+f(e.type,e,t);case".":case"-":case",":default:return f(u(e.type,e.subType),e,t)}}function u(t,e){for(var r=e.split(t),n=o(r,2),s=n[0],a=n[1],p=a,i=0,u=s.length;i<=u;i++){for(a=p;a.length>0;){if("string"==typeof A[""+s+t+a])return""+s+t+a;a=a.substr(0,a.length-1)}s=s.substr(1)}return t}function f(t,e,r){var n=A[t];return n.indexOf("$")===-1?n:(n=n.replace(/\$chapters/g,function(){var t="undefined"==typeof j[e.b+".$chapters"]?A.$chapters:j[e.b+".$chapters"];return t.length>1&&c(e,r)>0?t[1]:t[0]}),n=n.replace(/\$verses/g,function(){return A.$verses.length>1&&l(e,r)===!0?A.$verses[1]:A.$verses[0]}),n=n.replace(/\$b/g,function(){var t=j[e.b].length-1;if(0===t)return j[e.b][0];var n=c(e,r);return n>t?j[e.b][t]:j[e.b][n]}),n=n.replace(/\$c/g,"string"==typeof e.c?e.c:""),n=n.replace(/\$v/g,"string"==typeof e.v?e.v:""))}function c(t,e){if("b"===e.type&&!T(t.b))return 2;var r="c"===t.type?"c":"";if(r+=t.laters.join("")+","+e.laters.join(","),r.indexOf("-c")>=0)return 1;if("Ps"===t.b&&r.indexOf("-b")>=0){for(var n=0,s=e.parts.length;n<s;n++){var o=e.parts[n];if("c"===o.type){if(parseInt(o.c,10)<A.maxPs)return 1;break}}return 0}return r.split("c").length>2?1:0}function l(t,e){var r="v"===t.type?"v":"";r+=t.laters.join("")+","+e.laters.join(",");var n=r.split("c"),s=o(n,1),a=s[0];return a.indexOf("-")>=0||a.split("v").length>2}function b(t){for(var e=[],r=t[0],n=0;t.length>0;){var s=t.shift();","===s.type?y(s,r,t):v(s,t,n),h(s,t),d(s.parts),e.push(s),r=s,n++}return e}function v(t,e,r){if(0===r&&"b"!==t.parts[0].type){var n=t.type.split("-"),s=o(n,1),a=s[0],p="";T(t.parts[0].b)&&(p="b1"),t.parts[0].subType=p+"^"+a}}function y(t,e,r){var n=e.parts[e.parts.length-1],s=e.type.split("-"),o=r[0].type.split("-");t.parts=[{type:",",subType:s.pop()+","+o[0],b:n.b,c:n.c,v:n.v,laters:[]}]}function h(t,e){var r=t.type,n=[],s=!1,a=!1;"b"===r&&(n.push(t.parts[0].b),s=!0);for(var p=0,i=e.length;p<i;p++){var u=e[p],f=u.type;if(","!==f&&(s===!0&&("b"===f?n.push(u.parts[0].b):s=!1),a!==!0))if(f.indexOf("b")>=0){var c=f.split("b"),l=o(c,1),b=l[0];if(b.length>0&&t.laters.push(b),s===!1)break;a=!0}else t.laters.push(f)}n.length>1&&(t.bookSequence=n)}function d(t){for(var e=[],r=t.length,n=0;n<r;n++)e.push(t[n].type);for(var s=0;s<r;s++)e.shift(),t[s].laters=e.filter(function(t){return"."!==t})}function g(t,e){var r=t.split("-"),n=o(r,2),s=n[0],a=n[1],p=k(s,e);if(void 0===a)return p;var i=k(a,e),u=p.parts;u.push(m(p,i));var f={osis:t,type:p.type+"-"+i.type,parts:u.concat(i.parts),laters:[]};return"b-b"===f.type&&(f.bookRange=p.parts[0].b+"-"+i.parts[0].b),f}function m(t,e){var r=t.parts[t.parts.length-1],n={type:"-",subType:t.type+"-"+e.type,b:r.b,laters:[]};return"undefined"!=typeof r.c&&(n.c=r.c),"undefined"!=typeof r.v&&(n.v=r.v),n}function k(t,e){var r=t.split("."),n=o(r,3),s=n[0],a=n[1],p=n[2];if("undefined"==typeof j[s])throw'Unknown OSIS book: "'+s+'" ('+t+')"';var i={osis:t,type:"",parts:[],laters:[]},u=T(s),f=u&&"string"==typeof p&&("bv"===A.singleChapterFormat||"b"===A.singleChapterFormat);return x(s,a,p,u,f,e,i)===!1?i:$(s,a,p,f,e,i)===!1?i:(i.type+="v",i.parts.push({type:"v",subType:"",b:s,c:a,v:p,laters:[]}),e.v=parseInt(p,10),i)}function x(t,e,r,n,s,o,a){if(void 0===r&&n===!0&&"b"===A.singleChapterFormat)return o.b=t,o.c=0,o.v=0,a.type="b",a.parts.push({type:"b",subType:"",b:t,laters:[]}),!1;if(t!==o.b||void 0===e){if(o.b=t,o.c=0,o.v=0,a.parts.push({type:"b",subType:"",b:t,laters:[]}),a.type="b",void 0===e)return!1;var p="b.c";s===!0?p="b.v":n===!0&&(p="b1.c"),a.parts.push({type:".",subType:p,b:t,laters:[]})}return!0}function $(t,e,r,n,s,o){if((parseInt(e,10)!==s.c||void 0===r)&&(s.c=parseInt(e,10),s.v=0,n===!1)){if(o.parts.push({type:"c",subType:"",b:t,c:e,laters:[]}),o.type+="c",void 0===r)return!1;o.parts.push({type:".",subType:"c.v",b:t,laters:[]})}return!0}function T(t){return A.singleChapterBooks.indexOf(t)>=0}function O(t){if(I.test(t)===!1)throw"Invalid osis format: '"+t+"'";return"bc"===A.Ps151Format&&(t=t.replace(/(?:Ps151|AddPs)(?:\.\d+\b)?/g,"Ps.151")),t}function S(t){var e={b:"",c:0,v:0};if(null==t)return e;if(t=O(t),t.indexOf("-")>=0){var r=t.split("-"),n=o(r,2),s=n[1];return S(s)}var a=t.split("."),p=o(a,3),i=p[0],u=p[1],f=p[2];if("undefined"==typeof j[i])throw'Unknown OSIS book provided for "context": "'+i+'" ('+t+')"';return e.b=i,"string"==typeof u&&(e.c=parseInt(u,10),"string"==typeof f&&(e.v=parseInt(f,10))),e}function w(t){if(A=r(),null!=t)for(var e=Object.keys(t),n=0,o=e.length;n<o;n++){var a=e[n],p=s(A[a]);if("undefined"!==p&&s(t[a])!==p)throw'Invalid type for options["'+a+'"]. It should be "'+p+'".';A[a]=t[a]}}function P(t){j={},Object.keys(t).forEach(function(e){var r=t[e];if(Array.isArray(r)===!1)throw'books["'+e+'"] should be an array: '+Object.prototype.toString.call(r)+".";if(r.length<1||r.length>3)throw'books["'+e+'"] should have exactly 1, 2, or 3 items. ';j[e]=r})}var I=/^[1-5A-Za-z]{2,}(?:\.\d{1,3}(?:\.\d{1,3})?)?(?:-[1-5A-Za-z]{2,}(?:\.\d{1,3}(?:\.\d{1,3})?)?)?$/,j={},A=r();return{toReadable:t,setOptions:w,setBooks:P}}var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},o=function(){function t(t,e){var r=[],n=!0,s=!1,o=void 0;try{for(var a,p=t[Symbol.iterator]();!(n=(a=p.next()).done)&&(r.push(a.value),!e||r.length!==e);n=!0);}catch(i){s=!0,o=i}finally{try{!n&&p["return"]&&p["return"]()}finally{if(s)throw o}}return r}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();t.exports=n}]);