< Summary

Information
Class: ValidateLib.TabularData.Parsing.FlagsCreator
Assembly: validatelib.dll
File(s): C:\skola_karlovka\RP\code\csv-validator\CSV_Validator\ValidateLib\TabularData\Parsing\FlagsCreator.cs
Line coverage
88%
Covered lines: 31
Uncovered lines: 4
Coverable lines: 35
Total lines: 75
Line coverage: 88.5%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBlocks covered Blocks not covered
ExtractFlagsFromDialectDescriptor(...)415
CreateFlags(...)220

File(s)

C:\skola_karlovka\RP\code\csv-validator\CSV_Validator\ValidateLib\TabularData\Parsing\FlagsCreator.cs

#LineLine coverage
 1using ValidateLib.Metadata.Descriptors;
 2using ValidateLib.Metadata.Properties;
 3
 4namespace ValidateLib.TabularData.Parsing
 5{
 6    /// <summary>
 7    /// Transforms the dialect descriptor into a flags used for parsing the CSV file.
 8    /// Flags are described here: https://www.w3.org/TR/2015/REC-tabular-data-model-20151217/#parsing
 9    /// </summary>
 10    public class FlagsCreator
 11    {
 12        public static Flags ExtractFlagsFromDialectDescriptor(DialectDescriptor dialect)
 13        {
 114            Flags flags = new Flags()
 115            {
 116                commentPrefix = dialect?.commentPrefix?._value,
 117                delimiter = dialect!.delimiter!._value!,
 118                encoding = dialect.encoding!._value!,
 119                escapeCharacter = dialect!.doubleQuote!._value ? '\"' : '\\',
 120                headerRowCount = dialect.headerRowCount!._value!,
 121                lineTerminators = dialect.lineTerminators!._value!,
 122                quoteCharacter = dialect.quoteChar!._value!,
 123                skipBlankRows = dialect.skipBlankRows!._value!,
 124                skipColumns = dialect.skipColumns!._value!,
 125                skipRows = dialect.skipRows!._value!
 126            };
 27
 128            if (dialect is null)
 029                return flags;
 130            switch (dialect!.trim!._value)
 31            {
 32                case "true":
 133                    flags.trim = TrimOptions.TRUE;
 134                    break;
 35                case "false":
 036                    flags.trim = TrimOptions.FALSE;
 037                    break;
 38                case "start":
 139                    flags.trim = TrimOptions.START;
 140                    break;
 41                case "end":
 142                    flags.trim = TrimOptions.END;
 43                    break;
 44            }
 45
 146            if (dialect.trim.IsDefault && !dialect.skipInitialSpace!.IsDefault)
 47            {
 148                if (dialect.skipInitialSpace._value)
 049                    flags.trim = TrimOptions.TRUE;
 50                else
 151                    flags.trim = TrimOptions.FALSE;
 52            }
 53
 154            return flags;
 55        }
 56
 57        public static void CreateFlags(TableGroupDescriptor tableGroupDescriptor)
 58        {
 159            foreach (var table in tableGroupDescriptor.tables!._value!)
 60            {
 61                DialectDescriptor? dialect;
 162                if (table.dialect is null || table.dialect._value is null)
 63                {
 164                    dialect = new DialectDescriptor();
 65                }
 66                else
 67                {
 168                    dialect = table.dialect._value!;
 69                }
 170                table._flags = ExtractFlagsFromDialectDescriptor(dialect);
 171                table.dialect = new ObjectProperty<DialectDescriptor>(dialect);
 72            }
 173        }
 74    }
 75}