- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Tue, 10 May 2011 09:38:28 -0700
- To: Christoph Päper <christoph.paeper@crissov.de>
- Cc: W3C style mailing list <www-style@w3.org>
On Tue, May 10, 2011 at 5:02 AM, Christoph Päper
<christoph.paeper@crissov.de> wrote:
> Eduard Pascual:
>> On Mon, May 9, 2011 at 7:44 PM, Christoph Päper <christoph.paeper@crissov.de> wrote:
>>> 2. To support lean, non-verbose markup (e.g. Markdown, e-mail and wiki syntaxes).
>>
>> Nothing prevents CSS from working on other markup. All you need is a parser for whatever document language you want to use that builds something resembling a tree structure from it (the DOM), and then you can go and render that DOM applying CSS rules.
>
> Maybe, but selectors are ugly then, even for paired markers:
>
> \_ {text-decoration: underline;}
> \=\= {font: bold large sans-serif;}
>
> Some markers may be ambiguous, because they can be used paired inline or line-initial:
>
> \* {font-weight: bold;}
> \n\* {display: list-item;}
>
> Inline plain text pseudo stylings are also not always applied in a start-tag / close-tag manner:
>
> _This text is underlined_, this text is not, but _this_one_is_.
>
> == This may be a headline ==
> == This is a headline, elsewhere
> Yet another headline format
> ===========================
Ah, you're somewhat confused here. Like I said, CSS doesn't care what
the markup language is, all it cares is that the markup language
somehow converts itself into a CSS element-tree, which it uses for
selectors, inheritance, and eventual transformation into a box-tree.
(I'll assume for the moment that the language in your examples is
Markdown.) It would indeed be inconvenient for authors if Markdown
created nodes in its element-tree with tagnames that need to be
escaped. There's no need for it to do so, though. It can make up
appropriate names on its own; since it maps to HTML, it might be
convenient to just give the same tagnames as the HTML equivalents.
That is, your examples could create the exact same CSS element-tree as
the following HTML would:
<p><u>This text is underlined</u>, this text is not, but <u>this one is</u>.</p>
<h2>This may be a headline</h2>
<h2>This is a headline, elsewhere</h2>
<h1>Yet another headline format</h1>
So, if a UA natively understood markdown, you could style all the
underlines, for example, by just using a "u" selector.
>> Once you make a parser, adding the markup to do the highlighting through CSS is a piece of cake anyway. As a matter of fact, there are many libraries out there that do exactly this (either on the server or via JS). What exactly would you want to be handled by CSS?
>
> The styling of the highlighted source code.
>
> foo
>
> ::keyword {color: blue}
>
> instead of
>
> <span class="keyword">foo</span>
>
> .keyword {color: blue}
If you have a UA that natively understands the source language, it can
do this properly by exposing keywords as a "keyword" element, so you
could just do:
keyword { color: blue; }
Using a pseudo-element instead is needlessly complex and fragile.
If you don't have a UA that natively understands the source language,
then you can't create regular elements *or* pseudo-elements
automatically anyway. You're stuck with parsing it yourself and
transforming it into a source language that the UA does understand
(like HTML).
>> As a matter of fact, for the second scenario CSS already does what it does (which is just being generic enough).
>> What's left (a parser to build a DOM for the unusual language) is entirely out of CSS' scope.
>
> If ‘/’ instead of ‘<em>’ starts an emphasized inline portion of text, it would be easier for authors to write
>
> :emphasis {font-style: italic;}
>
> than
>
> \/ {font-style: italic;}
It's even easier to just use "em" or "emphasis" rather than ":emphasis".
> if that is the correct way of escaping anyway. How would the selector for ‘[[Foo]]’ or ‘{Bar}’ look like?
I think [[Foo]] creates a link to an internal page named "Foo" in
wikitext, right? If so, then a parser could make an element named
"link" or "a" or whatever. I dunno what "{Bar}" is, but it would do
something similar.
~TJ
Received on Tuesday, 10 May 2011 16:39:15 UTC