Exemple #1
0
 public MatchResult(DocumentPatternClass _pattern, DocumentClass _document, string _text = "")
 {
     Pattern      = _pattern;
     Document     = _document;
     PatternName  = Pattern.Name;
     DocumentName = Document.Name;
     Text         = _text;
     Success      = false;
     Childs       = new List <MatchResult>();
 }
Exemple #2
0
        private bool IsChildsMatch(DocumentClass doc, bool amplifyIfMatch = false)
        {
            bool success = true;

            foreach (DocumentClass child in doc.Childs)
            {
                //Ищем первый шаблон, в списке дочерних шаблонов, которому удовлетворяет child
                //TODO: Вообще, подходящих шаблонов может быть несколько и, тогда нужны дополнительные данные для определения, какой шаблон правильный
                DocumentPatternClass ptrn = ChildsPatterns.FirstOrDefault(p => p.IsMatch(child, amplifyIfMatch));
                if (ptrn == null)
                {
                    result.Text += "Дочерний документ не прошел проверку " + child.Name + "\n";
                    //Запишем результаты неуспешных проверок дочерних шаблонов в результат проверки текущего шаблона
                    result.Childs.AddRange(ChildsPatterns.Select(p => p.Result));
                    success = false;
                }
                else
                {
                    //Добавим в дерево результат проверки дочернего документа
                    result.Childs.Add(ptrn.Result);
                }
            }
            return(success);
        }
Exemple #3
0
 /// <summary>
 /// Метод применяет шаблон pattern к документу, заполняя его атрибуты
 /// </summary>
 /// <param name="pattern"></param>
 public bool AmplifyIfMatch(DocumentPatternClass pattern)
 {
     return(pattern.IsMatch(this, true));
 }
Exemple #4
0
 /// <summary>
 /// Функция возвращает истину, если документ соответствует шаблону pattern
 /// </summary>
 /// <param name="pattern"></param>
 /// <returns></returns>
 public bool IsMatchPattern(DocumentPatternClass pattern)
 {
     return(pattern.IsMatch(this));
 }