Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        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);
        }