Mandis Quotes (aka retiring """ and ''')

From: Russell Nelson (nelson_at_crynwr.com)
Date: 10/04/04


Date: 4 Oct 2004 07:45:54 -0700

Jef Raskin (namedropping) has pointed me at a neat scheme for quoting
arbitrary textual matter called "Mandis quotes". Since google is
ignorant of the phrase, I presume that Jef made it up. It is
disgustingly simple, and very Pythonesque. Here's how it works: If
you have a string that doesn't have any single quotes in it, you
surround the string by a pair of doubled single quotes. ''Like
this''. No backslash interpolation. If you want a character in
there, you put it in there (yes, I know, stand down your armies).
Clearly, then, any character except a single quote can go into one of
these strings. If you need to put a single quote in, then you put
an arbitrary string in-between the single quotes which does NOT
appear in the string. For example, "Bill's house" becomes
'x'Bill's house'x'.

More formally, a mandis quote is a pair of tokens surrounding a
completely arbitrary sequence of bytes. These tokens are comprised of
a possibly null sequence of characters preceded by and followed by a
single quote.

To save time, here's why this pre-PEP proposal sucks in decreasing
order of severity:

o Python source is typically represented, not as an arbitrary string
  of ASCII or Unicode characters, but instead as a sequence of lines
  separated by the native line terminator (e.g. CRLF, LF, or CR).

o Editors are not all up to the task of inserting arbitrary
  characters into strings (although they SHOULD).

o Email cannot withstand arbitrary strings of characters (although
  quoted-printable suffices).

o Some distinct Unicode characters are represented using the same
  glyph, so that information is lost when text gets printed (but
  that's more of a Unicode stupidism.)

Obviously, the justification for it is that it eliminates ", ', r",
r', """, and ''' from the syntax, replacing them by a single 'x' that
suffices for everything. Makes the code easier to read (only one
visual element), easier to parse, and easier to write, because you
don't need to decide which literal method to use.



Relevant Pages

  • Re: Mandis Quotes (aka retiring """ and )
    ... > surround the string by a pair of doubled single quotes. ... > an arbitrary string in-between the single quotes which does NOT ... > of ASCII or Unicode characters, but instead as a sequence of lines ...
    (comp.lang.python)
  • Re: Mandis Quotes (aka retiring """ and )
    ... >surround the string by a pair of doubled single quotes. ... > of ASCII or Unicode characters, but instead as a sequence of lines ... Quoting "arbitrary" text also involves the issue of encoding, ...
    (comp.lang.python)
  • Re: sed and variables question
    ... expanded, you need double quotes, not single quotes. ... the jumble of single characters after /$pattern/ actually does, ... of text immediatelly before a pattern; ...
    (comp.unix.shell)
  • Re: Open, Close, & Freefile
    ... statement adds characters such as quotes around string data. ... Write #fnum, "This is some text..." ... VB writes out the quotes whether a literal or in a variable. ... It is imo on the same line as using the trailing "$" on string intrinsics to ensure the character version is returned as opposed to Variant when that is what is intended, etc., ... ...
    (microsoft.public.vb.general.discussion)
  • Re: sed and variables question
    ... expanded, you need double quotes, not single quotes. ... the jumble of single characters after /$pattern/ actually does, ... of text immediatelly before a pattern; ...
    (comp.unix.shell)