Ejemplo n.º 1
0
        protected virtual void ConstructWithCommonRule(CreateViewModelRequest <YmnosStructureRule> req, string key)
        {
            var children = Serializer.GetCommonRuleChildren(req.Handler.Settings.TypiconVersionId, key);

            //List<RuleElement> children = req.Handler.Settings.TypiconRule.Owner.GetChildren(
            //    new CommonRuleServiceRequest() { Key = key, RuleSerializer = Serializer }).ToList();

            if (req.Element.Structure.Groups.Count > 0)
            {
                //заполняем header - вставляем номер гласа
                ItemText header = (children[0] as TextHolder).Paragraphs[0];

                header.ReplaceForEach("[ihos]", req.Element.Structure.Groups[0].Ihos);
                //string headerText = header.StringExpression;
                //header.StringExpression = headerText.Replace("[ihos]",
                //    req.Handler.Settings.Language.IntConverter.ToString(req.Element.Structure.Groups[0].Ihos));

                //а теперь отсчитываем от последней стихиры и добавляем к ней стих из псалма
                //сам стих удаляем из псалма

                TextHolder psalm = new TextHolder(children[2] as TextHolder);

                for (int i = req.Element.Structure.Groups.Count - 1; i >= 0; i--)
                {
                    YmnosGroup group = req.Element.Structure.Groups[i];

                    for (int n = group.Ymnis.Count - 1; n >= 0; n--)
                    {
                        Ymnos ymnos = group.Ymnis[n];

                        ItemTextNoted stihos = psalm.Paragraphs.Last();

                        ymnos.Stihoi.Add(stihos);

                        psalm.Paragraphs.Remove(stihos);
                    }
                }
            }

            //теперь вставляем шапку
            AppendItem(children[0] as TextHolder);
            AppendItem(children[1] as TextHolder);

            //вставляем псалмы
            if ((req.Element as KekragariaRule).ShowPsalm)
            {
                AppendItem(children[2] as TextHolder);
            }

            void AppendItem(TextHolder textHolder)
            {
                req.AppendModelAction(new OutputSectionModelCollection()
                {
                    OutputSectionFactory.Create(textHolder, req.Handler.Settings.TypiconVersionId, Serializer)
                });
            }
        }
Ejemplo n.º 2
0
 public static LocalizedParagraphNoted Localize(this ItemTextNoted item, string language)
 {
     return(new LocalizedParagraphNoted
     {
         Text = (item as ItemText).Localize(language),
         Style = new TextStyle()
         {
             Header = item.Header,
             IsBold = item.IsBold,
             IsItalic = item.IsItalic,
             IsRed = item.IsRed
         },
         Note = item.Note?.Localize(language)
     });
 }
Ejemplo n.º 3
0
 public static FilteredParagraphNoted FilterOut(this ItemTextNoted item, OutputFilter filter)
 {
     return(new FilteredParagraphNoted
     {
         Text = (item as ItemText).FilterOut(filter),
         Style = new TextStyle()
         {
             Header = item.Header,
             IsBold = item.IsBold,
             IsItalic = item.IsItalic,
             IsRed = item.IsRed
         },
         Note = item.Note?.FilterOut(filter)
     });
 }
Ejemplo n.º 4
0
        private void AppendKanonasHeader(CreateViewModelRequest <KanonasRule> req, Kanonas kanonas)
        {
            int hash = kanonas.GetHashCode();

            OutputSectionModel view = null;

            if (!kanonasHeaders.ContainsKey(hash))
            {
                TextHolder holder = null;
                ItemText   name   = null;
                if (kanonas.Name != null)
                {
                    holder = GetHeaders(req)[2];
                    name   = kanonas.Name;
                }
                else
                {
                    holder = GetHeaders(req)[3];
                }

                var kanonasP = new ItemTextNoted(holder.Paragraphs[0]);
                kanonasP.ReplaceForEach("[kanonas]", name);
                kanonasP.ReplaceForEach("[ihos]", kanonas.Ihos);

                view = OutputSectionFactory.Create(TextHolderKind.Text, new List <ItemTextNoted>()
                {
                    kanonasP
                });


                //string kanonasString = holder.Paragraphs[0][req.Handler.Settings.Language.Name];
                //kanonasString = kanonasString.Replace("[kanonas]", name).
                //                              Replace("[ihos]", req.Handler.Settings.Language.IntConverter.ToString(kanonas.Ihos));
                //view = ViewModelItemFactory.Create(TextHolderKind.Text, new List<string> { kanonasString });

                kanonasHeaders.Add(hash, view);
            }
            else
            {
                view = kanonasHeaders[hash];
            }

            req.AppendModelAction(new OutputSectionModelCollection()
            {
                view
            });
        }
