[OpenSCAD] Digging into search( )

runsun runsun at gmail.com
Sun Apr 19 15:37:13 EDT 2015


Hi Michael, thx for your quick reply. It reveals to me that, even after I
spent a lot of effort doing relatively extensive tests trying to understand
how to use search(), I still miss something:
   
   (1) search( "abc","abcdabcd" )= [0, 1, 2] 
   (2) search( ["a","b","c"],"abcdabcd" ) = [[], [], []]

   The 1st will match individual "a","b","c" to ANY CHARS in "abcdabcd"
   but the 2nd will match the entire "abcdabcd". 

That is, *given a whole string will match partial string, but given a list
of partial strings will match the whole string*. This already complicated
enough. 

I am pretty sure that it already pass the boundary of my limited brain
power. But that's not where the complication stops. 

   (3) search( ["a","bc","abcdabcd"],"abcdabcd" ) = want: [0] got: [[], [],
[]]

Didn't we say " If match_value is a vector of strings, search will look for
exact string matches" ???

Where is the exact string match of the 3rd item, "abcdabcd" ?

   (4) And another one:

      data9= [ ["cat", 1], ["b", 2], ["c", 3], ["dog", 4] 
                , ["a", 5], ["b", 6], ["c", 7], ["d", 8] 
                , ["e", 9], ["apple", 10], ["a", 11] ] 

      search( "act", data9, 0 ) 
      |   want:
      |   [[0, 4, 9, 10], [0, 2, 6], [0]]
      |   got:
      |   [[4, 9, 10], [0, 2, 6], []]
    
As we mentioned, "act" is treated as vector of chars, and iterate over. It 
means, "a" and "t"
should have found a match in ["cat",1], but they don't.  

   (5) Another example:

   search( "ab",[["ab",1],["bc",2],["cd",3]], 0 )
   |  want:
   |  [[0], [0, 1]]
   |  got:
   |  [[0], [1]]
   search( "bc",[["ab",1],["bc",2],["cd",3]], 0 )
   |  want:
   |  [[0, 1], [1, 2]]
   |  got:
   |  [[1], [2]]
 
It seems to me that, other than the already-complicated rule: "*given a
whole string will match partial string, but given a list of partial strings
will match the whole string*", in come cases it matches an item of a list of
strings to the *BEGINNING of a whole string*.  

Up to this point, I am too tired trying to figure out yet another rule. 

You mentioned : " I suspect you may be reacting to the change to remove the
Warnings?? "

Well, in fact, I haven't even started covering it yet. In the 2nd argument,
/string_or_vectors/, I only covered string and "list of lists", [ ["abc",1],
["def",2]...]. I haven't even covered my real concern : a flat list: [
"abc",1, "def",2... ], where my original "request of suppressing warning"
lies on. 

Besides, I am using a nightly version in which the warning that bothered me
in the first place has already been fixed. 



-----

$  Runsun Pan, PhD 

$ -- OpenScad_DocTest: doc and unit test ( Github , Thingiverse  ) 

$ -- hash parameter model: here , here 

$ -- Linux Mint 17.1 Rebecca x64  + OpenSCAD 2015.03.15/2015.04.01.nightly 




--
View this message in context: http://forum.openscad.org/Digging-into-search-tp12421p12432.html
Sent from the OpenSCAD mailing list archive at Nabble.com.




More information about the Discuss mailing list