Rev 7692 | 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 |
||
8070 | bpr | 56 | slib_test_char=!text expand $slib_test_char using 10 |
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 |
||
8070 | bpr | 72 | !if $slib_word issametext $empty |
73 | slib_out= |
||
74 | !exit |
||
75 | !endif |
||
3398 | bpr | 76 | !readproc oef/togetfile.proc $slib_file new\ |
77 | $slib_word |
||
78 | |||
79 | !set sess=!replace internal . by , in $session |
||
80 | !set slib_file=$wims_home/sessions/$(sess[1])/getfile/$slib_file |
||
81 | slib_cw=!exec $slib_crossword $slib_file |
||
82 | |||
83 | !!!cleanup |
||
84 | slib_test=0 |
||
85 | slib_i=1 |
||
86 | slib_cw=!replace internal $ $ by $\ |
||
87 | $ in $slib_cw |
||
88 | |||
3818 | bpr | 89 | !for slib_u=1 to $slib_word_cnt |
90 | slib_line=!line $slib_u of $slib_cw |
||
91 | slib_line=!nonempty items $slib_line |
||
92 | !if $slib_line!=$empty |
||
93 | !goto continue1 |
||
94 | !endif |
||
7692 | bpr | 95 | !next |
3398 | bpr | 96 | |
7692 | bpr | 97 | :continue1 |
3818 | bpr | 98 | slib_cw=!line $slib_u to -1 of $slib_cw |
3398 | bpr | 99 | |
100 | slib_test=0 |
||
101 | slib_i=1 |
||
102 | |||
3818 | bpr | 103 | !for slib_v=1 to $slib_word_cnt |
104 | slib_line=!line -$slib_v of $slib_cw |
||
105 | slib_line=!nonempty items $slib_line |
||
106 | !if $slib_line!=$empty |
||
107 | !goto continue2 |
||
108 | !endif |
||
7692 | bpr | 109 | !next |
3818 | bpr | 110 | :continue2 |
111 | |||
112 | slib_cw=!line 1 to -$slib_u of $slib_cw |
||
113 | |||
114 | !for slib_v=1 to $slib_word_cnt |
||
115 | slib_line=!column $slib_v of $slib_cw |
||
116 | slib_line=!nonempty items $slib_line |
||
117 | !if $slib_line!=$empty |
||
118 | !goto continue3 |
||
119 | !endif |
||
7692 | bpr | 120 | !next |
3818 | bpr | 121 | :continue3 |
122 | slib_cw=!column $slib_v to -1 of $slib_cw |
||
123 | !for slib_v=1 to $slib_word_cnt |
||
124 | slib_line=!column -$slib_v of $slib_cw |
||
125 | slib_line=!nonempty items $slib_line |
||
126 | !if $slib_line!=$empty |
||
127 | !goto continue4 |
||
128 | !endif |
||
7692 | bpr | 129 | !next |
3818 | bpr | 130 | :continue4 |
131 | slib_cw=!column 1 to -$slib_v of $slib_cw |
||
132 | |||
133 | |||
3398 | bpr | 134 | !if $slib_number_test=1 |
135 | !for slib_c=0 to 9 |
||
136 | slib_cw=!replace internal $(slib_alphabet[$slib_c+1]) by $slib_c in $slib_cw |
||
137 | !next |
||
138 | !endif |
||
139 | slib_out=!replace internal ,$ $ by , in $slib_cw |
||
140 | |||
4425 | bpr | 141 | !if $slib_pb!=$empty |
142 | !if $slib_test_char_cnt >=1 |
||
143 | slib_out=!replace internal $(slib_test_char[1]) by $(slib_pb[1]) in $slib_out |
||
144 | !if $slib_test_char_cnt >=2 and $(slib_pb[2]) notsametext |
||
145 | slib_out=!replace internal $(slib_test_char[2]) by $(slib_pb[2]) in $slib_out |
||
146 | !endif |
||
7692 | bpr | 147 | !endif |
4425 | bpr | 148 | !endif |
149 | |||
3398 | bpr | 150 | slib_out=[$slib_out],[$slib_def] |
151 | |||
4425 | bpr | 152 | :end |