<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
</head>
<body><div style="font-family: sans-serif;"><div class="markdown" style="white-space: normal;">
<p dir="auto">On 10 Oct 2022, at 8:23, Mike Brasch wrote:</p>
<blockquote style="margin: 0 0 5px; padding-left: 5px; border-left: 2px solid #777777; color: #777777;">
<p dir="auto">I don't really understand what the above query does. I think I had copied it from the mailing list here a long time ago. Is this a known query language? Can I read about it somewhere? And how do I know what the possible queryable attributes are?</p>
</blockquote>
<p dir="auto">There is some documentation buried in the builtin help under the “Hidden Preferences” section. If you search for “format string” in that section, under “Other”, and follow the link, you’ll get this (and only this):</p>
<pre style="margin-left: 15px; margin-right: 15px; padding: 5px; background-color: #F7F7F7; border-radius: 5px 5px 5px 5px; overflow-x: auto; max-width: 90vw;"><code style="margin: 0 0; border-radius: 3px; background-color: #F7F7F7; padding: 0px;">Format String Syntax

${«var»:?«if»:«else»}
${«var»:+«if»}
${«var»:-«else»}
${«var»:«else»}
${«var»/«regexp»/«format»/«options»}
${«var»:[/upcase][/downcase][/capitalize][/asciify]}
</code></pre>
<p dir="auto">In case it’s not instantly obvious :), this syntax allows the construction of nested conditionals using regular expression matching on various elements of a message. AFAIK, this is proprietary to MailMate, except for the regular expressions (regexp) part. It looks like a typical yacc-style grammar to me, if that helps in any way.</p>
<p dir="auto">The “var” will be one of the elements of a message that MailMate automatically parses. If you look at all the options you have for the first component of a Conditions rule for a folder (e.g. Date-Received, From • Address, etc.), those are all accessible as $variables in a format string. You can access the complete element, e.g. “subject”, or some very particular sub-elements, e.g. “subject.blob”. In this case, ${subject.blob} captures just the little “[MlMt]” marker in the subject for this mailing list, which is a common feature of many mailing list systems.</p>
<p dir="auto">Breaking down your original format string, I get this:</p>
<pre style="margin-left: 15px; margin-right: 15px; padding: 5px; background-color: #F7F7F7; border-radius: 5px 5px 5px 5px; overflow-x: auto; max-width: 90vw;"><code style="margin: 0 0; border-radius: 3px; background-color: #F7F7F7; padding: 0px;">— IF the subject.blob exists, e.g. “[MlMt]”
${subject.blob:?
    — Yield it capitalized
    ${subject.blob:/capitalize}:
    — ELSE IF the list-id.description exists
    ${list-id.description:?
        — …and it matches the regexp
        ${list-id.description/^[a-z]*\d.*/
            — BEGIN FORMAT
            — IF the from.name exists, yield it
            ${from.name:
                — ELSE IF the list-id.identifier.final-level exists
                ${list-id.identifier.final-level:?
                    — Yield it capitalized
                    ${list-id.identifier.final-level:/capitalize}:
                    — ELSE yield from.address
                    ${from.address}
                 }
             }
            — END FORMAT
        /}: // no options for regexp match
        — ELSE (no list-id.description) IF from.name exists
        ${from.name:
            — IF list-id.identifier.final-level exists
            ${list-id.identifier.final-level:?
                — Yield it capitalized
                ${list-id.identifier.final-level:/capitalize}:
                — ELSE yield from.address
                ${from.address}
            }
        }
    }
}
</code></pre>
<p dir="auto">Glenn P. Parker<br>
<a href="mailto:glenn.parker@comcast.net" style="color: #3983C4;">glenn.parker@comcast.net</a></p>

</div>
</div>
</body>

</html>