humdrum-tools / verovio-humdrum-viewer

Verovio Humdrum Viewer
http://verovio.humdrum.org
36 stars 9 forks source link

Change the style of "problem" encoding #661

Closed jacekiwaszko1 closed 2 years ago

jacekiwaszko1 commented 2 years ago

It would be good if "problem" notation in layout comments was a bit more formalized.

For now we encode text notes as !LO:TX:t=P:problem:description of the problem. It would be useful if problem was treated as a parameter: !LO:TX:t=P:problem=description of the problem

Sample Humdrum encoding:

**kern
!LO:TX:t=P:problem=description of a problem
1c
*-

In conversion to MEI <annot> element could be used to store the value of problem= parameter:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="https://music-encoding.org/schema/dev/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="https://music-encoding.org/schema/dev/mei-all.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<mei xmlns="http://www.music-encoding.org/ns/mei" meiversion="5.0.0-dev">
 <meiHead>
  <fileDesc>
   <titleStmt>
    <title />
   </titleStmt>
   <pubStmt />
  </fileDesc>
  <encodingDesc>
   <appInfo>
    <application isodate="2022-03-23T14:38:51" version="3.10.0-dev-fe12a79-dirty">
     <name>Verovio</name>
     <p>Transcoded from Humdrum</p>
    </application>
   </appInfo>
  </encodingDesc>
  <workList>
   <work>
    <title />
   </work>
  </workList>
 </meiHead>
 <music>
  <body>
   <mdiv xml:id="mydh0wg">
    <score xml:id="sjbjcgw">
     <scoreDef xml:id="sks71kq" midi.bpm="400.000000">
      <staffGrp xml:id="s1g8glh">
       <staffDef xml:id="sky3qwi" n="1" lines="5">
        <clef xml:id="cjs8zh1" shape="G" line="2" />
       </staffDef>
      </staffGrp>
     </scoreDef>
     <section xml:id="section-L1F1">
      <measure xml:id="measure-L1" right="invis">
       <staff xml:id="sck25i6" n="1">
        <layer xml:id="layer-L1F1N1" n="1">
         <note xml:id="note-L3F1" dur="1" oct="4" pname="c" accid.ges="n" />
        </layer>
       </staff>
       <dir xml:id="dir-L2F1" type="problem" place="above" staff="1" tstamp="1.000000">
        <rend xml:id="rsw6aed" color="red" fontstyle="normal">P</rend>
        <annot xml:id="problem1" type="problem">description of a problem</annot>
       </dir>
      </measure>
     </section>
    </score>
   </mdiv>
  </body>
 </music>
</mei>

