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

Reply via email to