public static IAttribute <string> GetString(this IElement element, string property, string defaultValue) { return(element[property].Convert( parse: p => Parsed.Success(p, p), serialize: d => d, defaultValue: defaultValue)); }
static Parsed <double> TryParseAngle(string str) { double value; if (double.TryParse(str.StripSuffix("deg"), out value)) { return(Parsed.Success(value, str)); } return(Parsed.Failure <double>(str)); }
public static IAttribute <string> Value(IElement element) { var valueFromAttribute = element["Value"]; var valueFromContent = element.Content; return(valueFromContent .Select(contentValue => contentValue.HasValue ? valueFromContent : valueFromAttribute) .Switch() .Convert(s => Parsed.Success(s, s), s => s, "")); }