Rev 4425 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 3398 | bpr | 1 | !if $wims_read_parm!=slib_header |
| 2 | !goto proc |
||
| 3 | !endif |
||
| 4351 | bpr | 4 | slib_author=Bernadette, Perrin-Riou |
| 3398 | bpr | 5 | |
| 6 | slib_wims_version=4.01 |
||
| 7 | !exit |
||
| 8 | |||
| 9 | :proc |
||
| 10 | |||
| 11 | slib_def=$wims_read_parm |
||
| 4425 | bpr | 12 | slib_def=!rows2lines $slib_def |
| 3398 | bpr | 13 | slib_def=!replace internal $ $ by $\ |
| 14 | $ in $slib_def |
||
| 15 | |||
| 16 | slib_word=!column 1 of $slib_def |
||
| 3818 | bpr | 17 | slib_word=!singlespace $slib_word |
| 4120 | bpr | 18 | !!slib_word=!replace internal - by Z in $slib_word |
| 3398 | bpr | 19 | slib_word=!replace internal , by $\ |
| 20 | $ in $slib_word |
||
| 21 | slib_word=!deaccent $slib_word |
||
| 22 | slib_word=!lowercase $slib_word |
||
| 23 | !if $slib_word issametext $empty |
||
| 24 | slib_out= |
||
| 25 | !goto end |
||
| 26 | !endif |
||
| 27 | 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 |
||
| 28 | slib_crossword=crossword |
||
| 29 | slib_number_test=!text select 0123456789 in $slib_word |
||
| 30 | slib_alpha_test=!text select abcdefghijklmnopqrstuvwxyz in $slib_word |
||
| 31 | |||
| 32 | !if $slib_number_test!=$empty |
||
| 33 | !if $slib_alpha_test=$empty |
||
| 34 | slib_number_test=1 |
||
| 35 | !for slib_c=0 to 9 |
||
| 36 | slib_word=!replace internal $slib_c by $(slib_alphabet[$slib_c+1]) in $slib_word |
||
| 37 | !next |
||
| 38 | !else |
||
| 39 | slib_out= |
||
| 40 | !goto end |
||
| 41 | !endif |
||
| 42 | !endif |
||
| 43 | slib_word_cnt=!linecnt $slib_word |
||
| 44 | !if slib_word_cnt=0 |
||
| 45 | slib_out= |
||
| 46 | !goto end |
||
| 47 | !endif |
||
| 48 | !if $slib_word_cnt >20 |
||
| 49 | slib_word_cnt=!shuffle $slib_word_cnt |
||
| 50 | slib_word=!line $slib_word_cnt of $slib_word |
||
| 51 | slib_word_cnt=20 |
||
| 52 | !endif |
||
| 53 | |||
| 4425 | bpr | 54 | slib_test_char=!lines2words $slib_word |
| 55 | !! let the empty character at the end of the line |
||
| 7692 | bpr | 56 | slib_test_char=!text expand $slib_test_char using 0 |
| 4425 | bpr | 57 | slib_test_char=!words2items $slib_test_char |
| 58 | slib_pb=!listintersect -,_ and $slib_test_char |
||
| 59 | !if $slib_pb!=$empty |
||
| 60 | slib_test_char=!listcomplement $slib_test_char in $slib_alphabet |
||
| 61 | slib_test_char_cnt=!itemcnt $slib_test_char |
||
| 62 | !if $slib_test_char_cnt >=1 |
||
| 63 | slib_word=!replace internal $(slib_pb[1]) by $(slib_test_char[1]) in $slib_word |
||
| 64 | !if $slib_test_char_cnt >=2 and $(slib_pb[2]) notsametext |
||
| 65 | slib_word=!replace internal $(slib_pb[2]) by $(slib_test_char[2]) in $slib_word |
||
| 66 | !endif |
||
| 7692 | bpr | 67 | !endif |
| 4425 | bpr | 68 | !endif |
| 7692 | bpr | 69 | |
| 3398 | bpr | 70 | !set slib_file=!randint 1000 |
| 71 | !set slib_file=cw_$wims_nowseconds$slib_file |
||
| 72 | |||
| 73 | !readproc oef/togetfile.proc $slib_file new\ |
||
| 74 | $slib_word |
||
| 75 | |||
| 76 | !set sess=!replace internal . by , in $session |
||
| 77 | !set slib_file=$wims_home/sessions/$(sess[1])/getfile/$slib_file |
||
| 78 | slib_cw=!exec $slib_crossword $slib_file |
||
| 79 | |||
| 80 | !!!cleanup |
||
| 81 | slib_test=0 |
||
| 82 | slib_i=1 |
||
| 83 | slib_cw=!replace internal $ $ by $\ |
||
| 84 | $ in $slib_cw |
||
| 85 | |||
| 3818 | bpr | 86 | !for slib_u=1 to $slib_word_cnt |
| 87 | slib_line=!line $slib_u of $slib_cw |
||
| 88 | slib_line=!nonempty items $slib_line |
||
| 89 | !if $slib_line!=$empty |
||
| 90 | !goto continue1 |
||
| 91 | !endif |
||
| 7692 | bpr | 92 | !next |
| 3398 | bpr | 93 | |
| 7692 | bpr | 94 | :continue1 |
| 3818 | bpr | 95 | slib_cw=!line $slib_u to -1 of $slib_cw |
| 3398 | bpr | 96 | |
| 97 | slib_test=0 |
||
| 98 | slib_i=1 |
||
| 99 | |||
| 3818 | bpr | 100 | !for slib_v=1 to $slib_word_cnt |
| 101 | slib_line=!line -$slib_v of $slib_cw |
||
| 102 | slib_line=!nonempty items $slib_line |
||
| 103 | !if $slib_line!=$empty |
||
| 104 | !goto continue2 |
||
| 105 | !endif |
||
| 7692 | bpr | 106 | !next |
| 3818 | bpr | 107 | :continue2 |
| 108 | |||
| 109 | slib_cw=!line 1 to -$slib_u of $slib_cw |
||
| 110 | |||
| 111 | !for slib_v=1 to $slib_word_cnt |
||
| 112 | slib_line=!column $slib_v of $slib_cw |
||
| 113 | slib_line=!nonempty items $slib_line |
||
| 114 | !if $slib_line!=$empty |
||
| 115 | !goto continue3 |
||
| 116 | !endif |
||
| 7692 | bpr | 117 | !next |
| 3818 | bpr | 118 | :continue3 |
| 119 | slib_cw=!column $slib_v to -1 of $slib_cw |
||
| 120 | !for slib_v=1 to $slib_word_cnt |
||
| 121 | slib_line=!column -$slib_v of $slib_cw |
||
| 122 | slib_line=!nonempty items $slib_line |
||
| 123 | !if $slib_line!=$empty |
||
| 124 | !goto continue4 |
||
| 125 | !endif |
||
| 7692 | bpr | 126 | !next |
| 3818 | bpr | 127 | :continue4 |
| 128 | slib_cw=!column 1 to -$slib_v of $slib_cw |
||
| 129 | |||
| 130 | |||
| 3398 | bpr | 131 | !if $slib_number_test=1 |
| 132 | !for slib_c=0 to 9 |
||
| 133 | slib_cw=!replace internal $(slib_alphabet[$slib_c+1]) by $slib_c in $slib_cw |
||
| 134 | !next |
||
| 135 | !endif |
||
| 136 | slib_out=!replace internal ,$ $ by , in $slib_cw |
||
| 137 | |||
| 4425 | bpr | 138 | !if $slib_pb!=$empty |
| 139 | !if $slib_test_char_cnt >=1 |
||
| 140 | slib_out=!replace internal $(slib_test_char[1]) by $(slib_pb[1]) in $slib_out |
||
| 141 | !if $slib_test_char_cnt >=2 and $(slib_pb[2]) notsametext |
||
| 142 | slib_out=!replace internal $(slib_test_char[2]) by $(slib_pb[2]) in $slib_out |
||
| 143 | !endif |
||
| 7692 | bpr | 144 | !endif |
| 4425 | bpr | 145 | !endif |
| 146 | |||
| 3398 | bpr | 147 | slib_out=[$slib_out],[$slib_def] |
| 148 | |||
| 4425 | bpr | 149 | :end |