Attribute references
Aaron VonderHaar
gruen0aermel at gmail.com
Sun Jan 9 14:49:19 EST 2005
I was thinking about this a while ago, and my idea was, why not
automatically put an id on every header? For example,
===
## The Lousiana Purchase
Napolean was, unquestionably, a brilliant military strategist, but he
was not a very good real estate manager.
===
(nothing has been added to the syntax)
would produce
===
<h2 id="the_louisiana_purchase">The Louisiana Purchase</h2>
<p>Napolean was, unquestionably, a brilliant military strategist, but
he was not a very good real estate manager.</p>
===
using some hopefully simple mechanism of convert-to-lowercase,
remove-symbols, replace-spaces to generate the id.
That is, /every/ header would automaticaly have an id.
A big advantage is that not only do you get id's in your documents,
you also get id's in /other/ people's HTML, ripe for linking.
Anyways, just a though.
--Aaron VonderHaar
On Sun, 9 Jan 2005 13:19:39 -0500, John Gruber <gruber at fedora.net> wrote:
> Here's an idea that struck me yesterday while out for a walk. (I
> should take more walks.)
>
> People, including me, want the ability to assign classes and id's to
> block elements in Markdown. I.e. it'd be nice if you could somehow
> assign id's to headers in long documents, so you can create inline
> #anchors.
>
> But I kept thinking that adding support for two new attributes --
> `class` and `id` -- had the potential to junk up the syntax. Plus,
> what about other attributes? What about `style`?
>
> So I took a step backward, and realized the better solution would be
> a single syntax for applying tag attributes. Imagine this:
>
> ## The Lousiana Purchase {lp}
>
> Napolean was, unquestionably, a brilliant military strategist, but
> he was not a very good real estate manager.
>
> {lp}: id="louisiana-purchase" class="h2-section-start"
>
> Which would generate:
>
> <h2 id="louisiana-purchase" class="h2-section-start">
> The Louisiana Purchase</h2>
>
> <p>Napolean was, unquestionably, a brilliant military strategist, but
> he was not a very good real estate manager.</p>
>
> The similarity to link references is, hopefully, obvious. I'm
> thinking there would *only* be this reference-style syntax, with no
> provision for assigning tag attributes inline in the article text
> itself. (If you want to do that, just use real HTML tags.)
>
> One advantage of this is that for something like classes, you can
> define one class attribute defintion, and reuse it on as many
> elements as you need.
>
> One disadvantage is that you could do the same thing with id's,
> which of course would produce invalid HTML if the same `id` value is
> used on more than one element per page. I think we'll just have to
> trust the user to know what they're doing here -- if you don't know
> the rules of HTML, it's unlikely you'd ever use this anyway.
>
> The only thing I'm not sure about is what the rules should be for
> how these attribute references are assigned. For headers, I'm
> imagining they would be assigned by putting them at the end of the
> header text:
>
> ## Like This {foo}
>
> Or Like This {foo}
> -------------------
>
> Although I'm not sure what to do about #-style headers that use
> closing #'s. I guess we could support both:
>
> ## This {foo} ##
>
> ## That ## {foo}
>
> Assigning to normal paragraphs should be easy, too. Just stick the
> `{...}` at the end of the paragraph.
>
> But, how would one assign attributes to an entire list? Not just to
> individual items in the list, but the `<ol>` or `<ul>` tags?
>
> Or to a code block or blockquote?
>
> The best I can think of for elements such as these is that the
> `{...}` could come on a line by itself after the element. (Or maybe
> before?)
>
> So to assign an attribute reference to a list:
>
> * This
> * That
> * The other
>
> {foo}
>
> Now back to regular text.
>
> Comments/suggestions welcome.
>
> -J.G.
More information about the Markdown-Discuss
mailing list