Auto merge of #20619 - upsuper:properties-data, r=emilio

Have nscssproperty a method of data instances

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/20619)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2018-04-11 14:41:15 -04:00 committed by GitHub
commit 7462eda675
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 35 additions and 41 deletions

View file

@ -299,6 +299,12 @@ class Longhand(object):
return computed return computed
return "<{} as ToAnimatedValue>::AnimatedValue".format(computed) return "<{} as ToAnimatedValue>::AnimatedValue".format(computed)
def nscsspropertyid(self):
ident = self.ident
if ident == "float":
ident = "float_"
return "nsCSSPropertyID::eCSSProperty_%s" % ident
class Shorthand(object): class Shorthand(object):
def __init__(self, name, sub_properties, spec=None, servo_pref=None, gecko_pref=None, def __init__(self, name, sub_properties, spec=None, servo_pref=None, gecko_pref=None,
@ -362,6 +368,9 @@ class Shorthand(object):
def enabled_in_content(self): def enabled_in_content(self):
return self.enabled_in == "content" return self.enabled_in == "content"
def nscsspropertyid(self):
return "nsCSSPropertyID::eCSSProperty_%s" % self.ident
class Alias(object): class Alias(object):
def __init__(self, name, original): def __init__(self, name, original):
@ -388,6 +397,9 @@ class Alias(object):
def enabled_in_content(self): def enabled_in_content(self):
return self.enabled_in == "content" return self.enabled_in == "content"
def nscsspropertyid(self):
return "nsCSSPropertyID::eCSSPropertyAlias_%s" % self.camel_case
class Method(object): class Method(object):
def __init__(self, name, return_type=None, arg_types=None, is_mut=False): def __init__(self, name, return_type=None, arg_types=None, is_mut=False):
@ -460,7 +472,8 @@ class PropertiesData(object):
longhand = Longhand(self.current_style_struct, name, **kwargs) longhand = Longhand(self.current_style_struct, name, **kwargs)
self.add_prefixed_aliases(longhand) self.add_prefixed_aliases(longhand)
self.longhand_aliases += list(map(lambda x: Alias(x, longhand), longhand.alias)) longhand.alias = list(map(lambda x: Alias(x, longhand), longhand.alias))
self.longhand_aliases += longhand.alias
self.current_style_struct.longhands.append(longhand) self.current_style_struct.longhands.append(longhand)
self.longhands.append(longhand) self.longhands.append(longhand)
self.longhands_by_name[name] = longhand self.longhands_by_name[name] = longhand
@ -475,7 +488,8 @@ class PropertiesData(object):
sub_properties = [self.longhands_by_name[s] for s in sub_properties] sub_properties = [self.longhands_by_name[s] for s in sub_properties]
shorthand = Shorthand(name, sub_properties, *args, **kwargs) shorthand = Shorthand(name, sub_properties, *args, **kwargs)
self.add_prefixed_aliases(shorthand) self.add_prefixed_aliases(shorthand)
self.shorthand_aliases += list(map(lambda x: Alias(x, shorthand), shorthand.alias)) shorthand.alias = list(map(lambda x: Alias(x, shorthand), shorthand.alias))
self.shorthand_aliases += shorthand.alias
self.shorthands.append(shorthand) self.shorthands.append(shorthand)
return shorthand return shorthand

View file

@ -872,17 +872,3 @@
</%self:logical_setter_helper> </%self:logical_setter_helper>
} }
</%def> </%def>
<%def name="alias_to_nscsspropertyid(alias)">
<%
return "nsCSSPropertyID::eCSSPropertyAlias_%s" % to_camel_case(alias)
%>
</%def>
<%def name="to_nscsspropertyid(ident)">
<%
if ident == "float":
ident = "float_"
return "nsCSSPropertyID::eCSSProperty_%s" % ident
%>
</%def>

View file

