コード例 #1
0
ファイル: Generator.cs プロジェクト: Spryter/PoemGenerator
 /// <summary>
 /// Возвращает множество узлов, которые подходят по иерархии с заданными связями
 /// </summary>
 /// <param name="node">Узел части фрейма.</param>
 /// <param name="toRelation">Связь части фрейма.</param>
 /// <param name="fromRelation">Узлы со связями которые надо найти.</param>
 /// <returns>Множество узлов.</returns>
 private static IEnumerable <IReadOnlyNode> GetRelevant(IReadOnlyNode node, string toRelation,
                                                        string fromRelation)
 {
     return(node.To(toRelation)
            .SelectMany(x => x.From(fromRelation))
            .Union(node
                   .To(toRelation)
                   .SelectMany(x => x
                               .ToIsANestedFrom(fromRelation)
                               .Union(x
                                      .FromIsANested()
                                      .Where(y => y.Name != Nodes.MainFrameNode)
                                      .SelectMany(y => y.From(fromRelation))
                                      )
                               )
                   ));
 }
コード例 #2
0
        /// <summary>
        /// Возвращает коллекцию узлов, которые вложенно входят по указанной связи.
        /// </summary>
        /// <param name="node">Узел</param>
        /// <param name="relationName"></param>
        /// <returns>Коллекция узлов.</returns>
        public static IReadOnlyNodeCollection ToNested(this IReadOnlyNode node, string relationName)
        {
            var nodeCollection = node.To(relationName).ToList();
            var result         = new List <IReadOnlyNode>(nodeCollection);

            foreach (var readOnlyNode in nodeCollection)
            {
                result.AddRange(readOnlyNode.ToNested(relationName));
            }
            return(new NodeCollection(result));
        }
コード例 #3
0
 /// <summary>
 /// Возвращает коллекцию узлов, которые входят в указанный узел по связи <see cref="Relations.Has"/>.
 /// </summary>
 /// <param name="node">Узел</param>
 /// <returns>Коллекция узлов.</returns>
 public static IReadOnlyNodeCollection ToHas(this IReadOnlyNode node)
 {
     return(node.To(Relations.Has));
 }
コード例 #4
0
 /// <summary>
 /// Возвращает коллекцию узлов, которые входят в указанный узел по связи <see cref="Relations.Agent"/>.
 /// </summary>
 /// <param name="node">Узел</param>
 /// <returns>Коллекция узлов.</returns>
 public static IReadOnlyNodeCollection ToAgent(this IReadOnlyNode node)
 {
     return(node.To(Relations.Agent));
 }
コード例 #5
0
 /// <summary>
 /// Возвращает коллекцию узлов, которые входят в указанный узел по связи <see cref="Relations.Locative"/>.
 /// </summary>
 /// <param name="node">Узел</param>
 /// <returns>Коллекция узлов.</returns>
 public static IReadOnlyNodeCollection ToLocative(this IReadOnlyNode node)
 {
     return(node.To(Relations.Locative));
 }
コード例 #6
0
 /// <summary>
 /// Возвращает коллекцию узлов, которые входят в указанный узел по связи <see cref="Relations.Object"/>.
 /// </summary>
 /// <param name="node">Узел</param>
 /// <returns>Коллекция узлов.</returns>
 public static IReadOnlyNodeCollection ToObject(this IReadOnlyNode node)
 {
     return(node.To(Relations.Object));
 }
コード例 #7
0
 /// <summary>
 /// Возвращает коллекцию узлов, которые входят в указанный узел по связи <see cref="Relations.Order"/>.
 /// </summary>
 /// <param name="node">Узел</param>
 /// <returns>Коллекция узлов.</returns>
 public static IReadOnlyNodeCollection ToOrder(this IReadOnlyNode node)
 {
     return(node.To(Relations.Order));
 }
コード例 #8
0
 /// <summary>
 /// Возвращает коллекцию узлов, которые входят в указанный узел по связи <see cref="Relations.IsA"/>.
 /// </summary>
 /// <param name="node">Узел</param>
 /// <returns>Коллекция узлов.</returns>
 public static IReadOnlyNodeCollection ToIsA(this IReadOnlyNode node)
 {
     return(node.To(Relations.IsA));
 }
コード例 #9
0
 /// <summary>
 /// Возвращает коллекцию узлов, которые входят в указанный узел по связи <see cref="Relations.APartOf"/>.
 /// </summary>
 /// <param name="node">Узел</param>
 /// <returns>Коллекция узлов.</returns>
 public static IReadOnlyNodeCollection ToAPartOf(this IReadOnlyNode node)
 {
     return(node.To(Relations.APartOf));
 }