- From: François REMY <francois.remy.dev@outlook.com>
- Date: Sun, 20 Jul 2014 14:33:56 +0200
- To: "Sylvain Galineau" <galineau@adobe.com>, "Tab Atkins Jr." <jackalmage@gmail.com>
- Cc: "Lea Verou" <lea@verou.me>, <www-style@w3.org>
>>> I'm weakly in favor of a concat() function, but given that we already >>> have math relegated to the calc() function, I don't think I'm opposed >>> to a naked + character doing string concatenation, as it won't be >>> ambiguous. It would need to be strict about its types; that is, >>> actually requires <string> values on either side, but I think that's >>> just fine. >> >> I'll admit I'm scratching my head over this one. Concatenating strings is >> a >> fringe use case on a layout system like CSS, while adding numbers is >> something really common. Optimizing one and not the other [1] looks to be >> a >> huge prioritization mistake to me. If mathematics are not worth more than >> a >> "calc" function, I see no reason explaining string concatenation would be >> worth an inline syntax. > [Sylvain Galineau:] > I'm sorry, this isn't a good argument; that > we give the wrong priority to something is > no reason to give no priority to something > else. (Assuming there was a wrong > prioritization to begin with). Not sure if my point went through, but what I meant is not that string concatenation should not be considered, but that using the bare bone "+" symbol for it was looking odd to me considering others and more frequent use cases of the "+" symbol require a wrapping. > The decision and the design should be based > on use-cases; in the quoted IRC thread Lea > mentions using attr() in url() being useful for > things like data URIs. I agree. >[Tab Atkins:] >Math uses a number of symbols that are already used by CSS for various >things; the + sign is used to start numbers, - is used to start >numbers and in the middle of idents, / is occasionally used as a >second-level separator. * is the only character that wasn't already >taken by something, and it's used so often as a "wildcard" (such as >its current use in Selectors) that I give decent odds we use it for >*something* in a CSS value eventually. > >Thus, wrapping math in a context-indicator like calc() helps us >disambiguate all of those things. However, I don't see any reason >that + is ambiguous outside of numbers, and I don't see us using it in >directly as a CSS value either, so it's safe to use it nakedly for >strings. > >> PS: I also believe it would be a first (in CSS) that generic tokens can >> be >> combined together using a non-whitespace separator but no grouping at >> all. >> That looks strange to me. > >Correct, it would be a first. Well, it is not because we can that we should. That being said, I think you both know that I'm just trying to share my thoughts here (i.e. that I would prefer a more generic "string()" or "str()" function which would allow to concat string values and possibly other very common string operations [1] to the bare bone "+" option [2]), but that's just a FWIW, as usual. All of this is no big deal to me, I was just trying to feed the discussion ;-) François --------------------------------------------- [1] Sample: #selector { --data-uri: str(--base-uri "/" attr(data-uri)) } We could even allow substr() right from the str() function like so: str("abc" 0 1 "abc" 1 "d") == "abcd" [2] Odd-looking samples: #selector { content: "a" "b" "c" } // already valid #selector { grid-template: " a a " + " c " " b b c " } // allowed by this proposal, but really hard to read
Received on Sunday, 20 July 2014 12:33:52 UTC