示例#1
0
 private void GenerateColumnDefinitionsFromScript(string script)
 {
     ColumnDefinitions.Clear();
     script?.Split(RowColumnScriptPartSplitDelimiters, StringSplitOptions.RemoveEmptyEntries)
     .SelectMany(ExpandStringDefinition)
     .ForEach(e =>
     {
         ColumnDefinitions.Add(RowColumnDefinition.FromString(e).ToColumnDefinition());
     });
 }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
 private string GenerateScriptFromColumnDefinitions()
 {
     return(string.Join(RowColumnScriptPartJoinDelimiter, CompactStringDefinition(ColumnDefinitions.Select(cd => RowColumnDefinition.FromColumnDefinition(cd).ToString()))));
 }
示例#5
0
        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());
        }