using System.Linq; using System.Collections.Generic; using SwissAcademic.Citavi; using SwissAcademic.Citavi.Metadata; using SwissAcademic.Collections; using SwissAcademic.Drawing; namespace SwissAcademic.Citavi.Citations { public class ComponentPartFilter : IComponentPartFilter { public IEnumerable GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled) { handled = false; if (componentPart == null) return null; if (citation == null || citation.Reference == null) return null; if (componentPart.Scope == ComponentPartScope.ParentReference && citation.Reference.ParentReference == null) return null; var editionFieldElement = componentPart.GetFieldElements().FirstOrDefault(item => item.PropertyId == ReferencePropertyId.Edition); if (editionFieldElement == null) return null; string editionNumberResolved; if (componentPart.Scope == ComponentPartScope.ParentReference) { editionNumberResolved = citation.Reference.ParentReference.EditionNumberResolved; } else { editionNumberResolved = citation.Reference.EditionNumberResolved; } //now suppress the output ONLY if edition number is 1 if (editionNumberResolved == "1") { handled = true; //NO standard output required by component part } return null; } //FYI /* public string EditionNumberResolved { get { if (string.IsNullOrEmpty(_valueData.Edition)) { return string.Empty; } return new ReferenceEditionNumberRegex().Match(_valueData.Edition).Value; //ReferenceEditionNumberRegex -> \d+ } } */ } }