> On Jul 9, 2014, at 3:07 PM, Michel Fortin <[email protected]> wrote:
> 
> I sure wish things would be simpler. But as things are now, I have a hard 
> time identifying what "flavor" could mean. Should "Markdown.pl-1.0.1" be a 
> flavor on its own?

Perhaps it would be better to have *two* optional fields:

- A "processor" field, as in `processor="Markdown.pl-1.0.1"` or  
`processor="Pandoc-1.12.4.2-nostrict", which indicates that the sender was 
using (that program) to view the output and was satisfied with it. This could 
be included whenever known, and hopefully *not* relied upon by the recipient, 
but could provide useful clues in some cases where the recipient *has* to 
decide how to interpret something.

- A "flavor" field consisting of zero or more alphanumeric tokens, separated by 
"+" or "," or some such, declaring well-understood deviations from, or 
extensions to, the original standard. Not as a completely exhaustive list (you 
don't have to be able to indicate that your processor has, say, special syntax 
for animated gif backgrounds if no one else can use that anyway), but simply to 
promote better interoperability, to be interpreted as "the text contained 
herein supports basic markdown, plus *at least* X and Y and Z capabilities". 
Include some useful things like:

    - "nofill" (hard returns should be obeyed rather than joining lines - this 
would clarify that "two github flavors" situation),
    - "tables" (supports some agreed-upon "least common denominator" table 
syntax),
    - "footnotes" (similar but for footnotes),
    - "fencedcodeblocks" (you get the idea),
    - "titleblock" (text lines before first blank line are some sort of 
metadata and shouldn't be displayed to casual viewers),
    - "restrictunderscores" (mid-word underscores are not to be interpreted as 
starting/ending emphasized or strong text)

The idea being, merely having the "text/markdown" content type would not 
guarantee anything beyond "well, it's *some* sort of markdown flavored text", 
while specifying one or more of the attributes in the "flavor" field would 
indicate "yes, you can assume that if something looks like an X, it *is* an X" 
(where X is something from the list above). It doesn't necessarily mean you 
*will* find, say, a table, in the text, merely that if you see something that 
looks like a table, it likely is.

This way, senders can give a series of hints to make their text more clear to 
parse, using the "flavor" attribute, and can also declare what processor they 
were using to view/validate things on their end, in case the recipient feels 
they simply must know precisely how to interpret the text (at which point it's 
up to them to decide what, if any, conversion or special handling is 
necessary). And a recipient wouldn't need to consult an exhaustive list of 
processors, but simply look at the flavors attribute to see if it recognizes 
anything there as a useful hint (and render everything else naively).

So, you might have:  content-type="text/markdown" flavor="tables+titleblock" 
processor="floobity-1.2.3"

We'd need an agreed-upon list of, "ingredients", to put in the "flavors" field, 
but, again, you wouldn't want to exhaustively list every variant of every 
extension that any markdown-ish processor has ever come up with, only perhaps a 
dozen cases to cover the most common extensions (if you need to be more 
exacting, go consult the processor field and take matters into your own hands).

Does this make sense to anyone else? (I probably should have gone to sleep a 
long time ago.)

Cheers,
Carl Jacobsen
_______________________________________________
Markdown-Discuss mailing list
[email protected]
http://six.pairlist.net/mailman/listinfo/markdown-discuss

Reply via email to