// abc2svg - ABC to SVG translator // @source: https://chiselapp.com/user/moinejf/repository/abc2svg // Copyright (C) 2014-2020 Jean-Francois Moine - LGPL3+ //#javascript window.onerror=function(msg,url,line){if(typeof msg=='string') alert("window error: "+msg+"\nURL: "+url+"\nLine: "+line) else if(typeof msg=='object') alert("window error: "+msg.type+' '+msg.target.src) else alert("window error: "+msg) return false} var user if(typeof abc2svg=="undefined") var abc2svg={} function dom_loaded(){var abc,new_page,src,a_inc={},errtxt='',app="abcweb",playing,abcplay,playconf={onend:function(){playing=false}},page,tune_lst,jsdir=document.currentScript?document.currentScript.src.match(/.*\//):(function(){var s_a=document.getElementsByTagName('script') for(var k=0;k=0) return s_a[k].src.match(/.*\//)||''} return""})() user={read_file:function(fn){return a_inc[fn]},errmsg:function(msg,l,c){errtxt+=clean_txt(msg)+'\n'},img_out:function(str){new_page+=str}} function clean_txt(txt){return txt.replace(/<|>|&.*?;|&/g,function(c){switch(c){case'<':return"<" case'>':return">" case'&':return"&"} return c})} abc2svg.playseq=function(evt){var i,j,svg=evt.target,e=svg while(svg.tagName!='svg'){svg=svg.parentNode if(!svg) return} i=svg.getAttribute('class') if(!i) return i=i.match(/tune(\d+)/) if(!i) return i=i[1] if(!abcplay){if(typeof AbcPlay=="undefined"){abc2svg.playseq=function(){} return} abcplay=AbcPlay(playconf)} if(!tune_lst){tune_lst=abc.tunes for(j=0;j').replace(/</g,'<').replace(/&/g,'&').replace(/[ \t]+(%%|.:)/g,'$1')} abc2svg.loadjs=function(fn,relay,onerror){var s=document.createElement('script');if(/:\/\//.test(fn)) s.src=fn else s.src=jsdir+fn;if(relay) s.onload=relay;s.onerror=onerror||function(){alert('error loading '+fn)} document.head.appendChild(s)} function render(){var i=0,j,k,res,re=/