@sutton-signwriting/core
Version:
a javascript package for node and browsers that supports general processing of the Sutton SignWriting script
3 lines (2 loc) • 10 kB
JavaScript
/* Sutton SignWriting Core Module v2.0.0 (https://github.com/sutton-signwriting/core), author: Steve Slevinski (https://SteveSlevinski.me), license: MIT */
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).ssw=t.ssw||{},t.ssw.convert={}))}(this,(function(t){"use strict";let e={null:"S00000",symbol:"S[123][0-9a-f]{2}[0-5][0-9a-f]",coord:"[0-9]{3}x[0-9]{3}",sort:"A",box:"[BLMR]"};e.nullorsymbol=`(?:${e.null}|${e.symbol})`,e.prefix=`(?:${e.sort}${e.nullorsymbol}+)`,e.spatial=`${e.symbol}${e.coord}`,e.signbox=`${e.box}${e.coord}(?:${e.spatial})*`,e.sign=`${e.prefix}?${e.signbox}`,e.sortable=`${e.prefix}${e.signbox}`;let r={null:"",symbol:"(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80]))",coord:"(?:\ud836[\udc0c-\uddff]){2}",sort:"𝠀",box:"\ud836[\udc01-\udc04]"};r.nullorsymbol=`(?:${r.null}|${r.symbol})`,r.prefix=`(?:${r.sort}(?:${r.nullorsymbol})+)`,r.spatial=`${r.symbol}${r.coord}`,r.signbox=`${r.box}${r.coord}(?:${r.spatial})*`,r.sign=`${r.prefix}?${r.signbox}`,r.sortable=`${r.prefix}${r.signbox}`;const o=["101011","101021","101031","101041","101051","101061","101071","101081","101091","101101","101111","101121","101131","101141","102011","102021","102031","102041","102051","102061","102071","102081","102091","102101","102111","102121","102131","102141","102151","102161","103011","103021","103031","103041","103051","103061","103071","103081","103091","103101","103111","103121","103131","103141","103151","103161","103171","103181","103191","103201","103211","103221","103231","103241","103251","103261","103271","103281","103291","103301","103311","103321","103331","103341","103351","103361","103371","103381","104011","104021","104031","104041","104051","104061","104071","104081","105011","105021","105031","105041","105051","105061","105071","105081","105091","105101","105111","105121","105131","105141","105151","105161","105171","105181","105191","105201","105211","105221","105231","105241","105251","105261","105271","105281","105291","105301","105311","105321","105331","105341","105351","105361","105371","105381","105391","105401","105411","105421","105431","105441","105451","105461","105471","105481","105491","105501","105511","105521","105531","105541","105551","105561","105571","105581","106011","106021","106031","106041","106051","106061","106071","106081","106091","106101","106111","106121","106131","106141","106151","106161","106171","106181","106191","106201","106211","106221","106231","106241","106251","106261","106271","106281","106291","106301","107011","107021","107031","107041","107051","107061","107071","107081","107091","107101","107111","107121","107131","107141","107151","107161","107171","107181","107191","107201","107211","107221","108011","108021","108031","108041","108051","108061","108071","108081","108091","108101","108111","108121","108131","108141","108151","108161","108171","108181","108191","109011","109021","109031","109041","109051","109061","109071","109081","109091","109101","109111","109121","109131","109141","109151","109161","109171","109181","109191","109201","109211","109221","109231","109241","109251","109261","109271","109281","109291","109301","109311","109321","109331","109341","109351","109361","109371","109381","109391","109401","110011","110021","110031","110041","110051","110061","110071","110081","110091","110101","110111","110121","110131","110141","110151","110161","201011","201021","201031","201041","201051","201061","201071","201081","201091","201101","201111","201121","201131","201141","201151","201161","201171","202011","202012","202021","202022","202031","202041","202042","202051","202052","202061","202071","202081","202082","202091","202092","202101","202102","202111","202121","202131","203011","203012","203013","203014","203015","203021","203022","203031","203032","203041","203051","203052","203061","203062","203071","203072","203073","203081","203082","203083","203084","203091","203092","203093","203101","203102","203103","203111","203112","203113","203121","203122","203123","203131","203141","203151","203161","203171","203181","203191","203201","203202","203203","204011","204012","204013","204014","204021","204022","204023","204024","204031","204032","204033","204034","204041","204042","204043","204044","205011","205012","205013","205014","205015","205021","205022","205031","205032","205041","205051","205052","205061","205062","205071","205081","205082","205083","205091","205101","205102","205103","205111","205112","205113","205121","205122","205123","205131","205141","205151","205161","205171","205181","205191","206011","206012","206013","206014","206021","206022","206023","206024","206031","206032","206041","206042","206043","206051","206052","206053","206054","206061","206062","206063","206064","206065","206066","206071","206072","206073","206081","206091","206101","206111","207011","207021","207031","207041","207051","207061","207071","207091","207101","207111","207121","207131","207141","207151","207161","207162","207163","208011","208012","208021","208022","208023","208024","208031","208032","208033","208034","208041","208042","208051","208061","208071","208081","208082","208091","208092","208093","208094","208101","208102","208103","208104","208111","208112","208121","208131","208141","209011","209012","209013","209014","209015","209021","209031","209041","209042","209043","209051","209061","209071","209081","210011","210012","210021","210022","210031","210032","210033","210041","210042","210043","210051","210052","210061","210062","210071","210072","210073","210074","210081","210082","301011","301021","301031","301032","301041","301042","301043","301044","401011","401021","401031","401041","401051","401061","401071","401081","401091","401101","401102","402011","402012","402013","402021","402022","402023","402024","402031","402032","402033","402041","402042","402043","402044","402045","402051","402052","402053","402054","402055","402061","402062","402063","402071","402072","402073","402081","402082","402083","402091","402101","402111","403011","403012","403013","403021","403022","403023","403031","403041","403042","403043","403044","403051","403052","403061","403062","403071","403072","404011","404012","404013","404021","404022","404023","404031","404032","404033","404041","404042","404043","404051","404052","404053","404061","404062","404063","404071","404072","404073","404081","404082","404083","404091","404092","404093","404101","404111","404112","405011","405012","405013","405014","405015","405021","405031","405041","405051","405052","405061","405062","405071","405072","405081","405091","405101","405111","405121","405131","501011","501021","501031","501041","501051","501061","501071","501081","501091","502011","502021","502022","502023","502024","502031","502032","502033","502041","601011","601012","601021","601031","601041","601051","601061","601071","701011","701012","701021","701022","701031"],n=t=>({A:"𝠀",B:"𝠁",L:"𝠂",M:"𝠃",R:"𝠄"}[t]),s=t=>parseInt(t.codePointAt(0))-120844+250,c=t=>String.fromCodePoint(120844+parseInt(t)-250),i=t=>[s(t.slice(0,2)),s(t.slice(2,4))],a=t=>t.map((t=>c(t))).join(""),l=t=>t.split("x").map((t=>parseInt(t))),d=t=>parseInt(t.codePointAt(0)),u=t=>String.fromCodePoint(t),p=t=>{if(""===t)return"S00000";const e=d(t)-262145,r=parseInt(e/96),o=parseInt((e-96*r)/16),n=parseInt(e-96*r-16*o);return"S"+(r+256).toString(16)+o.toString(16)+n.toString(16)},f=t=>u("S00000"===t?262144:262145+96*(parseInt(t.slice(1,4),16)-256)+16*parseInt(t.slice(4,5),16)+parseInt(t.slice(5,6),16)),g=t=>{if(!/^\d{6}(?:\d{3})?$/.test(t))return"";let e=`0${t.charAt(0)}-${t.charAt(1)}${t.charAt(2)}-0${t.charAt(3)}${t.charAt(4)}-0${t.charAt(5)}`;return t.length>6&&(e+=`-0${t.charAt(6)}-${t.charAt(7)}${t.charAt(8)}`),e};t.code2swu=u,t.coord2fsw=t=>t.join("x"),t.coord2swu=a,t.fsw2coord=l,t.fsw2swu=t=>{if(!t)return"";const r=t.match(new RegExp(e.prefix,"g"));r&&r.forEach((function(e){t=t.replace(e,"𝠀"+e.slice(1).match(/.{6}/g).map((t=>f(t))).join(""))}));const o=t.match(new RegExp(e.box+e.coord,"g"));o&&o.forEach((function(e){t=t.replace(e,n(e.slice(0,1))+a(l(e.slice(1,8))))}));const s=t.match(new RegExp(e.spatial,"g"));return s&&s.forEach((function(e){t=t.replace(e,f(e.slice(0,6))+a(l(e.slice(6,13))))})),t},t.id2key=t=>{if(0===t)return"S00000";const e=t-1,r=parseInt(e/96),o=parseInt((e-96*r)/16),n=parseInt(e-96*r-16*o);return"S"+(r+256).toString(16)+o.toString(16)+n.toString(16)},t.id2swu=t=>u(t+262144),t.key2id=t=>"S00000"===t?0:1+96*(parseInt(t.slice(1,4),16)-256)+16*parseInt(t.slice(4,5),16)+parseInt(t.slice(5,6),16),t.key2swu=f,t.key2symid=t=>{const e=t.match(/^S([1-3][0-9a-f]{2})(?:([0-5])([0-9a-f]))?$/);if(!e)return"";const r=parseInt(e[1],16)-256;return r>=o.length?"":e[3]?g(o[r])+"-0"+(1+parseInt(e[2]))+"-"+(parseInt(e[3],16)+1).toString().padStart(2,"0"):g(o[r])},t.mark2swu=n,t.num2swu=c,t.swu2code=d,t.swu2coord=i,t.swu2fsw=t=>{if(!t)return"";let e=t.replace(/𝠀/g,"A").replace(/𝠁/g,"B").replace(/𝠂/g,"L").replace(/𝠃/g,"M").replace(/𝠄/g,"R");const o=e.match(new RegExp(r.nullorsymbol,"g"));o&&o.forEach((function(t){e=e.replace(t,p(t))}));const n=e.match(new RegExp(r.coord,"g"));return n&&n.forEach((function(t){e=e.replace(t,i(t).join("x"))})),e},t.swu2id=t=>d(t)-262144,t.swu2key=p,t.swu2mark=t=>({"𝠀":"A","𝠁":"B","𝠂":"L","𝠃":"M","𝠄":"R"}[t]),t.swu2num=s,t.symid2key=t=>{const e=t.match(/^0(\d)-(\d{2})-0(\d{2})-0(\d)(?:-0(\d)-(\d{2}))?$/);if(!e)return"";const r=e[1]+e[2]+e[3]+e[4],n=o.indexOf(r);return-1===n?"":e[5]?"S"+(256+n).toString(16)+(parseInt(e[5],10)-1)+(parseInt(e[6],10)-1).toString(16):"S"+(256+n).toString(16)},t.symidArr=o,t.symidMax=g,t.symidMin=t=>{const e=t.match(/^0(\d)-(\d{2})-0(\d{2})-0(\d)(?:-0(\d)-(\d{2}))?$/);return e?e[5]?e[1]+e[2]+e[3]+e[4]+e[5]+e[6]:e[1]+e[2]+e[3]+e[4]:""},Object.defineProperty(t,"__esModule",{value:!0})}));