PennController.GetTable().filterGlobal Commands

PennController.GetTable( tablename ).filter( "column" , "match" )

or PennController.GetTable( tablename ).filter( "column" , /match/ )

or PennController.GetTable( tablename ).filter( function )

Returns a filtered version of the table, containing only rows whose specified column’s value is a match.

If you use a string then the column’s value must match the text exactly. Alternatively, you can use a regular expression to test the column’s value. You can also use a function that will take each row as an argument and should return true to keep the row or false to exclude it.

You can use several filters in chain.


    PennController.GetTable( "spreadsheet.csv" )
        .filter( row => row.Item > 0 )      // 'Item' should be greater than 0, and
        .filter( "ButtonText" , /second/ )  // 'ButtonText' should contain 'second'
    row => PennController( "button trial" ,
        newButton("test button", row.ButtonText)
    .log( "Item" , row.Item       )
    .log( "Text" , row.ButtonText )

Generates only one trial from a subset of the table spreadsheet.csv: first we only consider rows where the value in the Item column is a number greater than 0 (this is practically ineffective, for both rows in spreadsheet.csv already satisfy this condition) and we further consider only rows among those rows where the value of the ButtonText column is a text containing the string second (only the second row satisfies this condition).