From b6c51b34effb17629e94df89f4b4b0a6902e0767 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 10 Oct 2016 22:48:21 +0200 Subject: [PATCH] Renamed ValueHandler -> StreamPlugin --- .../Avalonia.Markup/Avalonia.Markup.csproj | 6 +++--- .../Avalonia.Markup/Data/ExpressionObserver.cs | 12 ++++++------ .../{IValuePlugin.cs => IStreamPlugin.cs} | 4 ++-- ...aluePlugin.cs => ObservableStreamPlugin.cs} | 18 +++--------------- ...{TaskValuePlugin.cs => TaskStreamPlugin.cs} | 4 ++-- src/Markup/Avalonia.Markup/Data/StreamNode.cs | 2 +- 6 files changed, 17 insertions(+), 29 deletions(-) rename src/Markup/Avalonia.Markup/Data/Plugins/{IValuePlugin.cs => IStreamPlugin.cs} (89%) rename src/Markup/Avalonia.Markup/Data/Plugins/{ObservableValuePlugin.cs => ObservableStreamPlugin.cs} (62%) rename src/Markup/Avalonia.Markup/Data/Plugins/{TaskValuePlugin.cs => TaskStreamPlugin.cs} (95%) diff --git a/src/Markup/Avalonia.Markup/Avalonia.Markup.csproj b/src/Markup/Avalonia.Markup/Avalonia.Markup.csproj index d97ab89a09..1c3f453280 100644 --- a/src/Markup/Avalonia.Markup/Avalonia.Markup.csproj +++ b/src/Markup/Avalonia.Markup/Avalonia.Markup.csproj @@ -64,9 +64,9 @@ - - - + + + diff --git a/src/Markup/Avalonia.Markup/Data/ExpressionObserver.cs b/src/Markup/Avalonia.Markup/Data/ExpressionObserver.cs index 90c1aa2894..37226ee74b 100644 --- a/src/Markup/Avalonia.Markup/Data/ExpressionObserver.cs +++ b/src/Markup/Avalonia.Markup/Data/ExpressionObserver.cs @@ -41,14 +41,14 @@ namespace Avalonia.Markup.Data }; /// - /// An ordered collection of value handlers that can be used to customize the handling - /// of certain values. + /// An ordered collection of stream plugins that can be used to customize the behavior + /// of the '^' stream binding operator. /// - public static readonly IList ValueHandlers = - new List + public static readonly IList StreamHandlers = + new List { - new TaskValuePlugin(), - new ObservableValuePlugin(), + new TaskStreamPlugin(), + new ObservableStreamPlugin(), }; private static readonly object UninitializedValue = new object(); diff --git a/src/Markup/Avalonia.Markup/Data/Plugins/IValuePlugin.cs b/src/Markup/Avalonia.Markup/Data/Plugins/IStreamPlugin.cs similarity index 89% rename from src/Markup/Avalonia.Markup/Data/Plugins/IValuePlugin.cs rename to src/Markup/Avalonia.Markup/Data/Plugins/IStreamPlugin.cs index fb285c6d73..efb2e2d93a 100644 --- a/src/Markup/Avalonia.Markup/Data/Plugins/IValuePlugin.cs +++ b/src/Markup/Avalonia.Markup/Data/Plugins/IStreamPlugin.cs @@ -6,9 +6,9 @@ using System; namespace Avalonia.Markup.Data.Plugins { /// - /// Defines how values are observed by an . + /// Defines a plugin that handles the '^' stream binding operator. /// - public interface IValuePlugin + public interface IStreamPlugin { /// /// Checks whether this plugin handles the specified value. diff --git a/src/Markup/Avalonia.Markup/Data/Plugins/ObservableValuePlugin.cs b/src/Markup/Avalonia.Markup/Data/Plugins/ObservableStreamPlugin.cs similarity index 62% rename from src/Markup/Avalonia.Markup/Data/Plugins/ObservableValuePlugin.cs rename to src/Markup/Avalonia.Markup/Data/Plugins/ObservableStreamPlugin.cs index a406fc55b9..a1da42d28f 100644 --- a/src/Markup/Avalonia.Markup/Data/Plugins/ObservableValuePlugin.cs +++ b/src/Markup/Avalonia.Markup/Data/Plugins/ObservableStreamPlugin.cs @@ -2,32 +2,20 @@ // Licensed under the MIT license. See licence.md file in the project root for full license information. using System; -using System.Reactive.Linq; -using System.Reactive.Subjects; -using System.Reflection; -using System.Threading.Tasks; -using System.Windows.Input; -using Avalonia.Data; namespace Avalonia.Markup.Data.Plugins { /// - /// Handles binding to s in an . + /// Handles binding to s for the '^' stream binding operator. /// - public class ObservableValuePlugin : IValuePlugin + public class ObservableStreamPlugin : IStreamPlugin { /// /// Checks whether this plugin handles the specified value. /// /// A weak reference to the value. /// True if the plugin can handle the value; otherwise false. - public virtual bool Match(WeakReference reference) - { - var target = reference.Target; - - // ReactiveCommand is an IObservable but we want to bind to it, not its value. - return target is IObservable && !(target is ICommand); - } + public virtual bool Match(WeakReference reference) => reference.Target is IObservable; /// /// Starts producing output based on the specified value. diff --git a/src/Markup/Avalonia.Markup/Data/Plugins/TaskValuePlugin.cs b/src/Markup/Avalonia.Markup/Data/Plugins/TaskStreamPlugin.cs similarity index 95% rename from src/Markup/Avalonia.Markup/Data/Plugins/TaskValuePlugin.cs rename to src/Markup/Avalonia.Markup/Data/Plugins/TaskStreamPlugin.cs index b6fda67503..d2c8c1b064 100644 --- a/src/Markup/Avalonia.Markup/Data/Plugins/TaskValuePlugin.cs +++ b/src/Markup/Avalonia.Markup/Data/Plugins/TaskStreamPlugin.cs @@ -12,9 +12,9 @@ using Avalonia.Data; namespace Avalonia.Markup.Data.Plugins { /// - /// Handles binding to s in an . + /// Handles binding to s for the '^' stream binding operator. /// - public class TaskValuePlugin : IValuePlugin + public class TaskStreamPlugin : IStreamPlugin { /// /// Checks whether this plugin handles the specified value. diff --git a/src/Markup/Avalonia.Markup/Data/StreamNode.cs b/src/Markup/Avalonia.Markup/Data/StreamNode.cs index 7a5cfe5009..ebcbfc9598 100644 --- a/src/Markup/Avalonia.Markup/Data/StreamNode.cs +++ b/src/Markup/Avalonia.Markup/Data/StreamNode.cs @@ -14,7 +14,7 @@ namespace Avalonia.Markup.Data protected override IObservable StartListeningCore(WeakReference reference) { - foreach (var plugin in ExpressionObserver.ValueHandlers) + foreach (var plugin in ExpressionObserver.StreamHandlers) { if (plugin.Match(reference)) {