private Maybe<string> GetPropertyDescription(AtomSymbol property) { return property.Annotations .TryGetValue("Description") .Select(x => x.SingleOrDefault()) .SelectMaybe(x => x.Pairs.TrySingle(y => y.Key == "Summary")) .Select(x => x.Value.Value); }
public virtual void VisitAtom(AtomSymbol atom) { }
protected virtual void WritePropertyImplmementation(AtomSymbol property, MoleculeSymbol parent) { string privateType = GetPrivateTypeString(property, parent); string publicType = GetPublicTypeString(property, parent); string fieldName = Inflector.Camelize(property.Name); bool isMany = property.Cardinality.CanBeMoreThanOne(); Maybe<string> description = GetPropertyDescription(property); WriteLine(); WriteLine("private {0} _{1};", privateType, fieldName); if (description.HasValue) { WriteLine("/// <summary>"); WriteLine("/// " + description.Value); WriteLine("/// </summary>"); } WriteLine("public {0} {1} {{ get {{ return _{2}{3}; }} private set {{ _{2} = value{4}; }} }}", publicType, property.Name, fieldName, isMany ? ".AsEnumerable()" : "", isMany ? ".ToArray()" : ""); }