(This issue is kind of related to #660.)

craigsapp commented 2 years ago

There are 724 cases of problem markers that I will not convert (at least initially), because the free-form comment parameter has no spaces (so it is difficult to automatically decide that it is not an actual parameter):

Click to view non-space cases of problem text ```tsv 1673 !LO:TX:t=P:all\right:global:problem 1559 !LO:TX:a:t=|:problem 1028 !LO:TX:a:t=P:mixedbeam:problem 957 !LO:TX:t=P:mixedbeam:problem 783 !LO:TX:b:t=|:problem 307 !LO:TX:t=P:2\right:global:problem 306 !LO:TX:t=P:all\middle:global:problem 302 !LO:TX:t=P:4\right:global:problem 251 !LO:TX:t=P:♯above:problem 206 !LO:TX:t=P:4\right:problem 196 !LO:TX:a:t=P:all\right:global:problem 172 !LO:TX:t=P:♯below:problem 168 !LO:TX:t=P:4\left:problem 139 !LO:TX:t=P:8\left:problem 130 !LO:TX:t=P:diminuendolikeaccent:problem 124 !LO:TX:t=P:8\right:global:problem 119 !LO:TX:t=P:all/middle:global:problem 117 !LO:TX:t=P:8\right:problem 113 !LO:TX:t=P:all\left:global:problem 111 !LO:TX:t=P:stem.color=red:problem 107 !LO:TX:t=P:p = p.:problem 100 !LO:TX:t=P:4\left:global:problem 100 !LO:TX:t=P:all\right:problem 100 !LO:TX:a:t=P:comma.color=blue:problem 90 !LO:TX:a:t=P:4\right:problem 87 !LO:TX:a:t=P:8\right:global:problem 79 !LO:TX:a:t=P:4\right:global:problem 78 !LO:TX:t=P:4\middle:problem 73 !LO:TX:t=P:rytm:problem 71 !LO:TX:t=P:stem.color=blue:problem 70 !LO:TX:t=P:16\left:problem 68 !LO:TX:a:t=P:all\right:problem 65 !LO:TX:t=P:pion:problem 53 !LO:TX:t=P:stem.color=dodgerblue:problem 52 !LO:TX:t=P:korekta:problem 51 !LO:TX:t=P:f = for.:problem 50 !LO:TX:a:rj:t=|:problem 50 !LO:TX:a:t=P:16\right:global:problem 48 !LO:TX:t=P:#above:problem 47 !LO:TX:t=P:LO:N:vis=16:problem 47 !LO:TX:t=P:łuk:problem 45 !LO:TX:t=P:stem.color=grey:problem 44 !LO:TX:b:t=P:♯below:problem 43 !LO:TX:t=P:f = for:problem 42 !LO:TX:t=P:dot.color=dodgerblue:problem 40 !LO:TX:t=P:pp[ianissimo]=pp.:problem 40 !LO:TX:t=P:16\right:global:problem 39 !LO:TX:t=P:8\:problem 37 !LO:TX:t=P:\right:problem 34 !LO:TX:t=P:16\right:problem 33 !LO:TX:t=P:4\:problem 33 !LO:TX:t=P:4\middle:global:problem 33 !LO:TX:a:i:t=P:mixedbeam:problem 32 !LO:TX:t=P:8\middle:problem 31 !LO:TX:t=P:♭above:problem 30 !LO:TX:t=P:barline.color=brown:problem 30 !LO:TX:a:t=P:8\right:problem 29 !LO:TX:t=P:sześciolinia:problem 29 !LO:TX:t=P:dot.color=red:problem 24 !LO:TX:t=P:2/left:global:problem 24 !LO:TX:t=P:fp=fp.:problem 24 !LO:TX:t=P:met(C|):problem 24 !LO:TX:t=P:LO:N:vis=4:problem 23 !LO:TX:t=P:f = f.:problem 23 !LO:TX:a:t=P:problem 23 !LO:TX:t=P:2\right:problem 22 !LO:TX:t=P:pp = pp.:problem 22 !LO:TX:t=P:barlines.color=red:problem 22 !LO:TX:t=P:Tutti=T::problem 21 !LO:TX:t=P:tremolo-dots:problem 21 !LO:TX:t=P:barline.color=red:problem 21 !LO:TX:t=P:8\left:global:problem 20 !LO:TX:t=P:dot.color=blue:problem 19 !LO:TX:a:t=P:16\right:problem 18 !LO:TX:t=P:f=for:global:problem 18 !LO:TX:t=P:all\right: global:problem 18 !LO:TX:t=P:LO:N:vis=32:problem 17 !LO:TX:t=P:problem 17 !LO:TX:t=P:rep:problem 17 !LO:TX:t=P:f[orte]=f.:problem 16 !LO:TX:t=P:rscale:2:problem 16 !LO:TX:t=P:p=p::global:problem 15 !LO:TX:t=P:♮above:problem 15 !LO:TX:t=P:all/left:global:problem 15 !LO:TX:t=P:ped.color=blue:problem 15 !LO:TX:t=P:tr = t:problem 14 !LO:TX:t=P:\left:problem 14 !LO:TX:t=P:p[iano]=p.:problem 14 !LO:TX:t=P:met(c|):problem 14 !LO:SIC:s:o=:v:4\center\global:problem 14 !LO:TX:a:t=P:2\right:global:problem 13 !LO:TX:a:t=P: rep:problem 13 !LO:TX:a:t=P:♭above:problem 12 !LO:TX:a:t=P:♮above:problem 12 !LO:TX:t=P:all\middle:problem 12 !LO:TX:a:t=|:problem:problem 12 !LO:TX:a:t=P:2\right:global:problem 11 !LO:TX:t=P:f=f::global:problem 11 !LO:TX:t=P:|:problem 11 !LO:TX:t=P:stem.color=orange:problem 11 !LO:TX:t=P:p=po:global:problem 11 !LO:TX:t=P:dot.color=grey:problem 10 !LO:TX:t=P:tutti=T::global:problem 10 !LO:TX:t=P:2\middle:global:problem 10 !LO:TX:t=P:all\center:global:problem 10 !LO:TX:a:t=P:8\left:problem 10 !LO:TX:t=P:all2\right:global:problem 10 !LO:SIC:o:s=:v:8\cente\global:problem 10 !LO:TX:t=P:p = p:problem 10 !LO:TX:a:t=P:#above:problem 10 !LO:TX:t=P:p=p:problem 9 !LO:TX:a:t=P:32\right:global:problem 9 !LO:TX:t=P:łuki:problem 9 !LO:TX:t=P:LO:N:vis=2:problem 9 !LO:TX:t=P:2\left:problem 9 !LO:TX:a:t=P:p=p.:problem 9 !LO:TX:b:t=P:stem.color=red:problem 9 !LO:TX:t=P:16\middle:problem 8 !LO:TX:t=P:4.\:problem 8 !LO:TX:b:t=P:stem.color=blue:problem 8 !LO:SIC:o:s=:v:4\right:global:problem 8 !LO:TX:b:t=P:\right:problem 8 !LO:TX:t=P:p(iano)=p.:global:problem 8 !LO:TX:t=P:rest.color=green:problem 8 !LO:SIC:o:s=:v:16\right:global:problem 7 !LO:TX:t=P:tutti=T:problem 7 !LO:TX:t=P:2/left:problem 7 !LO:TX:t=P:2\:global:problem 7 !LO:TX:t=P:f = for:global:problem 7 !LO:TX:t=P:cresc:problem 7 !LO:TX:t=P:2.:problem 7 !LO:TX:t=P:LO:N:vis=8:problem 7 !LO:TX:a:t=P:p=p:problem 7 !LO:TX:t=P:tr = tr.:problem 7 !LO:SIC:o:s=:v:8\right:global:problem 7 !LO:TX:t=P:p=p.:problem 7 !LO:TX:t=P:2\:global:problem 7 !LO:TX:t=P:2/:global:problem 7 !LO:TX:a:t=P:2/left:problem 7 !LO:TX:t=P:p=po.:global:problem 6 !LO:TX:a:t=P:f=f:problem 6 !LO:TX:t=P:all/right:global:problem 6 !LO:TX:a:t=P:łuk:problem 6 !LO:TX:t=P:p = piano:problem 6 !LO:TX:t=P:pp=pp::global:problem 6 !LO:TX:a:t=P:4\middle:problem 6 !LO:TX:t=P:znaki:C#F#:problem 6 !LO:TX:t=P:16\left:global:problem 6 !LO:TX:t=P:f=f:problem 6 !LO:TX:t=P:4/middle:global:problem 6 !LO:TX:t=P:p=po:problem 5 !LO:TX:t=P:dimin:problem 5 !LO:TX:t=P:f=for.:problem 5 !LO:TX:a:t=P:♯above:problem 5 !LO:TX:a:t=P:♯below:problem 5 !LO:TX:t=P:f=fo:problem 5 !LO:TX:t=P:2\middle:problem 5 !LO:TX:t=P:klamra:problem 5 !LO:TX:t=P:ff(ortissimo)=ff.:global:problem 5 !LO:TX:t=P:p=p.:global:problem 5 !LO:TX:t=P:LO:N:vis=00:problem 5 !LO:TX:t=P:f = forte:problem 5 !LO:TX:t=P:4\/middle:global:problem 5 !LO:TX:t=P:fp = fp:problem 5 !LO:TX:t=P:Tacet:problem 5 !LO:TX:a:t=P:2\middle:global:problem 5 !LO:TX:t=P:skreślenia:problem 5 !LO:TX:t=P:tr=tr::global:problem 5 !LO:TX:t=P:znaki:c#f#:problem 5 !LO:TX:t=P:32\right:global:problem 5 !LO:TX:t=P:T:=Tutti:global:problem 5 !LO:TX:t=P:ff = ffor.:problem 5 !LO:TX:t=P: all\right:problem 4 !LO:TX:t=P:♮below:problem 4 !LO:TX:t=P:8\middle:global:problem 4 !LO:TX:t=P:rep.color=blue:problem 4 !LO:TX:t=P:znaki:cc#ff#:problem 4 !LO:TX:a:t=P:2.\right:problem 4 !LO:TX:t=P:f = f:problem 4 !LO:TUP:numer:problem 4 !LO:TX:t=P:....:problem 4 !LO:TX:t=P:p = pia:problem 4 !LO:TX:a:t=P:all\right:global:problem 4 !LO:TX:t=P:||||:problem 4 !LO:TX:t=P:32\left:problem 4 !LO:TX:t=P:mf=mf.:problem 4 !LO:TX:t=P:fermata:color=blue:problem 4 !LO:TX:t=P:fp=fp::global:problem 4 !LO:TX:t=P:znaki:f#cc#:problem 4 !LO:TX:t=P:flag.color=dodgerblue:problem 4 !LO:TX:a:t=-:problem 4 !LO:TX:b:t=P:stem.color=brown:problem 4 !LO:TX:t=P:p=po::global:problem 4 !LO:TX:a:t=P:korekta:problem 4 !LO:TX:t=P:♭below:problem 4 !LO:TX:a:t=P:oddechy=rozdzielacze słów:global:problem 4 !LO:TX:a:t=P:f=f.:problem 4 !LO:TX:t=P:Solo=HB Solo:problem 4 !LO:TX:t=P:/right:problem 4 !LO:TX:a:t=P: 8\right:global:problem 4 !LO:TX:t=P:LO:N:vis=1:problem 4 !LO:TX:t=P:all2\right:problem 4 !LO:TX:t=P:LO:N:vis=2.:problem 4 !LO:TX:t=P:..:problem 4 !LO:TX:t=P:f=fo:global:problem 3 !LO:TX:t=P:dolce=dol.:problem 3 !LO:TX:t=P:numer:problem 3 !LO:TX:t=P:all/right:problem 3 !LO:SIC:v:problem 3 !LO:TX:a:t=P:rytm:problem 3 !LO:TX:a:t=P:f=for:problem 3 !LO:TX:b:t=||||:problem 3 !LO:TX:a:t=P:2\right:problem 3 !LO:TX:t=P:p = po:problem 3 !LO:TX:t=P:problem:2\middle:problem 3 !LO:TX:t=P:f=for::global:problem 3 !LO:TX:t=P:f=for:problem 3 !LO:TX:t=P:ubytki:problem 3 !LO:TX:a:t=P:24\right:problem 3 !LO:TX:t=P:Tutti=T.:problem 3 !LO:TX:a:t=||:problem 3 !LO:TX:a:t=P:f = for:global:problem 3 !LO:TX:t=P:0\right:problem 3 !LO:TX:b:t=|:problem:problem 3 !LO:TX:t=P:1.:problem 3 !LO:TX:a:t=P:8/left:global:problem 3 !LO:TX:t=P:f = fo.:problem 3 !LO:TX:t=P:4,8\middle:global:problem 3 !LO:TX:a:t=P:#below:problem 3 !LO:TX:t=P:||:problem 3 !LO:TX:t=P:kreska:problem 3 !LO:TX:t=P:fp = fp.:global:problem 3 !LO:TX:a:t=P: 4\right:global:problem 3 !LO:TX:a:t=P:32\right:problem 3 !LO:TX:a:t=P:12\right:problem 3 !LO:TX:a:t=P:\right:problem 3 !LO:TX:t=P:4,8,16\middle:global:problem 3 !LO:TX:t=P:8.\right:problem 3 !LO:TX:t=P:/left:problem 3 !LO:TX:t=6.:ołówkiem:problem 3 !LO:TX:t=8.:ołówkiem:problem 3 !LO:TX:a:t=P:p=p: :global:problem 3 !LO:TX:t=P:p=pia: global:problem 3 !LO:TX:a:t=P: all\right:global:problem 3 !LO:TX:t=P:pp(ianissimo)=pp.:global:problem 3 !LO:TX:a:t=P:4/left:global:problem 3 !LO:TX:t=P:4/left:problem 3 !LO:TX:a:t=P:8.\right:problem 3 !LO:TX:a:t=P:f=f: :global:problem 3 !LO:TX:t=P:note&stem.color=green:problem 3 !LO:TX:t=P:all2/right:global:problem 3 !LO:TX:t=P:f=fo::global:problem 3 !LO:TUP:b:problem 3 !LO:TX:t=P:mixedbam:problem 3 !LO:SIC:t=znak wyglądający jak custos na końcu pięciolinii:problem 3 !LO:TX:t=P:f=for.:global:problem 3 !LO:TX:b:t=P:#below:problem 3 !LO:TX:t=P:diminuendo.:problem 3 !LO:TX:t=P:Solo=So::problem 3 !LO:TX:t=P:global:problem 3 !LO:TX:t=P:pp=pianis:problem 3 !LO:TX:a:t=P:p = pia:global:problem 3 !LO:TX:t=P:mf=mf::global:problem 3 !LO:TX:a:t=P: u:problem 3 !LO:TX:a:t=P:p=pia:problem 3 !LO:TX:t=P:dim:problem 2 !LO:TX:t=P:fermata.color=grey:problem 2 !LO:TX:t=P:4r:problem 2 !LO:TX:a:t=P:f = for.:problem 2 !LO:TX:a:t=P:p=pia:global:problem 2 !LO:TX:t=P:fpp:problem 2 !LO:TX:t=P:tremolo+ligatura:problem 2 !LO:TX:t=P:plama:problem 2 !LO:TX:t=P:pion.SIC=c#?:problem 2 !LO:TX:a:t=Solo.:przekreślone:problem 2 !LO:TX:t=P:f=fo.:global:problem 2 !LO:TX:t=P:♯after:problem 2 !LO:TX:t=P:znaki: f#:problem 2 !LO:TX:a:t=P: D/E?:problem 2 !LO:TX:t=P: ubytki:problem 2 !LO:TX:a:t=P:ligatura:problem 2 !LO:TX:a:t=P:4,8,16\middle:global:problem 2 !LO:TX:t=7.:ołówkiem:problem 2 !LO:TX:t=P:pp=pp:problem 2 !LO:TX:a:t=P: 4\middle:global:problem 2 !LO:TX:t=P:p = pia:global:problem 2 !LO:TX:a:t=P:dot.color=red:problem 2 !LO:TX:a:t=P:f = f:global:problem 2 !LO:TX:t=P:f[orte]=forte:problem 2 !LO:TX:t=P:f=Forte:problem 2 !LO:TX:a:t=P:LO:SIC:v:=2e#\:problem 2 !LO:TX:t=P:LON:vis=2:problem 2 !LO:TX:t=P:all\left,middle,right:global:problem 2 !LO:TX:a:t=P:odnośnik:problem 2 !LO:TX:t=5.:ołówkiem:problem 2 !LO:TX:t=P:tekst:problem 2 !LO:SIC:s:o=:v:16\center\global:problem 2 !LO:TX:t=P:mxedbeam:problem 2 !LO:TX:t=P:SIC:s=4fn ?:problem 2 !LO:TX:t=P:p = piano.:problem 2 !LO:TX:t=P:LO:SIC:v:s=2.An/:problem 2 !LO:TX:t=P:poprawki:problem 2 !LO:TX:t=P:bemole:BB-,B-:problem 2 !LO:TX:a:t=P: 16\right:global:problem 2 !LO:TX:t=P:fp=fpo:problem 2 !LO:TX:a:t=P:all\middle:global:problem 2 !LO:TX:t=P:problem:4\middle:problem 2 !LO:TX:t=3.:ołówkiem:problem 2 !P:problem:all\right:global:problem 2 !LO:TX:t=P:8,4\right:global:problem 2 !LO:TX:t=P:fp=fp.:global:problem 2 !LO:TX:t=P:pause.color=blue:problem 2 !LO:TX:a:t=P:stem.color=blue:problem 2 !LO:TX:t=P:sf = sfor.:problem 2 !LO:TX:t=P:diminendolikeaccent:problem 2 !LO:TX:t=P:znaki:cc#f#:problem 2 !LO:TX:t=P:dimi:problem 2 !LO:TX:t=P:16\middle:global:problem 2 !LO:TX:t=P:tremolo.color=blue:problem 2 !LO:TX:a:t=P:all/left:global:problem 2 !LO:TX:t=|:problem 2 !LO:TX:t=P:!LO:N:vis=4 [druga warstwa]:problem 2 !LO:TX:t=P:Xped.color=blue:problem 2 !LO:TX:t=P:f = f..:problem 2 !LO:TX:a:t=P:all\right:GLOBAL:problem 2 !LO:TX:t=P:znaki:ff#ccn:problem 2 !LO:TX:t=P:32\middle:problem 2 !LO:TXX:t=P:tremolo.color=blue:problem 2 !LO:SIC:s=:v:2\right:global:problem 2 !LO:TX:a:t=P:p=p. (przekreślona laska):problem 2 !LO:TX:a:t=P:stem.color=red:problem 2 !LO:TX:t=P: Tutti=Tut:problem 2 !LO:TX:t=P:SIC:s=8fn ?:problem 2 !LO:TX:t=P:ff = ff.:problem 2 !LO:TX:t=P: all\right:global:problem 2 !LO:TX:t=P:Tutti=T:problem 2 !LO:TX:t=P:mf=mfr:problem 2 !LO:TX:t=P:LO:SIC:v:s=2fn/:problem 2 !LO:TX:a:t=P: ozdobnik:problem 2 !LO:TX:t=P:col?:problem 2 !LO:TX:b:t=P:all\right:problem 2 !LO:TX:t=P:ppp=ppp.:problem 2 !LO:TX:a:t=P:f = f::problem 2 !LO:TX:t=P:Solo=S::problem 2 !LO:TX:t=P:intonatio:problem 2 !LO:TX:t=P:znaki:ff#cc#f#gg#g#:problem 2 !LO:TX:t=P:beam.color=dodgerblue:problem 2 !LO:TX:a:t=P:8\middle:global:problem 2 !LO:TX:t=P:ligatury:problem 2 !LO:TX:a:t=P:\right:global:problem 2 !LO:TX:t=P:fermata:color=grey:problem 2 !LO:TX:a:t=P:4\left:problem 2 !LO:TX:t=P:pp=pianissime:problem 2 !LO:TX:t=P:artykulacja?:problem 2 !LO:TX:t=P:problem:8\right:problem 2 !LO:TX:t=P:problem:4/middle:problem 2 !LO:TX:t=P:!LO:N:vis=2:problem 2 !LO:TX:t=P:notehead.color=red:problem 2 !LO:TX:a:t=P:4/middle:global:problem 2 !LO:TX:a:t=P:tremolo:problem 2 !LO:TX:t=P:p=piano.:problem 2 !LO:TX:t=P:p=pia:global:problem 2 !LO:TX:t=P:barline.color=blue:problem 2 !LO:TX:t=P:p=pia:problem 2 !LO:TX:a:t=P:znak:problem 2 !LO:TX:a:t=P:f = for:problem 2 !LO:DY:c~:problem 2 !LO:TXX:t=P:rep.color=blue:problem 2 !LO:TX:t=P:pp(ianissimo)=pp.:problem 2 !LO:TX:a:t=P:4\middle:global:problem 2 !LO:TX:t=1.:ołówkiem:problem 2 !LO:TX:t=4.:ołówkiem:problem 2 !LO:TX:b:t=diminuendo:dynamics:problem 2 !LO:TX:a:t=1:color=dodgerblue:problem 2 !LO:TX:a:t=P:p = p::problem 2 !LO:TX:a:t=P:all/right:global:problem 2 !LO:TX:a:t=P:/left:global:problem 1 !LO:TX:t=P:znaki:f#c#d#g#:problem 1 !LO:TX:a:t=P:f=f::global:problem 1 !LO:TX:t=P:all\right!:problem 1 !LO:TX:t=P:p=piano:problem 1 !LO:TX:t=P:fp = fp: global:problem 1 !LO:TX:t=P:p[iano]=[p.]:problem 1 !LO:TX:t=P:LO:N:vis=8.:problem 1 !LO:TX:t=P:pp[ianissimo]=pp.:global:problem 1 !LO:TX:t=P:iuncto?:problem 1 !LO:TX:a:t=P:znaki: f#cc#g#:problem 1 !LO:TX:t=P:p = po:global:problem 1 !LO:TX:t=P:al\left:global:problem 1 !LO:TX:t=P:sic:s=16bn:problem 1 !LO:TX:t=P:notes-position:problem 1 !LO:TX:a:t=P:!4/:problem 1 !LO:TX:b:t=P:szlaczek.:problem 1 !LO:TX:t=P:LO:N:vis=1.:problem 1 !LO:TX:t=P:f = "for":global:problem 1 !LO:TX:t=P:ff = ffom.:problem 1 !LO:TX:t=P:p = p:o:global:problem 1 !LO:TX:t=P:acc.color=blue:problem 1 !LO:TX:t=P:p = "pia:":global:problem 1 !LO:TX:a:t=P: 4\right:problem 1 !LO:TX:a:t=mezzo forte e lentamente:dur=10q:ext=s:problem 1 !LO:TX:t=P:f = f:global:problem 1 !LO:TX:t=P:32\right:problem 1 !LO:TX:t=P:crescen.:problem 1 !LO:TX:t=P:SIC:s=4.Bn ?:problem 1 !LO:TX:t=P:znaki:cc#f#c#:problem 1 !LO:TX:a:t=P:col?:problem 1 !LO:TX:t=P:znaki: bn,een,an,ddn,f#,cc#,g#,dd#:problem 1 !LO:TX:t=P:tr=tr:problem 1 !LO:TX:t=P:triola?:problem 1 !LO:TX:t=P:2\,16/right:global:problem 1 !LO:TX:t=P:ff=ffo.:global:problem 1 !LO:TX:b:i:t=ego:P:?:problem 1 !LO:TX:t=P:p=pi:problem 1 !LO:TX:t=P:8/middle:global:problem 1 !LO:TX:t=P:f = fr:problem 1 !LO:TX:t=P:met(c):problem 1 !LO:TX:b:t=P:8\right:problem 1 !LO:TX:t=P:f(orte)=for:problem 1 !LO:TX:t=P:znaki:F#G#C#:problem 1 !LO:TX:t=P:d#B#A#E#:problem 1 !LO:TX:a:t=P:4\right:t.135-137:problem 1 !LO:TX:a:t=cres:dur=3e:ext=s:problem 1 !LO:TX:t=P:pp[ianissimo]=2pp.:problem 1 !LO:TX:t=P:LO:SIC:v:s=2C#?:problem 1 !LO:TX:a:t=P:p = pio:global:problem 1 !LO:TX:t=P:mixed:problem 1 !LO:TX:t=P:\8:problem 1 !LO:TX:t=P:znaki:CnF#:problem 1 !LO:TX:a:t=P:P: tryl/ozdobnik??:problem 1 !LO:TXX:t=P: tr-:problem 1 !LO:TX:t=P:/4.:problem 1 !LO:TX:t=P:f=forte:problem 1 !LO:TX:a:t=P: ligatura?:problem 1 !LO:TX:a:t=P:custos:problem 1 !LO:TX:t=P:metrum: C:problem 1 !LO:TX:a:t=P:p = pio::global:problem 1 !LO:TX:t=P:znaki:f#ccn:problem 1 !LO:TX:t=P:p=[coś dziwnego, co wygląda jak "echo"]:problem 1 !LO:TX:t=P:LO:SIC:v:s=2.b\:problem 1 !LO:TX:a:t=P:16\middle:global:problem 1 !LO:TX:t=P:24\left:global:problem 1 !LO:TX:b:t=....:problem 1 !LO:TX:t=P:pauzy:problem 1 !LO:TX:t=P:f = fort:problem 1 !LO:TX:t=P: Violino=Vio:global:problem 1 !LO:TUP:numer:global:problem 1 !LO:TX:t=P:SIC:s=8Bn ?:problem 1 !LO:TX:a:t=P: 32-ki:problem 1 !LO:TX:a:t=P:problem:all\right:problem 1 !LO:TX:t=P:beam:color=blue:problem 1 !LO:TX:t=P:mixedbem:problem 1 !LO:TX:t=P:SIC?:problem 1 !LO:TX:t=P:LO:SIC:v:s=16F# cały takt:problem 1 !LO:TX:b:t=P:Pedale:problem 1 !LO:TX:t=P:ff=ff.:problem 1 !LO:TX:t=2.:ołówkiem:problem 1 !LO:TX:a:t=P: tryl/ozdobnik?:problem 1 !LO:TX:t=P:rysunek:problem 1 !LO:TX:t=P:4,8\right:global:problem 1 !LO:TX:t=P:LO:SIC:v:n=2:s=2f#/:problem 1 !LO:TX:t=P:tr = tr:problem 1 !LO:TX:t=P:pętelka:problem 1 !LO:TX:a:t=accelerando e crescendo.:problem 1 !LO:TX:t=P:litera?:problem 1 !LO:N:vis=8:poprawione:problem 1 !LO:TX:t=P:4]right:global:problem 1 !LO:TX:b:i:t=rit_e_nu_to:ex=s:problem 1 !LO:TX:t=P:16\:problem 1 !LO:TX:a:t=P:all\middle:problem 1 !LO:TX:a:t=P:16,8,4\right:global:problem 1 !LO:TX:t=P:LO:SIC:v:s=2E-?:problem 1 !LO:TX:t=P:f=fr z klamrą łukową:problem 1 !LO:TX:t=P:4/middle:problem 1 !LO:TX:a:t=P:p = piò:problem 1 !LO:TX:t=P:dot.color=black:problem 1 !LO:TX:t=P:p=Piano:global:problem 1 !LO:TX:a:t=P:f = for::global:problem 1 !LO:TX:a:t=P:16\left:problem 1 !LO:TX:a:t=P: 8/left:global:problem 1 !LO:TX:t=P:pp = pianiſ.:problem 1 !LO:TX:a:t=P:Tacet:problem 1 !LO:TX:a:t=P:?:problem 1 !LO:TX:t=P:LO:SIC:v:s=4.e-/:problem 1 !LO:TX:t=P:all:4\middle:global:problem 1 !LO:TX:t=P:znaki:cc#gg#ff#:problem 1 !LO:TX:a:t=P:łuki:problem 1 !LO:TX:t=P:p = p:global:problem 1 !LO:TX:t=P:cadenza:problem 1 !LO:TX:a:t=P:[eight] = 80 dopisane ołówkiem:problem 1 !LO:TX:t=P:LO:SIC:v:s=2f?:problem 1 !LO:TX:t=P:barline:color=red:problem 1 !LO:TX:t=P:4,8,16\right:problem 1 !LO:TX:t=P: tr-:problem 1 !LO:TX:a:t=P:p=p::global:problem 1 !LO:TX:t=P:2.\=4:problem 1 !LO:TX:t=P:f = fo:problem 1 !LO:TX:a:t=P: legato/fermata:problem 1 !LO:TX:t=P:powtórka:problem 1 !LO:TX:t=P:stem.color=green:problem 1 !LO:TX:t=P:f = "fort:":global:problem 1 !LO:TX:t=P: ubytek:problem 1 !LO:TX:t=P:cre-scen-do.:problem 1 !LO:TX:aa:t=|:problem 1 !LO:TX:t=P:Solo=S:problem 1 !LO:TX:t=P:reklamant:problem 1 !LO:TX:a:t=P: p=pia:global:problem 1 !LO:TX:a:t=P:znaki[BB-B-]:problem 1 !LO:TX:t=P:4/center:problem 1 !LO:TX:a:i:t=ralentando.:podkreślenie:problem 1 !LO:TX:t=P:LO:N:n=2:vis=2:problem 1 !LO:TX:t=P:s:problem 1 !LO:TRX:t=P:all\right:global:problem 1 !LO:TX:t=P:dwukreska:problem 1 !LO:TX:t=P:m(ezzo)f(orte)=mf.:global:problem 1 !LO:TX:t=P:flażolet:problem 1 !LO:TX:a:t=P:nieczytelne,9,:problem 1 !LO:TX:t=P:pp=pianis.:problem 1 !LO:TX:t=P:>A:global:problem 1 !LO:TX:t=P:znaki:B-b-:problem 1 !LO:TX:b:t=P:4\right:problem 1 !LO:TX:a:t=P:sic?:problem 1 !LO:TX:a:t=[segno]:problem 1 !LO:TX:t=P:f = forte.:problem 1 !LO:TX:t=P:LO:SIC:v:s=8En\L ?:problem 1 !LO:TX:b:Bi:t=1:prawdopodobnie:problem 1 !LO:TX:a:t=P:skreślenia:problem 1 !LO:TX:t=P:4.:problem 1 !>LO:TX:t=P:all\middle:global:problem 1 !LO:TX:t=P:8 = 8va:problem 1 !LO:TX:t=P:=takty 233-4 - kadencja sopranu i violino principale - nie zaznaczona w głosie:problem 1 !LO:TX:t=P:sic:s=16bbn:problem 1 !LO:TX:t=P:vis=2\ z chorągiewką:problem 1 !LO:TX:t=P:b-a-ee-:problem 1 !LO:TX:t=P: ćwierćnuta:problem 1 !LO:TX:a:t=P:all\left,middle,right:global:problem 1 !LO:TX:t=P:p = "p:":global:problem 1 !LO:TX:t=P:all\right-global:problem 1 !LO:TX:a:t=d:korekta:problem 1 !LO:TX:t=P:Solo=So:problem 1 !LO:TX:t=P:Tutti=T:global:problem 1 !LO:TX:t=P:ff=fortiſ:global:problem 1 !LO:TX:t=P:sic?:problem 1 !LO:TX:a:t=P:znaki:problem 1 !LO:TX:t=P:2\,16/:right:global:problem 1 !LO:TX:t=P:znaki:F#Cn :problem 1 !LO:TX:t=P:znaki:ff#cc#f#gg#:problem 1 !LO:TX:b:t=P:dot.color=purple:problem 1 !LO:TX:t=P:LO:SIC:v:s=8f#?:problem 1 !LO:TX:b:t=P:f=f.:problem 1 !LO:TX:t=P:LO:SIC:v:s= ?:problem 1 !LO:TX:t=P:all\middle:global`:problem 1 !LO:TX:t=P:12\left:problem 1 !LO:TX:a:t=P:repetycja,color=blue:problem 1 !LO:TX:a:t=P:p = p:problem 1 !LO:TX:t=P:p = pian:problem 1 !LO:TX:t=P:pp=pianis.:global:problem 1 !LO:TX:a:t=P:8\right:global:problem 1 !LO:TX:t=P:"LO:SIC:v:n=3:s=2g\"?:problem 1 !LO:TX:t=P:f=for :global:problem 1 !LO:TX:a:t=P:nadliczbowy:problem 1 !LO:TX:a:t=P: f=for.:global:problem 1 !LO:TX:t=P:8va.color=blue:problem 1 !LO:TX:t=P:all\right:glboal:problem 1 !LO:TX:t=P:LO:SIC:v:s=2d\:problem 1 !LO:TX:a:t=P:f = for::problem 1 !LO:TX:b:t=P:f=f: :global:problem 1 !LO:TX:t=P:8/middle:problem 1 !LO:TX:a:t=P: 16\right:problem 1 !LO:TX:a:t=|||:problem 1 !LO:TX:t=P:mf=mf:problem 1 !LO:TX:a:t=P:right:global:problem 1 !LO:TX:t=P:4,8,16,32\middle:global:problem 1 !LO:TX:a:t=....:problem 1 !LO:TX:t=P:t.36-37:problem 1 !LO:TX:t=P:znaki:c#F#:problem 1 !LO:TX:t=P:przednutka???:problem 1 !LO:TX:t=P:pp?:problem 1 !LO:TX:t=P:crescendo:problem 1 !LO:TX:t=P:znaki:F#C#FF#:problem 1 !LO:TX:a:t=P: 4/middle:global:problem 1 !LO:TX:t=P:ligatura/kasownik/bemol?:problem 1 !LO:TX:b:t=P:p=p: :global:problem 1 !LO:TX:a:t=P:2\:global:problem 1 !LO:TX:t=P:o=tekst "Christe audi nos" wpisany po macoszemu:problem 1 !LO:TX:t=P:akcent:problem 1 !LO:TX:a:i:t=Tut:P:??:problem 1 !LO:TX:t=P:brace.color=green:problem 1 !LO:TX:t=P:druk: https://polona.pl/item/nie-wydrzecie,MzQ5MTQyNTQ/1/#info:metadata:problem 1 !LO:TX:t=P:znaki:ccnff#:problem 1 !LO:TX:a:t=P:<.....>:problem 1 !LO:TX:t=P:dolce=dol:problem 1 !LO:SIC:v:o=takty umieszczone na doklejce:problem 1 !LO:TX:t=P:LO:SIC:v:s=2.c#?:problem 1 !LO:TX:a:t=2i:(=21):problem 1 !LO:TX:t=P:fnccngn:problem 1 !LO:TX:t=P:znaki:f#cc#g#:problem 1 !LO:TX:a:t=P:16\middle:global:problem 1 !LO:TX:a:t=P:s.4:problem 1 !LO:TX:a:t=P:Solo:problem 1 !LO:TX:t=P:2/:problem 1 !LO:TX:t=P:all\right:GLOBAL:problem 1 !LO:TX:T=P:LO:SIC:v:s=4.B-?:problem 1 !LO:TX:t=P:znaki:cc#ff#g#:problem 1 !LO:TX:t=P:pp = pianiſ.:global:problem 1 !LO:TX:A:t=P:all\right:GLOBAL:problem 1 !LO:TX:t=P:fo(r)te?:problem 1 !LO:TX:a:t=P: 32\right:global:problem 1 !LO:TX:t=P:fermata.color=dodgerblue:problem 1 !LO:TX:a:t=8:pokreślone:problem 1 !LO:TX:t=P:32/left:problem 1 !LO:TX:t=P:ff=ffor:problem 1 !LO:TX:t=P:SIC:s=8Fn ?:problem 1 !LO:TX:t=P:f(orte)=f.:global:problem 1 !LO:TX:t=P:cres:problem 1 !LO:TX:a:t=P:p = p:global:problem 1 !LO:TX:t=P:fp=fp:problem 1 !LO:TX:t=P:p = Piano:problem 1 !LO:TX:t=P:LO:N:vis=4/:problem 1 !LO:TX:t=P:\4:problem 1 !LO:TX:a:t=P:segno:problem 1 !LO:TX:t=P:cyfra:problem 1 !LO:TX:t=P:znaki:f#cc#g#dd#:problem 1 !LO:TX:t=P:f = for.:global:problem 1 !LO:TX:a:t=P:16right:global:problem 1 !LO:TX:t=P:C#F#GG#:problem 1 !LO:TX:t=P:p = p.:global:problem 1 !LO:TX:a:t=P:right:problem 1 !LO:TX:t=P:beam.color=red:problem 1 !LO:TX:t=P:all\right,middle,left:global:problem 1 !LO:TX:a:t=P:klamra:problem 1 !LO:TX:t=P:tekst:https://www.projekt-gutenberg.org/wieland/midas/midas.html:problem 1 !LO:TX:t=5:ołówkiem:problem 1 !LO:TX:t=P:tr=t:global:problem 1 !LO:TX:a:t=P:4.\right:problem 1 !LO:TX:t=P:o=nadprogramowa pauza 4:problem 1 !LO:TX:t=P:p = po. :global:problem 1 !LO:TX:t=P:fermata.color=blue:problem 1 !LO:TX:a:t=P:nieczytelne:problem 1 !LO:TX:t=P:32\left:global:problem 1 !LO:TX:t=P:mf=mfr:global:problem 1 !LO:TX:t=P:tenuto=ten::global:problem 1 !LO:TX:t=P:znaki:F#C#FF#G#:problem 1 !LO:N:acc=#:below:problem 1 !LO:TX:a:t=P:dziura:problem 1 !LO:TX:t=P:LO:N:vis=4.:problem 1 !LO:TX:t=P:kropka/8F:problem 1 !LO:TX:a:t=P: 8\middle:global:problem 1 !LO:TX:t=P:znaki:c#g#f#:problem 1 !LO:TX:t=P:pp=pp.:global:problem 1 !LO:TX:a:t=P:f=forte (słabo czytelne):problem 1 !LO:TX:a:t=P: 2\right : global:problem 1 !LO:TX:a:t=P:16c\right:problem 1 !LO:TX:t=P:ff=ffo:global:problem 1 !LO:TX:t=P:tt.115-122:problem 1 !LO:TX:t=P:?:problem 1 !LO:TX:t=P:brak :problem 1 !LO:TX:t=P:p=po.:problem 1 !LO:TX:a:t=P:2\right&colon:global:problem 1 !LO:TX:t=P:c#f#:problem 1 !LO:SIC:o=4AA'<:v:t=w źródle kropka pod nutą 4AA, możliwe przypadkowe maźnięcie:problem 1 !LO:TX:a:t=||||:problem 1 !LO:TX:a:t=| | |:problem 1 !LO:TX:t=P:f=for w całej partii:problem 1 !LO:TX:t=P:4\rigt:problem 1 !LO:TX:t=2:ołówkiem:problem 1 !LO:TX:t=P:16\/middle:global:problem 1 !LO:TX:b:i:t=P:f=for:problem 1 !LO:TX:t=P:24\right:problem 1 !LO:TX:t=P:LO:N:vis=16.:problem 1 !LO:TX:a:t=P:nadmiarowy:problem 1 !LO:TX:t=P:f=f.:global:problem 1 !LO:TX:a:t=P: dziura:problem 1 !LO:TX:a:t=crescendo et accelerando.:problem 1 !LO:TX:t=P:mf=mezzof.:problem 1 !LO:TX:t=P:sfz = sf:global:problem 1 !LO:TX:b:t=8va:problem 1 !LO:TX:t=P:pp = pp:problem 1 !LO:TX:t=P:fp=fpo.:global:problem 1 !LO:TX:t=P:!LO:N:vis=1 [druga warstwa]:problem 1 !LO:TX:a:t=P:\right:global:problem 1 !LO:TX:a:t=P:32,16,8,4\right:global:problem 1 !LO:TX:b:t=P:diminuendolikeaccent:problem 1 !LO:TX:a:t=P:p= p::problem 1 !LO:TX:a:t=P:f = for:global:problem 1 !LO:TX:a:t=P:32\middle:global:problem 1 !LO:TX:t=P:4\left.:problem 1 !LO:N:vis=8:poprawiane:problem 1 !LO:TX:A:t=P: all\right:problem 1 !LO:TX:t=P:f=f.:problem 1 !LO:TX:t=P:znaki:c#f#g#:problem 1 !LO:TX:a:t=P:z=koniec ligatury na dole:problem 1 !LO:TX:t=P:korekta/przednutka:problem 1 !LO:SIC:o=Suauiter:v:t=w źródle tekst trudny do odczytania:problem 1 !LO:TX:t=P:p = p..:problem 1 !LO:TX:t=P:ubytek:problem 1 !LO:TX:b:t=cres:dur=7e:ext=s:problem 1 !LO:TX:a:t=P:=Da Capo ad Finis na pięciolinii:problem 1 !LO:TX:t=P: Tenore=Tonere:problem 1 !LO:TX:t=P:f = for..:problem 1 !LO:TX:t=P:p=pia::global:problem 1 !LO:TX:t=P:p=p:global:problem 1 !LO:TX:t=P:LO:SIC:v:s=2f#?:problem 1 !LO:TX:t=P:pp.[ianissimo]=[pp.]:problem 1 !LO:HP:i:t=P:cre-scen-do.:problem 1 !LO:TX:t=P:rf=rf.:global:problem 1 !LO:TX:t=P:kadencja:problem 1 !LO:TX:t=P:LO:SIC:v:s=2en/:problem 1 !LO:TX:t=P:cre-scen-do:problem 1 !LO:TX:t=P:znaki:cc#ff#gg#:problem 1 !LO:TX:t=P::2\right;global:problem 1 !LO:TX:a:t=P:/left:problem 1 !LO:TX:t=P:chorągiewka:problem 1 !LO:TX:t=P:8/:problem 1 !LO:TX:t=P:LO:SIC:v:n=2:s=4.B-/:problem 1 !LO:TX:t=P:LO:SIC:v:s=16CnX cały takt?:problem 1 !LO:TX:t=P:f = fortiſsime:problem 1 !LO:TX:t=P:znaki:cc#f#c#g#:problem 1 !LO:TX:t=P:triola:problem 1 !LO:TX:a:t=P: all\right:global:problem 1 !LO:TX:t=P:mf = mezo forte:problem 1 !LO:TX:t=P:allabreve:problem 1 !LO:TX:t=P:f=fo.:problem 1 !LO:TX:t=P:legato?:problem ```

These case represent 12990 instances (the most frequent are listed first).

Including the 12990 that are not being fixed, there are a total of 219082 problem messages: 20779 unique messages, with the most common being:

84012   !LO:TX:t=P:problem:kreska pseudotaktowa
29433   !LO:TX:t=P:problem:mixed beam
12917   !LO:TX:a:t=P:problem:mixed beam
6151    !LO:TUP:a:problem:klamra łukowa
3776    !LO:TX:a:t=P:mixed beam:problem
1859    !LO:TX:a:t=P:problem:kreska pseudotaktowa
1673    !LO:TX:t=P:problem:all\right:global
1555    !LO:TX:a:t=|:problem
1555    !LO:TUP:b:problem:klamra łukowa
1312    !LO:TX:a:t=P:problem:# above
1213    !LO:TX:b:t=P:problem:# below
1028    !LO:TX:a:t=P:problem:mixedbeam
878 !LO:TX:a:t=P:problem: mixed beam
850 !LO:TX:t=P:problem:mixedbeam
767 !LO:TX:b:t=|:problem
661 !LO:TX:t=P:problem:klamra łukowa
642 !LO:TX:t=P:problem:kreska pseudotaktowa:między nutą a kropką
624 !LO:TUP:a:problem:klamra łukowa, kropka zamiast numeru
620 !LO:TX:a:t=P:problem:cauda z lewej strony
565 !LO:TX:t=P:problem:# below
1555    !LO:TX:a:t=|:problem

and

767 !LO:TX:b:t=|:problem

Should be turned into vertical strokes.

craigsapp commented 2 years ago

Conversion is done with the adjustProblems PERL script:

Click to view program ```perl #!/usr/bin/env perl # # Programmer: Craig Stuart Sapp # Creation Date: Mon Apr 11 09:09:05 PDT 2022 # Last Modified: Mon Apr 11 12:14:46 PDT 2022 # Filename: popc2-transkrypcje/bin/adjustProblems # Syntax: perl 5 # # Description: Extract problem LO parameters from input file(s)/directories # # Usage: extractProblems file(s) # Options: (use only one at a time): # -i == All list input Layouts that contains problem parameter # -s == Print a list of all suspicious problems (problems without key value text). # -f == list fix that will be generated by this adjustment # -b == list both input and output for fixes # -w == write fixes into input file(s). # use strict; use Getopt::Long; use Term::ANSIColor qw(:constants); my $inputQ = 0; my $suspiciousQ = 0; my $fixQ = 0; my $bothQ = 0; my $writeQ = 0; Getopt::Long::Configure("bundling"); GetOptions ( 'i|inputQ' => \$fixQ, 's|suspicious' => \$suspiciousQ, 'f|fix' => \$fixQ, 'b|both' => \$bothQ, 'w|write' => \$writeQ ); my @files = @ARGV; foreach my $file (@files) { if (-d $file) { my @dfiles = glob("$file/*.krn"); foreach my $dfile (@dfiles) { processFile($dfile); } } else { processFile($file); } } exit(0); ########################################################################### ############################## ## ## processFile -- Extract problem entries from local comments. ## sub processFile { my ($file) = @_; open(FILE, $file) or die "Cannot read $file\n"; my @contents = ; chomp @contents; close FILE; my $changedQ = 0; for (my $i=0; $i<@contents; $i++) { my $line = $contents[$i]; next if $line =~ /^$/; next if $line !~ /^!/; next if $line =~ /^!!/; my $lchangedQ = 0; $line =~ s/middle:global/middle: global/g; $line =~ s/center:global/center: global/g; $line =~ s/left:global/left: global/g; $line =~ s/right:global/right: global/g; my @data = split(/\t+/, $line); for (my $j=0; $j<@data; $j++) { my $token = $data[$j]; next if $token eq "!"; next if $token !~ /:problem\b/; if ($inputQ) { print "$token\n"; next; } next if $token =~ /:problem=/; # problem text already present if ($suspiciousQ) { print "$token\n"; next; } if ($fixQ) { my $newtoken = fixProblem($token); print "$newtoken\n"; } elsif ($bothQ) { my $newtoken = fixProblem($token); print "$token\n$newtoken\n\n"; } elsif ($writeQ) { my $newtoken = fixProblem($token); if ($newtoken ne $token) { print STDERR "CHANGING $token\nTO $newtoken\n\n"; $data[$j] = $newtoken; $changedQ = 1; $lchangedQ = 1; } } else { print "$token\n"; } } if ($lchangedQ) { my $newline = join("\t", @data); $newline =~ s/\t+/\t/g; $contents[$i] = $newline; } } if ($changedQ) { print STDERR "Writing file $file\n"; open (FILE, ">$file") or die "Cannot write to file $file\n"; for (my $i=0; $i<@contents; $i++) { print FILE "$contents[$i]\n"; } close FILE; } } ############################## ## ## fixProblem -- ## sub fixProblem { my ($token) = @_; my @fields = split(/:/, $token); my $fsize = @fields; return "ERROR" if $fsize < 2; my $lo = $fields[0]; my $category = $fields[1]; my $probindex = -1; my $freeindex = -1; my $ignoreindex = -1; my $key; my $value; for (my $i=2; $i<@fields; $i++) { my $ftok = $fields[$i]; if ($ftok =~ /(.*?)=\s*(.*)\s*/) { $key = $1; $value = $2; } else { $key = $ftok; } $key =~ s/^\s+//; $key =~ s/\s+$//; if ($key =~ / /) { if ($freeindex != -1) { die "Problem in ftok $ftok\nFOR TOKEN: $token\n"; } $freeindex = $i; if ($i < @fields) { # check for continuation of problem text # (if next field starts with " ", then glue onto this field if ($fields[$i+1] =~ /^\s/) { $i++; $ignoreindex = $i; $fields[$i-1] .= ":$fields[$i]"; $fields[$i] = ""; } elsif ($fields[$i+1] =~ /\s/) { if ($fields[$i+1] !~ /=/) { # assume that the next field is also part of problem free text $i++; $ignoreindex = $i; $fields[$i-1] .= ":$fields[$i]"; $fields[$i] = ""; } } } } elsif ($key eq "problem") { $probindex = $i; } } if ($freeindex < 0 && ($probindex == @fields - 2)) { if (length($fields[$#fields] > 6)) { $fields[@fields-2] .= "=$fields[@fields-1]"; pop @fields; $probindex = -1; } } my $output = ""; for (my $i=0; $i<@fields; $i++) { next if $i == $probindex; next if $i == $freeindex; $output .= ":" if $i > 0; $output .= $fields[$i]; } $output = "$output:problem"; if ($freeindex >= 0) { $output .= "=$fields[$freeindex]"; } if ($output =~ /:problem\b.*:problem$/) { $output =~ s/:problem$//; } return $output; } ```
craigsapp commented 2 years ago
Screen Shot 2022-04-23 at 11 59 12 PM