public EndianSpecificRegistry(EndianPrecedence precedence)
        {
            var handlers = new List <ComplexHandler>()
            {
                Handle
                .Required <ScalarMonth>()
                .Required <SeparatorDate>()
                .Required <ScalarDay>()
                .Required <SeparatorDate>()
                .Required <ScalarYear>()
                .Optional <SeparatorAt>()
                .Optional(HandlerType.Time)
                .Using <SmSdSyHandler>(),

                Handle
                .Required <ScalarDay>()
                .Required <SeparatorDate>()
                .Required <ScalarMonth>()
                .Required <SeparatorDate>()
                .Required <ScalarYear>()
                .Optional <SeparatorAt>()
                .Optional(HandlerType.Time)
                .Using <SdSmSyHandler>(),

                Handle
                .Required <ScalarMonth>()
                .Required <SeparatorDate>()
                .Required <ScalarDay>()
                .Optional(HandlerType.Time)
                .Using <SmSdHandler>(),

                Handle
                .Required <ScalarDay>()
                .Required <SeparatorDate>()
                .Required <ScalarMonth>()
                .Optional(HandlerType.Time)
                .Using <SdSmHandler>(),
            };

            switch (precedence)
            {
            case EndianPrecedence.Little:
            {
                handlers.Reverse();
                Add(HandlerType.Endian, handlers);
                break;
            }

            case EndianPrecedence.Middle:
                Add(HandlerType.Endian, handlers);
                break;

            default:
                throw new ArgumentException(String.Format(
                                                "Unknown endian value {0}",
                                                precedence));
            }
        }
Пример #2
0
        public EndianSpecificRegistry(EndianPrecedence precedence)
        {
            var handlers = new List<ComplexHandler>()
                {
                    Handle
                        .Required<ScalarMonth>()
                        .Required<SeparatorDate>()
                        .Required<ScalarDay>()
                        .Required<SeparatorDate>()
                        .Required<ScalarYear>()
                        .Optional<SeparatorAt>()
                        .Optional(HandlerType.Time)
                        .Using<SmSdSyHandler>(),

                    Handle
                        .Required<ScalarDay>()
                        .Required<SeparatorDate>()
                        .Required<ScalarMonth>()
                        .Required<SeparatorDate>()
                        .Required<ScalarYear>()
                        .Optional<SeparatorAt>()
                        .Optional(HandlerType.Time)
                        .Using<SdSmSyHandler>()
                };

            switch (precedence)
            {
                case EndianPrecedence.Little:
                    {
                        handlers.Reverse();
                        Add(HandlerType.Endian, handlers);
                        break;
                    }
                case EndianPrecedence.Middle:
                    Add(HandlerType.Endian, handlers);
                    break;
                default:
                    throw new ArgumentException(String.Format(
                        "Unknown endian value {0}",
                        precedence));
            }
        }
Пример #3
0
        public EndianSpecificRegistry(EndianPrecedence precedence)
        {
            var handlers = new List <ComplexHandler>()
            {
                Handle
                .Required <ScalarMonth>()
                .Repeat(pattern => pattern
                        .Required <SeparatorSlash>()
                        .Required <SeparatorDash>()
                        ).AnyNumberOfTimes()
                .Required <ScalarDay>()
                .Repeat(pattern => pattern
                        .Required <SeparatorSlash>()
                        .Required <SeparatorDash>()
                        ).AnyNumberOfTimes()
                .Required <ScalarYear>()
                .Optional <SeparatorAt>()
                .Optional(HandlerType.Time)
                .Using <SmSdSyHandler>(),

                Handle
                .Required <ScalarMonth>()
                .Repeat(pattern => pattern
                        .Required <SeparatorSlash>()
                        .Required <SeparatorDash>()
                        ).AnyNumberOfTimes()
                .Required <ScalarDay>()
                .Optional <SeparatorAt>()
                .Optional(HandlerType.Time)
                .Using <SmSdHandler>(),

                Handle
                .Required <ScalarDay>()
                .Repeat(pattern => pattern
                        .Required <SeparatorSlash>()
                        .Required <SeparatorDash>()
                        ).AnyNumberOfTimes()
                .Required <ScalarMonth>()
                .Optional <SeparatorAt>()
                .Optional(HandlerType.Time)
                .Using <SdSmHandler>(),

                Handle
                .Required <ScalarDay>()
                .Repeat(pattern => pattern
                        .Required <SeparatorSlash>()
                        .Required <SeparatorDash>()
                        ).AnyNumberOfTimes()
                .Required <ScalarMonth>()
                .Repeat(pattern => pattern
                        .Required <SeparatorSlash>()
                        .Required <SeparatorDash>()
                        ).AnyNumberOfTimes()
                .Required <ScalarYear>()
                .Optional <SeparatorAt>()
                .Optional(HandlerType.Time)
                .Using <SdSmSyHandler>(),

                Handle
                .Required <ScalarDay>()
                .Required <RepeaterMonthName>()
                .Required <ScalarYear>()
                .Optional <SeparatorAt>()
                .Optional(HandlerType.Time)
                .Using <SdRmnSyHandler>()
            };

            switch (precedence)
            {
            case EndianPrecedence.Little:
            {
                handlers.Reverse();
                Add(HandlerType.Endian, handlers);
                break;
            }

            case EndianPrecedence.Middle:
                Add(HandlerType.Endian, handlers);
                break;

            default:
                throw new ArgumentException($"Unknown endian value {precedence}");
            }
        }