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; var periodical = citation.Reference.Periodical; if (periodical == null) return null; var issnString = periodical.Issn; if (string.IsNullOrWhiteSpace(issnString)) return null; var periodicalFieldElement = componentPart.GetFieldElements().FirstOrDefault(item => item.PropertyId == ReferencePropertyId.Periodical); if (periodicalFieldElement == null) return null; var output = componentPart.GetTextUnitsUnfiltered(citation, template); var openingParenthesisTextUnit = new LiteralTextUnit(" ("); openingParenthesisTextUnit.FontStyle = FontStyle.Neutral; var closingParenthesisTextUnit = new LiteralTextUnit(")"); closingParenthesisTextUnit.FontStyle = FontStyle.Neutral; var issnTextUnit = new LiteralTextUnit(issnString); issnTextUnit.FontStyle = FontStyle.Neutral; output.Add(openingParenthesisTextUnit); output.Add(issnTextUnit); output.Add(closingParenthesisTextUnit); handled = true; return output; } } }