/// <summary> /// Formats the specified data into printable lines. /// </summary> /// <param name="data">The raw PAF data.</param> /// <returns> /// An array of lines representing the specified data. /// </returns> /// <exception cref="ArgumentNullException">data is null.</exception> public string[] Format(IPafData data) { Check.IsNotNull(data, "data"); var lines = new List <string>(9); AddIfNotEmpty(lines, data.Postcode); AddIfNotEmpty(lines, data.PostTown); AddIfNotEmpty(lines, data.DependentLocality); AddIfNotEmpty(lines, data.DoubleDependentLocality); AddIfNotEmpty(lines, FormatThoroughfare(data.ThoroughfareName, data.ThoroughfareDescriptor)); AddIfNotEmpty(lines, FormatThoroughfare(data.DependentThoroughfareName, data.DependentThoroughfareDescriptor)); if (!string.IsNullOrWhiteSpace(data.POBoxNumber)) { AddPOBox(lines, data.POBoxNumber); } else { AddPremisesElements(lines, data); } AddIfNotEmpty(lines, data.DepartmentName); AddIfNotEmpty(lines, data.OrganisationName); return(CopyToReversedArray(lines)); }
private static void AddPremisesElements(List <string> lines, IPafData data) { BuildingInfo info = ProcessExceptionRules(data); PrependIfSpecified(lines, info.BuildingNumber); AddIfNotEmpty(lines, info.BuildingName); PrependIfSpecified(lines, info.SubBuildingNumber); AddIfNotEmpty(lines, info.SubBuildingName); }
private static void ProcessBuildingNumberAndSubBuildingName(IPafData data, BuildingInfo info) { if (data.ConcatenateBuildingNumber) { info.BuildingNumber += data.SubBuildingName; info.SubBuildingName = null; info.SubBuildingNumber = null; } }
private static BuildingInfo ProcessExceptionRules(IPafData data) { var info = new BuildingInfo(); info.BuildingNumber = data.BuildingNumber; ProcessExceptions(data.BuildingName, ref info.BuildingName, ref info.BuildingNumber); ProcessExceptions(data.SubBuildingName, ref info.SubBuildingName, ref info.SubBuildingNumber); ProcessBuildingNumberAndSubBuildingName(data, info); if (info.BuildingName != null) { SplitBuildingNumberFromBuildingName(info); } return(info); }