parse static method
Implementation
static Property<Object> parse(Parser parser) {
final name = parser.getString('name');
final type = parser.getPropertyType('type', defaults: PropertyType.string);
switch (type) {
case PropertyType.object:
return ObjectProperty(
name: name,
value: parser.getInt('value', defaults: 0),
);
case PropertyType.color:
return ColorProperty(
name: name,
value: parser.getColor('value', defaults: const Color(0x00000000)),
hexValue: parser.getString('value', defaults: '#00000000'),
);
case PropertyType.bool:
return BoolProperty(
name: name,
value: parser.getBool('value', defaults: false),
);
case PropertyType.float:
return FloatProperty(
name: name,
value: parser.getDouble('value', defaults: 0),
);
case PropertyType.int:
return IntProperty(
name: name,
value: parser.getInt('value', defaults: 0),
);
case PropertyType.file:
return FileProperty(
name: name,
value: parser.getString('value', defaults: '.'),
);
case PropertyType.string:
final value = parser.formatSpecificParsing((json) {
return json.getString('value', defaults: '');
}, (xml) {
final attrString = parser.getStringOrNull('value');
if (attrString != null) {
return attrString;
} else {
// In tmx files, multi-line text property values can be stored
// inside the <property> node itself instead of in the 'value'
// attribute
return xml.element.innerText;
}
});
return StringProperty(
name: name,
value: value,
);
}
}