/// <summary> /// Извлекает все строки с переводом из xml узла lang /// </summary> /// <param name="langNode"></param> /// <param name="parent"></param> /// <param name="lang"></param> /// <returns></returns> public static List <TextElementBase> GetLines(this XElement langNode, DataEntry parent, Language lang) { if (langNode == null) { throw new ArgumentNullException(); } var lines = new List <TextElementBase>(); foreach (var line in langNode.Elements()) { if (string.Equals(line.Name.ToString(), XmlDataValues.TextLineTitle, StringComparison.Ordinal)) { var newLine = new TextLine(line, parent, lang); lines.Add(newLine); } else if (string.Equals(line.Name.ToString(), XmlDataValues.TextLinkTitle, StringComparison.Ordinal)) { var newLine = new TextLink(line, parent, lang); lines.Add(newLine); } } return(lines); }
public DefaultEntry(XElement xml, EntryType type) : base(xml, type) { _lines = new List <TextElementBase>(); // Проходим по узлам Lang foreach (var node in xml.Elements(XmlDataValues.LanguageTitle)) { // Язык перевода не задан для Single-Translated записей Language lang = Language.NotSpecified; if (Type == EntryType.Default) { lang = (Language)Enum.Parse(typeof(Language), node.Attribute(XmlDataValues.LanguageAttr).Value); } // Проходим по каждой записи в языковом узле foreach (var line in node.Elements()) { // Определяем ее тип и добавляем объект соотв. типа в коллекцию if (string.Equals(line.Name.ToString(), XmlDataValues.TextLineTitle, StringComparison.Ordinal)) { var newLine = new TextLine(line, this, lang); _lines.Add(newLine); } else if (string.Equals(line.Name.ToString(), XmlDataValues.TextLinkTitle, StringComparison.Ordinal)) { var newLine = new TextLink(line, this, lang); _lines.Add(newLine); } } } }
public override void ReplaceLineWithLink(string hash, TextElementBase linkedLine) { DeleteTextLine(hash); var newLink = new TextLink(this, hash, linkedLine.Language, linkedLine.Contributor, linkedLine.DateTime, linkedLine); _lines.Add(newLink); linkedLine.AddBacklink(newLink); }