public AddSearchToPlaylist(IDatabase database, IFilterParserResult filter, ISortParserResult sort, int limit)
 {
     this.Database = database;
     this.Filter   = filter;
     this.Sort     = sort;
     this.Limit    = limit;
 }
示例#2
0
        public bool TryParse(string sort, out ISortParserResult result)
        {
            var expressions = new List <ISortParserResultExpression>();

            if (!string.IsNullOrEmpty(sort))
            {
                var lines = sort.Split(new[]
                {
                    Environment.NewLine
                }, StringSplitOptions.RemoveEmptyEntries);
                foreach (var line in lines)
                {
                    var success = default(bool);
                    foreach (var provider in this.Providers)
                    {
                        var expression = default(ISortParserResultExpression);
                        if (provider.TryParse(line, out expression))
                        {
                            expressions.Add(expression);
                            success = true;
                            break;
                        }
                    }
                    if (!success)
                    {
                        result = default(ISortParserResult);
                        return(false);
                    }
                }
            }
            result = new SortParserResult(expressions);
            return(true);
        }
示例#3
0
 public virtual bool Equals(ISortParserResult other)
 {
     if (other == null)
     {
         return(false);
     }
     if (object.ReferenceEquals(this, other))
     {
         return(true);
     }
     if (!Enumerable.SequenceEqual(this.Expressions, other.Expressions))
     {
         return(false);
     }
     return(true);
 }
示例#4
0
 public bool TryParse(string sort, out ISortParserResult result)
 {
     result = this.Store.GetOrAdd(sort, () =>
     {
         if (string.IsNullOrEmpty(sort))
         {
             return(null);
         }
         var lines = sort.Split(new[]
         {
             Environment.NewLine
         }, StringSplitOptions.RemoveEmptyEntries);
         var success     = default(bool);
         var expressions = new List <ISortParserResultExpression>();
         foreach (var line in lines)
         {
             foreach (var provider in this.Providers.Value)
             {
                 var expression = default(ISortParserResultExpression);
                 if (provider.TryParse(line, out expression))
                 {
                     expressions.Add(expression);
                     success = true;
                     break;
                 }
             }
             if (!success)
             {
                 Logger.Write(this, LogLevel.Warn, "Failed to parse sort: {0}", line.Trim());
             }
         }
         if (expressions.Any())
         {
             return(new SortParserResult(expressions));
         }
         else
         {
             return(null);
         }
     });
     return(result != null);
 }
示例#5
0
 public PlaylistSortBuilder(IDatabase database, ISortParserResult sort)
 {
     this.Database = database;
     this.Sort     = sort;
 }
示例#6
0
 public AddLibraryHierarchyNodeToPlaylist(IDatabase database, IFilterParserResult filter, ISortParserResult sort)
 {
     this.Database = database;
     this.Filter   = filter;
     this.Sort     = sort;
 }