private void GenerateColumnDefinitionsFromScript(string script) { ColumnDefinitions.Clear(); script?.Split(RowColumnScriptPartSplitDelimiters, StringSplitOptions.RemoveEmptyEntries) .SelectMany(ExpandStringDefinition) .ForEach(e => { ColumnDefinitions.Add(RowColumnDefinition.FromString(e).ToColumnDefinition()); }); }
public void ToDelimitedString_WithAllProperties_ReturnsCorrectlySequencedFields() { IType hl7Type = new RowColumnDefinition { SegmentFieldName = "1", Hl7DataType = "2", MaximumColumnWidth = 3 }; string expected = "1^2^3"; string actual = hl7Type.ToDelimitedString(); Assert.Equal(expected, actual); }
public void FromDelimitedString_WithAllProperties_ReturnsCorrectlyInitializedFields() { IType expected = new RowColumnDefinition { SegmentFieldName = "1", Hl7DataType = "2", MaximumColumnWidth = 3 }; IType actual = new RowColumnDefinition(); actual.FromDelimitedString("1^2^3"); expected.Should().BeEquivalentTo(actual); }
private string GenerateScriptFromColumnDefinitions() { return(string.Join(RowColumnScriptPartJoinDelimiter, CompactStringDefinition(ColumnDefinitions.Select(cd => RowColumnDefinition.FromColumnDefinition(cd).ToString())))); }
private static RowColumnDefinition[] ParseXmlAttribute(string xmlAttribute) { if (string.IsNullOrEmpty(xmlAttribute)) { return(null); } var result = new List <RowColumnDefinition>(); var allSubValues = xmlAttribute.Split(','); foreach (var subValue in allSubValues) { var subValueCopy = subValue; // has options? string options = null; var optionsBegin = subValueCopy.IndexOf('('); if (optionsBegin != -1) { var optionsEnd = subValueCopy.IndexOf(')'); if (optionsEnd != -1 && optionsBegin < optionsEnd) { options = subValueCopy.Substring(optionsBegin + 1, optionsEnd - optionsBegin - 1); subValueCopy = subValueCopy.Substring(0, optionsBegin); } } // parse value RowColumnDefinition rowColumnDefinition = null; if (subValueCopy == "*") { rowColumnDefinition = new RowColumnDefinition { Type = RowColumnType.Star }; } else if (string.Equals(subValueCopy, "auto", StringComparison.OrdinalIgnoreCase)) { rowColumnDefinition = new RowColumnDefinition { Type = RowColumnType.Auto }; } else { if (double.TryParse(subValueCopy, out var exactValue)) { rowColumnDefinition = new RowColumnDefinition { Type = RowColumnType.Exact, ExactValue = exactValue }; } else { if (subValueCopy.EndsWith("*")) { var starNumberStr = subValueCopy.Substring(0, subValueCopy.Length - 1); if (double.TryParse(starNumberStr, out var starNumber)) { rowColumnDefinition = new RowColumnDefinition { Type = RowColumnType.Star, ExactValue = starNumber }; } } } } if (rowColumnDefinition == null) { continue; } // parse options if (options != null) { var allOptions = options.Split(','); foreach (var option in allOptions) { var keyValuePair = option.Split('='); if (keyValuePair.Length != 2) { continue; } if (string.Compare(keyValuePair[0], "min", StringComparison.OrdinalIgnoreCase) == 0 && double.TryParse(keyValuePair[1], out var v)) { rowColumnDefinition.MinValue = v; } else if (string.Compare(keyValuePair[0], "max", StringComparison.OrdinalIgnoreCase) == 0 && double.TryParse(keyValuePair[1], out v)) { rowColumnDefinition.MaxValue = v; } } } result.Add(rowColumnDefinition); } return(result.ToArray()); }