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) }); } }
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) }); }
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) }); }
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 }); }
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); }
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); }
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); }
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 }); }
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); } } }