Hello list, Attached is a prototype for a vanilla + list-abs [list-s2l]. I have leaned on the side of completeness and error reduction rather than efficiency -- there are many many ways to make this more efficient. Also, it doesn't handle delimiters yet (right now it breaks a symbol into its constituent characters, casting float symbols back to float), but I think I could figure out how to do it.
Neither this nor [list-l2s] handles % appropriately... I'd appreciate any feedback. Matt
#N canvas 443 63 631 589 10; #X obj 100 24 inlet; #X obj 161 534 outlet; #X obj 72 401 sel s; #X obj 155 209 makefilename %%.%ds; #X msg 155 232 set \$1; #X obj 159 95 s \$0-mainsym; #X obj 99 373 r \$0-mainsym; #X obj 182 440 list prepend; #X obj 161 506 list; #X obj 286 440 t a; #X obj 60 130 until; #X obj 147 181 + 1; #X obj 61 240 symbol; #X obj 119 181 f 1; #X obj 72 213 r \$0-mainsym; #X obj 100 78 t b b s; #X msg 134 158 1; #X obj 155 257 makefilename; #X obj 61 154 t b b; #X obj 182 334 list-lastx 2; #X msg 206 308 symbol; #X obj 155 300 t a a; #X obj 72 425 t b b; #X obj 99 450 s \$0-stop; #X obj 33 79 r \$0-stop; #X obj 251 411 r \$0-init; #X obj 206 284 r \$0-init; #X obj 146 129 s \$0-init; #X obj 100 47 route symbol; #X text 199 186 accumulate first n characters of symbol; #N canvas 580 22 514 754 \$0-find-next-char 0; #X obj 36 25 inlet; #X obj 109 716 outlet; #X obj 36 567 sel s; #X obj 36 189 until; #X obj 36 372 makefilename %c; #X msg 36 164 256; #X obj 36 220 f 0; #X obj 70 220 + 1; #X msg 88 189 0; #X obj 36 245 sel 123 125; #X obj 36 508 pack s s; #X obj 36 536 list-l2s; #X obj 36 460 symbol; #X obj 36 406 t b s; #X obj 109 675 symbol; #X obj 36 50 t b a b; #X obj 55 80 unpack s s; #X obj 55 132 s \$0-test; #X obj 112 106 s \$0-current; #X obj 96 550 r \$0-test; #X obj 107 443 r \$0-current; #N canvas 0 22 450 300 %0-float? 0; #X obj 133 91 inlet; #X obj 133 202 outlet; #X obj 222 201 outlet; #X obj 178 141 moses 58; #X obj 133 118 moses 48; #X connect 0 0 4 0; #X connect 3 0 2 0; #X connect 3 1 1 0; #X connect 4 0 1 0; #X connect 4 1 3 0; #X restore 99 267 pd %0-float?; #X obj 108 639 spigot; #X obj 168 641 spigot; #X obj 199 682 float; #X msg 227 342 1; #X obj 231 543 r \$0-spigot; #X obj 227 370 s \$0-spigot; #X obj 181 580 == 0; #X obj 36 284 t f b; #X msg 80 301 0; #X obj 168 325 t f f b; #X obj 227 658 - 48; #X obj 80 323 s \$0-spigot; #X text 99 525 test for match; #X text 274 658 <- floats instead of symbols; #X text 81 417 previous match string plus test ascii value; #X text 132 178 <-- iterate through all ascii values \, but don't make finding a match a condition for stopping the loop - we could make this more efficient by not testing all values \, and by making a match be a condition for stopping the loop.; #X connect 0 0 15 0; #X connect 2 0 22 0; #X connect 2 0 23 0; #X connect 3 0 6 0; #X connect 4 0 13 0; #X connect 5 0 3 0; #X connect 6 0 7 0; #X connect 6 0 9 0; #X connect 7 0 6 1; #X connect 8 0 6 1; #X connect 9 2 21 0; #X connect 10 0 11 0; #X connect 11 0 2 0; #X connect 12 0 10 0; #X connect 13 0 12 0; #X connect 13 1 10 1; #X connect 13 1 14 1; #X connect 14 0 1 0; #X connect 15 0 5 0; #X connect 15 1 16 0; #X connect 15 2 8 0; #X connect 16 0 17 0; #X connect 16 1 18 0; #X connect 19 0 2 1; #X connect 20 0 12 1; #X connect 21 0 29 0; #X connect 21 1 31 0; #X connect 22 0 14 0; #X connect 23 0 24 0; #X connect 24 0 1 0; #X connect 25 0 27 0; #X connect 26 0 23 1; #X connect 26 0 28 0; #X connect 28 0 22 1; #X connect 29 0 4 0; #X connect 29 1 30 0; #X connect 30 0 33 0; #X connect 31 0 4 0; #X connect 31 1 32 0; #X connect 31 2 25 0; #X connect 32 0 24 1; #X restore 182 374 pd \$0-find-next-char; #X text 313 377 find next character; #X text 267 331 compare last two chunks to look for the next character \; init with a blank symbol; #X text 33 468 stop when we've found all characters; #X connect 0 0 28 0; #X connect 2 0 22 0; #X connect 3 0 4 0; #X connect 4 0 17 0; #X connect 6 0 2 1; #X connect 7 0 8 1; #X connect 7 0 9 0; #X connect 8 0 1 0; #X connect 9 0 7 1; #X connect 10 0 18 0; #X connect 11 0 13 1; #X connect 12 0 17 0; #X connect 13 0 11 0; #X connect 13 0 3 0; #X connect 14 0 12 1; #X connect 15 0 10 0; #X connect 15 1 16 0; #X connect 15 1 27 0; #X connect 15 2 5 0; #X connect 16 0 13 1; #X connect 17 0 21 0; #X connect 18 0 12 0; #X connect 18 1 13 0; #X connect 19 0 30 0; #X connect 20 0 19 0; #X connect 21 0 2 0; #X connect 21 1 19 0; #X connect 22 0 8 0; #X connect 22 1 23 0; #X connect 24 0 10 1; #X connect 25 0 7 1; #X connect 26 0 20 0; #X connect 28 0 15 0; #X connect 30 0 7 0;
#N canvas 22 119 674 278 10; #X obj 62 168 print; #X obj 259 125 list-s2l; #X obj 259 185 print; #X msg 259 71 symbol 1234567890abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx...@#$&*()_+~`./?><[]| ; #X obj 332 142 unpack 0 0 0 0 0 0 0 0 0 0 s s; #X floatatom 332 204 5 0 0 0 - - -; #X floatatom 348 180 5 0 0 0 - - -; #X symbolatom 492 207 10 0 0 0 - - -; #X symbolatom 509 181 10 0 0 0 - - -; #X msg 62 64 symbol split-the-atom; #X msg 78 89 symbol VanillaRulzw007; #X text 373 123 floats and symbols should come out right; #X text 71 27 no delimiters yet; #X text 52 239 neither this nor [list-l2s] handles % appropriately ; #X obj 62 123 list-s2l; #X connect 1 0 2 0; #X connect 1 0 4 0; #X connect 3 0 1 0; #X connect 4 0 5 0; #X connect 4 1 6 0; #X connect 4 10 7 0; #X connect 4 11 8 0; #X connect 9 0 14 0; #X connect 10 0 14 0; #X connect 14 0 0 0;
_______________________________________________ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list