Block quotes with a blank line between them get merged
Michel Fortin
michel.fortin at michelf.com
Thu Oct 19 08:43:20 EDT 2006
Le 19 oct. 2006 à 0:30, John Gruber a écrit :
>> ~~~
>> function db_like($first, $pattern) {
>> $pattern = preg_quote($pattern);
>> $pattern = preg_replace('/(?<!\\)_/', '.', $pattern);
>> $pattern = preg_replace('/(?<!\\)%/', '.*?', $pattern);
>> return preg_match('{^'.$pattern.'$}', $first);
>> }
>> ~~~
>> The code block begins with three or more consecutive tildes `~`
>> alone on a line, and ends with the same number of tildes `~`
>> alone on a line.
>
> I don't hate it, but it's not doing it for me. If you're going to
> have stuff on separate lines like that, why not just use
> `<pre><code>` and `</code></pre>`?
Using `<pre><code>` for the example above means you have to manually
escape two '<' with `<`. Luckily, there is no '&' in that code.
And you'd have to put the first line of the content on the same line
as `<pre><code>`.
> And don't forget that we'd need some sort of escape so that you
> could put a literal `~~~` line in a code block.
You don't need that for code spans do you? You don't need that
because the final marker must be the same as the one at the beginning
-- the same applies here. If you choose the number of tilde
carefully, there is no problem.
If you have many tilde-only lines of all lengths in the code block,
it'd probably be wiser to choose an intended code block instead, if
only for clarity, but I can't see that happen very often.
> I'd rather have line prefixes. I know they're harder to generate
> in textarea fields, because you have to do them by hand, but I'm
> finding it harder and harder to care about the plight of the
> textarea-field-writer.
>
> ~ function db_like($first, $pattern) {
> ~ $pattern = preg_quote($pattern);
> ~ $pattern = preg_replace('/(?<!\\)_/', '.', $pattern);
> ~ $pattern = preg_replace('/(?<!\\)%/', '.*?', $pattern);
> ~ return preg_match('{^'.$pattern.'$}', $first);
> ~ }
Personally, I don't find that aesthetically better than my proposal.
The only problem it solves is the one of two consecutive code blocks,
or a code block following a list. Other than that, it has no use; I
don't see how anyone will prefer that syntax over simple indentation,
except in the two corner cases mentioned above.
My proposal is some sort of a lazy syntax for code blocks, building
on what some people use lazily in their emails, and it has more use
than these two corner-cases. Just as you said, you don't have to use
it if you prefer the other one.
> One nice thing about '~' is that (on U.S. keyboards at least) it's
> on the same key as '`' -- so you'd use the same key for inline
> code spans as for code blocks.
Interesting. On my Canadian-French (CSA) keyboard, '~' is Option-Ç
and '`' is Option-À, two adjacent keys.
- - -
That said, we could also take a hybrid approach where there is only
one syntax for code block: indentation; but where you can use an
optional tilde '~' maker at the start of a new one when you need some
disambiguation:
Standard paragraph.
<title>My Page</title>
~ <title>
<?php echo $title ?>
</title>
* List item
* List item
~ <style>
<?php echo $stylesheet ?>
</style>
The downside of this approach is that it looks like some kind of list
item marker. But so do this:
Standard paragraph.
~ <title>My Page</title>
~ <title>
~ <?php echo $title ?>
~ </title>
* List item
* List item
~ <style>
~ <?php echo $stylesheet ?>
~ </style>
(Of course, the first tilde for the first code block is optional:
both code block syntaxes can be used there.)
Now let's compare to my approach:
Standard paragraph.
~~~
<title>My Page</title>
~~~
~~~
<title>
<?php echo $title ?>
</title>
~~~
* List item
* List item
~~~
<style>
<?php echo $stylesheet ?>
</style>
~~~
Which one do you prefer?
Michel Fortin
michel.fortin at michelf.com
http://www.michelf.com/
More information about the Markdown-Discuss
mailing list