Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[REBOL] Re: Find on a nested structure

From: ryanc:iesco-dms at: 11-Apr-2001 10:24

This should work, although it could be alot better. --Ryan ;;;;;;;;;;;;;;;;;;;;;;;; MyStructure: [ ["US" ["USA" "English" "Spanish"] ] ["DE" ["Germany" "German"] ] ["NZ" ["New Zealand" "English"] ] ] OtherStructure: [ words [ a b c ] numbers [1 2 3 4 5] blocks-of-strings [ [ "A" "B" "C" "D" "E" ] [ "F" "G" "H" ] ["I"] ] deep-path [ etc [ profile [ %/etc/profile ] passwd [%/etc/profile] ] usr [ bin [ X11 [ %X ] ] ] ] ] deep-find: func [ "Searches for a particular element in a block, recursing sub-blocks." haystack [block!] "Block to search." needle [any-type!] "Element to search for." ][ foreach hay haystack [ if hay = needle [ return true] ; Ouch! if all [ block? hay deep-find hay needle ] [ return true] ; More haystack : ( ] return false ] confirm join "Find US (TRUE): " deep-find MyStructure "US" confirm join "Find AU (FALSE): " deep-find MyStructure "AU" confirm join "Find %X (TRUE): " deep-find OtherStructure %X confirm join "Find %command.com (FALSE: " deep-find OtherStructure %command.com ;;;;;;;;;;;;;;;;;;;;;;;; [Sanghabum--aol--com] wrote:
> Can you guys help me on this one? > > I've got a structure like this: > > MyStructure: [ [key1 data1] [key2 data2] [key3 data3] ... ] > > where each Key is a single string, but the Data is another block. > > Example: > > MyStructure: [ > ["US" ["USA" "English" "Spanish"] ] > ["DE" ["Germany" "German"] ] > ["NZ" ["New Zealand" "English"] ] > ] > > I can't find any way to use Find to find me a given key: > > >> find MyStructure "US" > == none > >> find MyStructure ["US"] > == none > > Is there something I can do with Find? > > I don't want to change the structure to > > MyStructure: [ key1 [data1] key2 [data2] key3 [data3] ... ] > > which is Find-able, but isn't SORT-able,--or at least not by me. > > Thanks, > Colin. > -- > To unsubscribe from this list, please send an email to > [rebol-request--rebol--com] with "unsubscribe" in the > subject, without the quotes.
-- Ryan Cole Programmer Analyst www.iesco-dms.com 707-468-5400 I am enough of an artist to draw freely upon my imagination. Imagination is more important than knowledge. Knowledge is limited. Imagination encircles the world. -Einstein