@ -68,7 +68,7 @@ pub fn nscsspropertyid_is_animatable(property: nsCSSPropertyID) -> bool {
match property { match property {
% for prop in data.longhands + data.shorthands_except_all(): % for prop in data.longhands + data.shorthands_except_all():
% if prop.animatable: % if prop.animatable:
${helpers.to_nscsspropertyid(prop.ident)} => true, ${prop.nscsspropertyid()} => true,
% endif % endif
% endfor % endfor
_ => false _ => false
@ -154,12 +154,12 @@ impl From<nsCSSPropertyID> for TransitionProperty {
fn from(property: nsCSSPropertyID) -> TransitionProperty { fn from(property: nsCSSPropertyID) -> TransitionProperty {
match property { match property {
% for prop in data.longhands: % for prop in data.longhands:
${helpers.to_nscsspropertyid(prop.ident)} => { ${prop.nscsspropertyid()} => {
TransitionProperty::Longhand(LonghandId::${prop.camel_case}) TransitionProperty::Longhand(LonghandId::${prop.camel_case})
} }
% endfor % endfor
% for prop in data.shorthands_except_all(): % for prop in data.shorthands_except_all():
${helpers.to_nscsspropertyid(prop.ident)} => { ${prop.nscsspropertyid()} => {
TransitionProperty::Shorthand(ShorthandId::${prop.camel_case}) TransitionProperty::Shorthand(ShorthandId::${prop.camel_case})
} }
% endfor % endfor
@ -179,7 +179,7 @@ pub fn nscsspropertyid_is_transitionable(property: nsCSSPropertyID) -> bool {
match property { match property {
% for prop in data.longhands + data.shorthands_except_all(): % for prop in data.longhands + data.shorthands_except_all():
% if prop.transitionable: % if prop.transitionable:
${helpers.to_nscsspropertyid(prop.ident)} => true, ${prop.nscsspropertyid()} => true,
% endif % endif
% endfor % endfor
_ => false _ => false

View file

@ -424,14 +424,8 @@ impl NonCustomPropertyId {
#[cfg(feature = "gecko")] #[cfg(feature = "gecko")]
fn to_nscsspropertyid(self) -> nsCSSPropertyID { fn to_nscsspropertyid(self) -> nsCSSPropertyID {
static MAP: [nsCSSPropertyID; ${len(data.longhands) + len(data.shorthands) + len(data.all_aliases())}] = [ static MAP: [nsCSSPropertyID; ${len(data.longhands) + len(data.shorthands) + len(data.all_aliases())}] = [
% for property in data.longhands: % for property in data.longhands + data.shorthands + data.all_aliases():
${helpers.to_nscsspropertyid(property.ident)}, ${property.nscsspropertyid()},
% endfor
% for property in data.shorthands:
${helpers.to_nscsspropertyid(property.ident)},
% endfor
% for property in data.all_aliases():
${helpers.alias_to_nscsspropertyid(property.ident)},
% endfor % endfor
]; ];
@ -1578,10 +1572,10 @@ impl PropertyId {
% for (kind, properties) in [("Longhand", data.longhands), ("Shorthand", data.shorthands)]: % for (kind, properties) in [("Longhand", data.longhands), ("Shorthand", data.shorthands)]:
% for property in properties: % for property in properties:
"${property.name}" => StaticId::${kind}(${kind}Id::${property.camel_case}), "${property.name}" => StaticId::${kind}(${kind}Id::${property.camel_case}),
% for name in property.alias: % for alias in property.alias:
"${name}" => { "${alias.name}" => {
StaticId::${kind}Alias(${kind}Id::${property.camel_case}, StaticId::${kind}Alias(${kind}Id::${property.camel_case},
AliasId::${to_camel_case(name)}) AliasId::${alias.camel_case})
}, },
% endfor % endfor
% endfor % endfor
@ -1617,27 +1611,27 @@ impl PropertyId {
use gecko_bindings::structs::*; use gecko_bindings::structs::*;
match id { match id {
% for property in data.longhands: % for property in data.longhands:
${helpers.to_nscsspropertyid(property.ident)} => { ${property.nscsspropertyid()} => {
Ok(PropertyId::Longhand(LonghandId::${property.camel_case})) Ok(PropertyId::Longhand(LonghandId::${property.camel_case}))
} }
% for alias in property.alias: % for alias in property.alias:
${helpers.alias_to_nscsspropertyid(alias)} => { ${alias.nscsspropertyid()} => {
Ok(PropertyId::LonghandAlias( Ok(PropertyId::LonghandAlias(
LonghandId::${property.camel_case}, LonghandId::${property.camel_case},
AliasId::${to_camel_case(alias)} AliasId::${alias.camel_case}
)) ))
} }
% endfor % endfor
% endfor % endfor
% for property in data.shorthands: % for property in data.shorthands:
${helpers.to_nscsspropertyid(property.ident)} => { ${property.nscsspropertyid()} => {
Ok(PropertyId::Shorthand(ShorthandId::${property.camel_case})) Ok(PropertyId::Shorthand(ShorthandId::${property.camel_case}))
} }
% for alias in property.alias: % for alias in property.alias:
${helpers.alias_to_nscsspropertyid(alias)} => { ${alias.nscsspropertyid()} => {
Ok(PropertyId::ShorthandAlias( Ok(PropertyId::ShorthandAlias(
ShorthandId::${property.camel_case}, ShorthandId::${property.camel_case},
AliasId::${to_camel_case(alias)} AliasId::${alias.camel_case}
)) ))
} }
% endfor % endfor
@ -3868,12 +3862,12 @@ macro_rules! css_properties_accessors {
% for kind, props in [("Longhand", data.longhands), ("Shorthand", data.shorthands)]: % for kind, props in [("Longhand", data.longhands), ("Shorthand", data.shorthands)]:
% for property in props: % for property in props:
% if property.enabled_in_content(): % if property.enabled_in_content():
% for name in [property.name] + property.alias: % for prop in [property] + property.alias:
% if '-' in name: % if '-' in prop.name:
[${to_rust_ident(name).capitalize()}, Set${to_rust_ident(name).capitalize()}, [${prop.ident.capitalize()}, Set${prop.ident.capitalize()},
PropertyId::${kind}(${kind}Id::${property.camel_case})], PropertyId::${kind}(${kind}Id::${property.camel_case})],
% endif % endif
[${to_camel_case(name)}, Set${to_camel_case(name)}, [${prop.camel_case}, Set${prop.camel_case},
PropertyId::${kind}(${kind}Id::${property.camel_case})], PropertyId::${kind}(${kind}Id::${property.camel_case})],
% endfor % endfor
% endif % endif