Subversion Repositories wimsdev

Rev

Rev 15091 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

!if $wims_read_parm!=slib_header
  !goto proc
!endif

slib_author=Bernadette, Perrin-Riou

slib_example=[Rd1,Re1,Kg1,Pa2,Pb2,Pc2,Pf2,Pg2,Ph2,Pc3,Bd4,Qe4,Bf4;Kc8,Rd8,Rh8,Pa7,Pb7,Be7,Pf7,Pg7,Ph8,Be3],[e4xc6+;b7xc6;d4-a6#;c3-a1=Q]\
[Ra1,Nb1,Bc1,Qd1,Ke1,Bf1,Ng1,Rh1,a2,b2,c2,d2,e2,f2,g2,h2;Ra8,Nb8,Bc8,Qd8,Ke8,Bf8,Ng8,Rh8,a7,b7,c7,d7,e7,f7,g7,h7],[e1,c8]\
[Ra1,Nb1,Bc1,Qd1,Ke1,Bf1,Ng1,Rh1,a2,b2,c2,d2,e2,f2,g2,h2;Ra8,Nb8,Bc8,Qd8,Ke8,Bf8,Ng8,Rh8,a7,b7,c7,d7,e7,f7,g7,h7],[e1xc8]\
[Kf8,Pg6,Rh1;Bg8,Kh8,Pg7,Ph7],[Rh1-h6;Pg7-h6;Pg6-g7#]\
[Ra1,Nb1,Bc1,Qd1,Ke1,Bf1,Ng1,Rh1,a2,b2,c2,d2,e2,f2,g2,h2;Ra8,Nb8,Bc8,Qd8,Ke8,Bf8,Ng8,Rh8,a7,b7,c7,d7,e7,f7,g7,h7],[e1,c8;e2,c7],several

!exit

:proc
!reset slib_option slib_final slib_out
!distribute item $wims_read_parm into slib_initial,slib_mvt,slib_option
!default slib_option=global

slib_c=w,b
slib_initial=!declosing $slib_initial
slib_initial=!lines2rows $slib_initial
slib_initial1=$slib_initial
slib_mvt=!declosing $slib_mvt
slib_mvt=!lines2rows $slib_mvt
slib_mvt_cnt=!itemcnt $(slib_mvt[;1])
!for slib_m=1 to $slib_mvt_cnt
  !reset slib_a slib_f slib_f1 slib_c0 slib_j0 slib_prom slib_f2 slib_prom
  slib_test=0
  slib_mv=$(slib_mvt[$slib_m;])
  slib_mv=!translate internal -+x# to ,,,,  in $slib_mv
  slib_prom=!replace internal = by XX in $slib_mv
  !if XX isin $slib_prom
    slib_mv=!translate =[A-Z] to $ $ in $slib_mv
    slib_prom=!replace internal XX by ; in $slib_prom
    slib_prom=$(slib_prom[-1;])
  !else
    !reset slib_prom
  !endif

  !for slib_j=1 to 2
    !for slib_s in $(slib_initial[$slib_j;])
      !if $slib_test=0 and $(slib_mv[1]) isin $slib_s
        slib_f=$slib_s
        slib_f1=!charcnt $slib_f
        !if $slib_f1=2
          slib_f1=P
        !else
          slib_f1=!char 1 of $slib_f
        !endif
        slib_f2=$slib_f1
        !if $slib_prom!=
          slib_f1=$slib_prom
        !endif
        slib_j0=$slib_j
        slib_c0=!item $slib_j0 of $slib_c
        slib_test=1
      !endif
    !next
  !next
  slib_test=0
  !for slib_j=1 to 2
    !for slib_s in $(slib_initial[$slib_j;])
      !if $slib_test=0 and $(slib_mv[2]) isin $slib_s
        slib_a=$slib_s
        slib_test=1
      !endif
    !next
  !next
  slib_final=$slib_initial
  slib_final=!replace internal $slib_f by in $slib_final
  slib_final1=$(slib_final[1;])
  slib_final2=$(slib_final[2;])
  !if $slib_j0=1
    slib_final2=!replace internal $slib_a by in $slib_final2
    slib_final1=$slib_final1,$slib_f1$(slib_mv[2])
  !else
    slib_final1=!replace internal $slib_a by in $slib_final1
    slib_final2=$slib_final2,$slib_f1$(slib_mv[2])
  !endif

  slib_final2=!nonempty items $slib_final2
  slib_final1=!nonempty items $slib_final1
  slib_final=$slib_final1;$slib_final2
  !if $slib_a!=
    slib_a_cnt=!charcnt $slib_a
    !if $slib_a_cnt=2
      slib_a=P
    !else
      slib_a=!char 1 of $slib_a
    !endif
    !if $slib_prom=
      slib_out=!append line [$slib_final:$slib_mv],[$slib_f1,$slib_a] to $slib_out
    !else
      slib_out=!append line [$slib_final;$slib_mv],[[$slib_f2,$slib_prom],$slib_a,$slib_prom] to $slib_out
    !endif
  !else
    !if $slib_prom=
      slib_out=!append line [$slib_final;$slib_mv],[$slib_f1] to $slib_out
    !else
      slib_out=!append line [$slib_final;$slib_mv],[[$slib_f2,$slib_prom]] to $slib_out
    !endif
  !endif
  !if $slib_option iswordof global
    slib_initial=$slib_final
  !endif
!next slib_m