tods-matchup-format-code
Version:
parse and stringify methods for working with TODS matchUp Format Codes
3 lines (2 loc) • 2.86 kB
JavaScript
const t={S:"normal",F:"final"};function i(t,i){if(t&&"object"==typeof t){if(t.timed&&!isNaN(t.minutes))return e(t);if(t.bestOf&&t.setFormat)return function(t,i){const e=n(t.bestOf),o=e&&"SET"+e||"",f=r(t.setFormat,i),a=f&&"S:"+f||"",u=r(t.finalSetFormat,i);if(o&&f&&!f.invalid&&(!u||!u.invalid))return[o,a,e>1&&u&&!u.invalid&&f!==u&&"F:"+u||""].filter(t=>t).join("-")}(t,i)}}function n(t){return!isNaN(Number(t))&&Number(t)}function e(t){return"T"+t.minutes}function r(t,i){if(t&&"object"==typeof t){if(t.timed)return e(t);if(t.tiebreakSet)return o(t.tiebreakSet);const r=n(t.setTo);if(r){const e=t.NoAD?"NOAD":"",f=o(t.tiebreakFormat),a=f&&!f.invalid&&"/"+f||"",u=n(t.tiebreakAt),s=u&&(i||u!==r)&&"@"+u||"";return f&&f.invalid?{invalid:!0}:`${r}${e}${a}${s}`}return{invalid:!0}}}function o(t){if(t)return"object"!=typeof t||t.tiebreakTo?"object"==typeof t&&n(t.tiebreakTo)?`TB${t.tiebreakTo}${t.NoAD?"NOAD":""}`:{invalid:!0}:""}function f(t){if(t&&"string"==typeof t){const i=0===t.indexOf("T")?"timed":0===t.indexOf("SET")?"SET":"";if("timed"===i){const i={bestOf:1,setFormat:s(t)};if(i.setFormat)return i}if("SET"===i)return function(t){const i=t.split("-"),n=c(i[0].slice(3)),e=i&&a(i[1]),r=i&&a(i[2]),o=n&&n<6,f=!i[2]||r&&!r.invalid,u=e&&!e.invalid,s={bestOf:n,setFormat:e};if(r&&(s.finalSetFormat=r),o&&u&&f)return s}(t)}}function a(i){if(i&&":"===i[1]){const n=i.split(":"),e=n[1];if(t[n[0]]&&e){if(0===e.indexOf("TB"))return{tiebreakSet:u(e)};if(0===e.indexOf("T"))return s(e);const t=i.match(/^[FS]{1}:(\d+)([A-Za-z]*)/),n=t&&d(t[2])||!1,r=!t||!t[2]||n,o=t&&c(t[1]),f=function(t){const i=t&&t.indexOf("@")>0&&t.split("@");if(i)return c(i[1])||{invalid:!0}}(e),a=!f||f&&!f.invalid,l=a&&f||o,m=u(e.split("/")[1]),b=!m||!m.invalid,v={setTo:o};return n&&(v.NoAD=!0),m?(v.tiebreakFormat=m,v.tiebreakAt=l):v.noTiebreak=!0,o&&r&&b&&a&&v||{invalid:!0}}}}function u(t){if(t){if(0===t.indexOf("TB")){const i=t.match(/^TB(\d+)([A-Za-z]*)/),n=i&&i[1],e=i&&d(i[2]),r=!i||!i[2]||e,o=c(n);if(o&&r){const t={tiebreakTo:o};return e&&(t.NoAD=!0),t}return{invalid:!0}}return{invalid:!0}}}function s(t){const i=c(t.slice(1));if(i)return{timed:!0,minutes:i}}function d(t){return t&&t.indexOf("NOAD")>=0}function c(t){return!isNaN(Number(t))&&Number(t)}exports.matchUpFormatCode=function(){return{stringify:t=>i(t),parse:t=>f(t),isValidMatchUpFormat:t=>function(t){var n;if("string"!=typeof t)return!1;const e=f(t);if(null!=e&&null!=(n=e.setFormat)&&n.timed&&1===(null==e?void 0:e.bestOf)&&t.indexOf("SET1-S:")<1&&0===t.indexOf("T"))return i(e).slice(7)===t;const r=t.match(/-S(\d+)+:TB(\d+)@(\d*)([A-Za-z]*)/),o=null==r?void 0:r[0],a=null==r?void 0:r[2],u=t.match(/-S(\d+)+:TB(\d+)@(\d*)([A-Za-z]*)/);return i(e,r&&o===a||u&&(null==u?void 0:u[0])===(null==u?void 0:u[2]))===t}(t)}}();
//# sourceMappingURL=tods-matchup-format-code.cjs.production.min.js.map
;