private void AppendPropertyValue(StringBuilder b, Individual i, string[] propertyName, CommonNoun templateKind, List <Property> suppressedProperties) { // Find the property var property = templateKind.PropertyNamed(propertyName); if (property != null) { // Print its value b.Append(Model[i.Properties[property]]); suppressedProperties?.Add(property); } else { var part = templateKind.PartNamed(propertyName); if (part != null) { b.Append(Description(i.Parts[part])); } else { b.Append($"<unknown property {propertyName.Untokenize()}>"); } } }
private string FormatNameFromTemplate(Individual i, List <Property> suppressedProperties, CommonNoun kind) { var b = new StringBuilder(); var t = kind.NameTemplate; var firstOne = true; for (var n = 0; n < t.Length; n++) { if (firstOne) { firstOne = false; } else { b.Append(' '); } var token = t[n]; if (token == "[") { // Get a property name var start = n + 1; var end = Array.IndexOf(t, "]", n); if (end < 0) { end = t.Length; } var propertyName = new string[end - start]; Array.Copy(t, start, propertyName, 0, end - start); // Find the property var property = kind.PropertyNamed(propertyName); if (property == null) { b.Append($"<unknown property {propertyName.Untokenize()}>"); } else { // Print its value b.Append(Model[i.Properties[property]]); suppressedProperties?.Add(property); } n = end; } else { b.Append(token); } } return(b.ToString()); }