[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

[MacPerl] Glue question



In gluenotes.pod, I asked for an example of how this canonical AppleScript
example might be rendered in Perl:

    the first row in which the First Name column equals 
        "John" and the Last Name column equals "Chapman" 
        in the table "MyAddresses" of the database "SurfDB"

Well, this is what I have come up with:

    @row = $s->get($s->obj(
        row => 1, row => whose(AND =>
            [column => 'First Name', equals => 'John'],
            [column => 'Last Name', equals => 'Chapman']),
        table => 'MyAddresses', database => 'SurfDB'));

I have this working now:

    @row = $f->get($f->obj(
        record => 1, record => whose(AND =>
            [cell => 'Paid To', equals => 'The Deli'],
            [cell => 'Receipt For', contains => 'Sonia Long']),
        database => 'Cash Receipts'));

Basically, the tests work like this:

  comparison record:
    (PROPERTY, OPERATOR, VALUE), or
    (CLASS => VALUE, OPERATOR, VALUE)

    PROPERTY and CLASS => VALUE work like prop() and obj().  The PROPERTY
      form is the same as C<property => VALUE>.
    OPERATOR is contains, equals, begins_with, ends_with, l_t, l_e, g_t, or g_e
    VALUE is the value to compare to


  logical record:  (OPERATOR, LIST)

    OPERATOR is AND, OR, or NOT
    LIST is any number of other logical records or comparison records

So you can do:

  $f->get( $f->obj(name => windows => whose(
    AND => [name => contains => 'e'], [name => ends_with => 's'],
    [NOT => [popup => equals => glueTrue]]
  )));


Does this sound good?  Sound bad?  Any other thoughts of any kind?
(Feedback is good.)

--
Chris Nandor          mailto:pudge@pobox.com         http://pudge.net/
%PGPKey = ('B76E72AD', [1024, '0824090B CE73CA10  1FF77F13 8180B6B6'])

===== Want to unsubscribe from this list?
===== Send mail with body "unsubscribe" to macperl-request@macperl.org