コード例 #1
0
 public static void AppendViewModel(this ItemText text, IRuleHandler handler, OutputSectionModelCollection viewModel)
 {
     if (text?.IsEmpty == false)
     {
         viewModel.Add(OutputSectionFactory.Create(TextHolderKind.Text,
                                                   new List <ItemTextNoted> {
             new ItemTextNoted(text)
         }));
     }
 }
コード例 #2
0
        public static OutputSectionModelCollection GetViewModel(this YmnosGroup group, IRuleHandler handler, IRuleSerializerRoot serializer)
        {
            OutputSectionModelCollection viewModel = new OutputSectionModelCollection();

            group.Annotation.AppendViewModel(handler, viewModel);
            group.Prosomoion.AppendViewModel(handler.Settings.TypiconVersionId, serializer, viewModel, group.Ihos);
            AppendYmnis(group.Ymnis, handler, serializer, viewModel);

            return(viewModel);
        }
コード例 #3
0
        private void AppendIkos(CreateViewModelRequest <KontakionRule> req, ItemText ikos, OutputSectionModel view)
        {
            var viewModel = new OutputSectionModelCollection()
            {
                view
            };

            ikos.AppendViewModel(req.Handler, viewModel);

            req.AppendModelAction(viewModel);
        }
コード例 #4
0
        private void AppendKontakion(CreateViewModelRequest <KontakionRule> req, Kontakion kontakion, OutputSectionModel view)
        {
            var viewModel = new OutputSectionModelCollection()
            {
                view
            };

            kontakion.Annotation.AppendViewModel(req.Handler, viewModel);
            kontakion.Prosomoion.AppendViewModel(req.Handler.Settings.TypiconVersionId, Serializer, viewModel);
            kontakion.Ymnos.AppendViewModel(req.Handler, viewModel);

            req.AppendModelAction(viewModel);
        }
コード例 #5
0
        public static void AppendViewModel(this Prosomoion prosomoion, int typiconVersionId,
                                           IRuleSerializerRoot serializer, OutputSectionModelCollection viewModel, int?ihos = null)
        {
            ItemText ihosItemText       = null;
            ItemText prosomoionItemText = null;

            if (ihos != null)
            {
                //текст "Глас"
                ihosItemText = serializer.GetCommonRuleItemTextValue(typiconVersionId, CommonRuleConstants.IhosText);
                ihosItemText.ReplaceForEach("[ihos]", ihos.Value);
            }
            else
            {
                ihosItemText = new ItemText();
            }

            //самоподобен?
            if (prosomoion?.Self == true)
            {
                prosomoionItemText = serializer.GetCommonRuleItemTextValue(typiconVersionId, CommonRuleConstants.SelfText);
            }
            //если подобен
            else if (prosomoion?.IsEmpty == false)
            {
                prosomoionItemText = serializer.GetCommonRuleItemTextValue(typiconVersionId, CommonRuleConstants.ProsomoionText);
                prosomoionItemText.ReplaceForEach("[name]", prosomoion);
            }
            else
            {
                prosomoionItemText = new ItemText();
            }

            //соединяем воедино
            ihosItemText.Merge(prosomoionItemText);

            viewModel.Add(OutputSectionFactory.Create(TextHolderKind.Text,
                                                      new List <ItemTextNoted> {
                new ItemTextNoted(ihosItemText)
            }));
        }
コード例 #6
0
        private static void AppendYmnis(List <Ymnos> ymnis, IRuleHandler handler,
                                        IRuleSerializerRoot serializer, OutputSectionModelCollection viewModel)
        {
            var(StihosText, ChoirText) = GetStringValues(handler, serializer);

            foreach (Ymnos ymnos in ymnis)
            {
                //добавляем стих и песнопение как отдельные объекты
                foreach (ItemText stihos in ymnos.Stihoi)
                {
                    viewModel.Add(OutputSectionFactory.Create(TextHolderKind.Stihos, StihosText,
                                                              new List <ItemTextNoted> {
                        new ItemTextNoted(stihos)
                    }));
                }

                viewModel.Add(OutputSectionFactory.Create(TextHolderKind.Choir, ChoirText,
                                                          new List <ItemTextNoted> {
                    new ItemTextNoted(ymnos.Text)
                }));
            }
        }
コード例 #7
0
        public override void Create(CreateViewModelRequest <YmnosStructureRule> req)
        {
            if (req.Element == null ||
                req.Element.Structure == null)
            {
                //TODO: просто ничего не делаем, хотя надо бы это обрабатывать
                return;
            }

            OutputSectionModelCollection viewModel = new OutputSectionModelCollection();

            //здесь вставляется индивидуальная обработка наследников
            AppendCustomForm(req /*, viewModel*/);

            //а теперь добавляем стихиры, общие для всех наследников данного класса
            YmnosStructure ymnosStructure = req.Element.Structure;

            //Groups
            foreach (var group in ymnosStructure.Groups)
            {
                viewModel.AddRange(group.GetViewModel(req.Handler, Serializer));
            }

            SetStringCommonRules(ymnosStructure, req.Handler.Settings.TypiconVersionId);

            //Doxastichon
            if (ymnosStructure.Doxastichon != null)
            {
                viewModel.AddRange(ymnosStructure.Doxastichon.GetViewModel(req.Handler, Serializer));
            }
            //Theotokion
            if (ymnosStructure.Theotokion?.Count > 0)
            {
                viewModel.AddRange(ymnosStructure.Theotokion[0].GetViewModel(req.Handler, Serializer));
            }

            req.AppendModelAction(viewModel);
        }
コード例 #8
0
        public void OutputSectionModelCollection_Serialize()
        {
            var serializer = new TypiconSerializer();

            var collection = new OutputSectionModelCollection()
            {
                new OutputSectionModel()
                {
                    Kind       = ElementViewModelKind.Choir,
                    KindText   = new ItemText(new ItemTextUnit("cs-ru", "Заголовок"), new ItemTextUnit("ru-ru", "Заголовок")),
                    Paragraphs = new List <ItemTextNoted>()
                    {
                        new ItemTextNoted(new ItemText(new ItemTextUnit("cs-ru", "Параграф1"), new ItemTextUnit("ru-ru", "Параграф1"))),
                        new ItemTextNoted(new ItemText(new ItemTextUnit("cs-ru", "Параграф2"), new ItemTextUnit("ru-ru", "Параграф2")))
                    }
                }
            };
            var str = serializer.Serialize(collection);

            var deserialized = serializer.Deserialize <OutputSectionModelCollection>(str);

            Assert.NotNull(deserialized);
        }