Subversion Repositories wimsdev

Rev

Rev 7692 | 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_wims_version=4.01
!exit

:proc

slib_def=$wims_read_parm
slib_def=!rows2lines $slib_def
slib_def=!replace internal $    $ by $\
$ in $slib_def

slib_word=!column 1 of $slib_def
slib_word=!singlespace $slib_word
!!slib_word=!replace internal - by Z in $slib_word
slib_word=!replace internal , by $\
$ in $slib_word
slib_word=!deaccent $slib_word
slib_word=!lowercase $slib_word
!if $slib_word issametext $empty
 slib_out=
 !goto end
!endif
slib_alphabet=a,b,c,d,e,f,g,h,i,j,k,k,l,l,m,n,o,p,q,r,s,t,u,u,v,w,w,x,y,z
slib_crossword=crossword
slib_number_test=!text select 0123456789 in $slib_word
slib_alpha_test=!text select abcdefghijklmnopqrstuvwxyz in $slib_word

!if $slib_number_test!=$empty
  !if $slib_alpha_test=$empty
    slib_number_test=1
    !for slib_c=0 to 9
      slib_word=!replace internal $slib_c by $(slib_alphabet[$slib_c+1]) in $slib_word
    !next
  !else
   slib_out=
   !goto end
  !endif
!endif
slib_word_cnt=!linecnt $slib_word
!if slib_word_cnt=0
  slib_out=
  !goto end
!endif
!if $slib_word_cnt >20
  slib_word_cnt=!shuffle $slib_word_cnt
  slib_word=!line $slib_word_cnt of $slib_word
  slib_word_cnt=20
!endif

slib_test_char=!lines2words $slib_word
!! let the empty character at the end of the line
slib_test_char=!text expand $slib_test_char using 10
slib_test_char=!words2items $slib_test_char
slib_pb=!listintersect -,_ and $slib_test_char
!if $slib_pb!=$empty
  slib_test_char=!listcomplement $slib_test_char in $slib_alphabet
  slib_test_char_cnt=!itemcnt $slib_test_char
  !if $slib_test_char_cnt >=1
    slib_word=!replace internal $(slib_pb[1]) by $(slib_test_char[1]) in $slib_word
    !if $slib_test_char_cnt >=2 and $(slib_pb[2]) notsametext
      slib_word=!replace internal $(slib_pb[2]) by $(slib_test_char[2]) in $slib_word
    !endif
  !endif
!endif

!set slib_file=!randint 1000
!set slib_file=cw_$wims_nowseconds$slib_file
!if $slib_word issametext $empty
  slib_out=
  !exit
!endif
!readproc oef/togetfile.proc $slib_file new\
$slib_word

!set sess=!replace internal . by , in $session
!set slib_file=$wims_home/sessions/$(sess[1])/getfile/$slib_file
slib_cw=!exec $slib_crossword $slib_file

!!!cleanup
slib_test=0
slib_i=1
slib_cw=!replace internal $ $ by $\
$ in $slib_cw

!for slib_u=1 to  $slib_word_cnt
   slib_line=!line $slib_u of $slib_cw
   slib_line=!nonempty items $slib_line
   !if $slib_line!=$empty
     !goto continue1
   !endif
!next

:continue1
slib_cw=!line $slib_u to -1 of $slib_cw

slib_test=0
slib_i=1

!for slib_v=1 to  $slib_word_cnt
   slib_line=!line -$slib_v of $slib_cw
   slib_line=!nonempty items $slib_line
   !if $slib_line!=$empty
     !goto continue2
   !endif
!next
:continue2

slib_cw=!line 1 to -$slib_u of $slib_cw

!for slib_v=1 to  $slib_word_cnt
   slib_line=!column $slib_v of $slib_cw
   slib_line=!nonempty items $slib_line
   !if $slib_line!=$empty
     !goto continue3
   !endif
!next
:continue3
slib_cw=!column $slib_v to -1 of $slib_cw
!for slib_v=1 to  $slib_word_cnt
   slib_line=!column -$slib_v of $slib_cw
   slib_line=!nonempty items $slib_line
   !if $slib_line!=$empty
     !goto continue4
   !endif
!next
:continue4
slib_cw=!column 1 to -$slib_v of $slib_cw


!if $slib_number_test=1
   !for slib_c=0 to 9
      slib_cw=!replace internal $(slib_alphabet[$slib_c+1]) by $slib_c in $slib_cw
    !next
!endif
slib_out=!replace internal ,$ $ by , in $slib_cw

!if $slib_pb!=$empty
  !if $slib_test_char_cnt >=1
    slib_out=!replace internal $(slib_test_char[1]) by $(slib_pb[1]) in $slib_out
    !if $slib_test_char_cnt >=2 and $(slib_pb[2]) notsametext
      slib_out=!replace internal $(slib_test_char[2]) by $(slib_pb[2]) in $slib_out
    !endif
  !endif
!endif

slib_out=[$slib_out],[$slib_def]

:end