Ejemplo n.º 5
0
        public static ParagraphViewModel Create(ItemTextNoted itemTextNoted, string language)
        {
            var viewModel = new ParagraphViewModel
            {
                Style = itemTextNoted.Style
            };

            if (itemTextNoted[language] is string s)
            {
                viewModel.Text = s;
            }

            if (itemTextNoted.Note != null)
            {
                viewModel.Note = Create(itemTextNoted.Note, language);
            }

            return(viewModel);
        }
Ejemplo n.º 6
0
        public void ItemText_Serialize()
        {
            string            xmlString = @"<ItemTextNoted>
	                                <item language=""cs-ru"">Блажен муж, иже не иде на совет нечестивых и на пути грешных не ста, и на седалищи губителей не седе,</item>
	                                <item language=""cs-cs"">Бlжeнъ мyжъ, и4же не и4де на совётъ нечести1выхъ, и3 на пути2 грёшныхъ не стA, и3 на сэдaлищи губи1телей не сёде:</item>
	                                <item language=""ru-ru"">Блажен муж, который не пошел на совет нечестивых, и на путь грешных не вступил, и не сидел в сборище губителей;</item>
	                                <item language=""el-el"">Μακάριος ἀνήρ, ὃς οὐκ ἐπορεύθη ἐν βουλῇ ἀσεβῶν καὶ ἐν ὁδῷ ἁμαρτωλῶν οὐκ ἔστη καὶ ἐπὶ καθέδραν λοιμῶν οὐκ ἐκάθισεν,</item>
	                                <note><item language=""cs-cs"">Трижды.</item><style><red>true</red><bold>true</bold></style></note>
                                </ItemTextNoted>";
            TypiconSerializer ser       = new TypiconSerializer();
            ItemTextNoted     element   = ser.Deserialize <ItemTextNoted>(xmlString);

            element["cs-cs"] = "cs-cs Текст измененный";

            element.Style.Header = HeaderCaption.h1;
            element.Style.IsBold = true;

            string result = ser.Serialize(element);

            Assert.Pass(result);
        }
Ejemplo n.º 7
0
        public void ItemTextNotedTest_Note()
        {
            string xmlString = @"<ItemText>
	                                <item language=""cs-ru"">Господи помилуй.</item>
	                                <item language=""cs-cs"">Господи помилуй.</item>
	                                <item language=""ru-ru"">Господи помилуй.</item>
	                                <item language=""el-el"">Господи помилуй.</item>
	                                <note><item language=""cs-cs"">Трижды.</item><style><red>true</red><bold>true</bold></style></note>
                                </ItemText>";

            //XmlDocument xmlDoc = new XmlDocument();

            //xmlDoc.LoadXml(xmlString);

            ItemTextNoted element = new ItemTextNoted
            {
                StringExpression = xmlString
            };

            Assert.AreEqual("Господи помилуй. Трижды.", element.ToString());
            Assert.Pass(element.StringExpression);
        }
Ejemplo n.º 8
0
        private void AppendKatavasiaHeader(CreateViewModelRequest <KanonasRule> req, int ihos)
        {
            if (katavasiaHeader == null)
            {
                var katavasiaP = new ItemTextNoted(GetHeaders(req)[4].Paragraphs[0]);
                katavasiaP.ReplaceForEach("[ihos]", ihos);

                katavasiaHeader = OutputSectionFactory.Create(TextHolderKind.Text, new List <ItemTextNoted>()
                {
                    katavasiaP
                });

                //string str = GetHeaders(req)[4].Paragraphs[0][req.Handler.Settings.Language.Name];
                //str = str.Replace("[ihos]", req.Handler.Settings.Language.IntConverter.ToString(ihos));

                //katavasiaHeader = ViewModelItemFactory.Create(TextHolderKind.Text, new List<string> { str });
            }

            req.AppendModelAction(new OutputSectionModelCollection()
            {
                katavasiaHeader
            });
        }
Ejemplo n.º 9
0
        protected override void FillObject(XmlDescriptor d, RuleElement element)
        {
            if (Enum.TryParse(d.Element.Name, true, out TextHolderKind kind))
            {
                (element as TextHolder).Kind = kind;
            }

            XmlAttribute attr = d.Element.Attributes[RuleConstants.TextHolderMarkAttr];

            if (Enum.TryParse(attr?.Value, true, out TextHolderMark mark))
            {
                (element as TextHolder).Mark = mark;
            }

            foreach (XmlNode childNode in d.Element.ChildNodes)
            {
                if (childNode.Name == RuleConstants.TextHolderPapragraphNode)
                {
                    ItemTextNoted item = new ItemTextNoted(childNode.OuterXml);

                    (element as TextHolder).Paragraphs.Add(item);
                }
            }
        }