views:

179

answers:

3

I'm considering supporting both Textile and Markdown on a current project. I would prefer not forcing users to choose one or the other. Is there a way to auto-detect which the user is using? How would you go about this? I'd like to find / develop both a JavaScript and a PHP solution so I can provide live previews as well as process the user input on the server-side.

A: 

Auto-detection, I don't know, both are based on "natural" typing.
Perhaps you can ask the user to choose a format, with a pair of radio-buttons or something.

PhiLho
+2  A: 

This really shouldn't be that hard. Markdown does not support the following syntax;

h1. Header

p. Paragraph

... so you simply scan for that to check if it is textile. Very simple regular expression to get you started (scans for lines beginning with hX. or p.) in PHP code:

if (preg_match('/^(p|h[1-6])\. /m', $subject)) 
{
    // Successful match
} else 
{
    // Match attempt failed
}

You will probably be able to write your own regex to scan for Markdown.

Vegard Larsen
+5  A: 

Consider that users might only use one specific syntax element in a posting, so you'd have to check for everything. Looking for "h1." obviously only works if the user uses exactly that element.

It's pretty easy with things like headers, but consider that markdown formats *this* as <em>this</em> and Textile will convert that to <strong>this</strong> instead. So you'd have ambiguous syntax constructs that would yield different results in each language.

I'd suggest going with a user choice. Try to find out what syntax is generally preferred by your users (or you), offer an "use x instead of y" checkbox for those who want the other choice.

_Lasar