- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Thu, 27 Jun 2013 12:33:44 -0700
- To: John Daggett <jdaggett@mozilla.com>
- Cc: www-style list <www-style@w3.org>
On Thu, May 30, 2013 at 11:25 AM, Tab Atkins Jr. <jackalmage@gmail.com> wrote: > Making things readable doesn't *necessarily* mean that it needs to > expose thing via nested rules, of course. In fact, slavishly > reflecting the input syntax in the OM tree is often an anti-pattern - > it's easy, but often has terrible usability. I'd be happy to explore > alternate ways of readably exposing the information. For example, it > could look something like (using pseudo-WebIDL, because I don't want > to worry too hard about the right syntax for some of this): > > interface CSSFontFeatureValuesRule { > attribute Arraylike<DOMString> familyList; /* An array of family > name strings. */ > attribute Maplike<DOMString, DOMString> swash; /* A map of feature > names -> feature values */ > attribute Maplike<DOMString, DOMString> styleset; /* Ditto */ > attribute Maplike<DOMString, DOMString> ornaments; /* Ditto */ > ... > } > > Where Arraylike<> is whatever the right way is to define an Array in > WebIDL, and Maplike<> is the same but for Maps. (I started a thread > yesterday in public-webapps about defining something for "map-like" > interfaces in webidl.) Cameron just added [MapClass] to WebIDL <http://dev.w3.org/2006/webapi/WebIDL/#MapClass>. In light of this, the IDL would look something like: interface CSSFontFeatureValuesRule { attribute sequence<DOMString> familyList; attribute CSSFontFeatureValuesMap annotation; attribute CSSFontFeatureValuesMap characterVariant; attribute CSSFontFeatureValuesMap ornaments; attribute CSSFontFeatureValuesMap stylistic; attribute CSSFontFeatureValuesMap styleset; attribute CSSFontFeatureValuesMap swash; } [MapClass(DOMString, sequence<Number>)] interface CSSFontFeatureValuesMap { CSSFontFeatureValuesMap set(DOMString featureName, sequence<Number> value); boolean delete(DOMString featureName); } Plus some prose: * Define that the map entries for each CSSFontFeatureValuesMap are the declaration names and values of the associated @foo blocks in that @font-feature-values rule. * Define that set/delete alter the set of feature names defined for the given familyList. The rest is taken care of for you by WebIDL automatically. ~TJ
Received on Thursday, 27 June 2013 19:34:35 UTC