Skip to content

Commit 2021e49

Browse files
committed
Style fixups
1 parent 330117a commit 2021e49

6 files changed

Lines changed: 70 additions & 124 deletions

ReactiveUI.Tests/ObservedChangedMixinTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ public void BindToIsNotFooledByIntermediateObjectSwitching()
148148
var input = new ScheduledSubject<string>(sched);
149149
var fixture = new HostTestFixture() {Child = new TestFixture()};
150150

151-
var subscription = input.BindTo(fixture, x => x.Child.IsNotNullString);
151+
input.BindTo(fixture, x => x.Child.IsNotNullString);
152152

153153
Assert.Null(fixture.Child.IsNotNullString);
154154

@@ -183,7 +183,7 @@ public void BindToStackOverFlowTest()
183183

184184
var source = new BehaviorSubject<List<string>>(new List<string>());
185185

186-
source.BindTo(fixturea,x=>x.StackOverflowTrigger);
186+
source.BindTo(fixturea, x => x.StackOverflowTrigger);
187187
});
188188

189189
}

ReactiveUI.Tests/ReactiveNotifyPropertyChangedMixinTest.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -437,10 +437,7 @@ public void WhenAnyThroughAViewShouldntGiveNullValues()
437437
Assert.Equal(0, output.Count);
438438
Assert.Null(fixture.ViewModel);
439439

440-
fixture.WhenAny(x => x.ViewModel.Child.IsNotNullString, x => x.Value).Subscribe(x =>
441-
{
442-
output.Add(x);
443-
});
440+
fixture.WhenAny(x => x.ViewModel.Child.IsNotNullString, x => x.Value).Subscribe(output.Add);
444441

445442
fixture.ViewModel = vm;
446443
Assert.Equal(1, output.Count);

ReactiveUI.Tests/ReactiveObjectTest.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,7 @@ public void ReactiveObjectShouldntSerializeAnythingExtra()
9595
string json = JSONHelper.Serialize(fixture);
9696

9797
// Should look something like:
98-
// {"TestCollection":[],"_IsNotNullString":"Foo","_IsOnlyOneWord":"Baz","_PocoProperty":null,"_UsesExprRaiseSet":null}
99-
//"{"TestCollection":[],"_IsNotNullString":"Foo","_IsOnlyOneWord":"Baz","_PocoProperty":null,"_StackOverflowTrigger":null,"_UsesExprRaiseSet":null}"
98+
// "{"TestCollection":[],"_IsNotNullString":"Foo","_IsOnlyOneWord":"Baz","_PocoProperty":null,"_StackOverflowTrigger":null,"_UsesExprRaiseSet":null}"
10099
Assert.True(json.Count(x => x == ',') == 5);
101100
Assert.True(json.Count(x => x == ':') == 6);
102101
Assert.True(json.Count(x => x == '"') == 16);

ReactiveUI/PropertyBinding.cs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -505,23 +505,16 @@ public static IDisposable BindTo<TTarget, TValue>(
505505
Expression<Func<TTarget, TValue>> property,
506506
Func<TValue> fallbackValue = null)
507507
{
508-
509508
var pn = Reflection.ExpressionToPropertyNames(property);
510509
var bn = pn.Take(pn.Length - 1);
511510

512511
var lastValue = default(TValue);
513512

514-
var o = ReactiveNotifyPropertyChangedMixin
515-
.SubscribeToExpressionChain<TTarget, object>
516-
(target
517-
, bn
518-
, false
519-
, true)
513+
var o = target.SubscribeToExpressionChain<TTarget, object>(bn, false, true)
520514
.Select(x => lastValue);
521515

522516
return Observable.Merge(o, This)
523-
.Subscribe(x =>
524-
{
517+
.Subscribe(x => {
525518
lastValue = x;
526519
Reflection.SetValueToPropertyChain(target, pn, x);
527520
});

ReactiveUI/ReactiveNotifyPropertyChangedMixin.cs

Lines changed: 29 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,7 @@ public static IObservable<IObservedChange<TSender, TValue>> ObservableForPropert
5959
This,
6060
propertyNames,
6161
beforeChange,
62-
skipInitial
63-
);
62+
skipInitial);
6463
}
6564

6665
/// <summary>
@@ -83,8 +82,6 @@ public static IObservable<IObservedChange<TSender, object>> ObservableForPropert
8382
bool skipInitial = true)
8483
{
8584
var propertyNames = new LinkedList<string>(property);
86-
var subscriptions = new LinkedList<IDisposable>(propertyNames.Select(x => (IDisposable) null));
87-
var ret = new Subject<IObservedChange<TSender, object>>();
8885

8986
if (This == null) {
9087
throw new ArgumentNullException("Sender");
@@ -109,37 +106,33 @@ public static IObservable<IObservedChange<TSender, object>> ObservableForPropert
109106
This,
110107
propertyNames,
111108
beforeChange,
112-
skipInitial
113-
);
114-
109+
skipInitial);
115110
}
116111

117112

118-
private static IObservedChange<object, object>
119-
observedChangeFor(string propertyName, IObservedChange<object, object> sourceChange)
113+
static IObservedChange<object, object> observedChangeFor(string propertyName, IObservedChange<object, object> sourceChange)
120114
{
121-
var p = new ObservedChange<object, object>()
122-
{ Sender = sourceChange.Value
123-
, PropertyName = propertyName
115+
var p = new ObservedChange<object, object>() {
116+
Sender = sourceChange.Value,
117+
PropertyName = propertyName,
124118
};
125119

126-
if (sourceChange.Value==null)
127-
{
120+
if (sourceChange.Value == null) {
128121
return p;
129122
}
130123

131124
return p.fillInValue();
132125
}
133126

134-
private static IObservable<IObservedChange<object, object>>
135-
nestedObservedChanges(string propertyName, IObservedChange<object, object> sourceChange, bool beforeChange)
127+
static IObservable<IObservedChange<object, object>> nestedObservedChanges(string propertyName, IObservedChange<object, object> sourceChange, bool beforeChange)
136128
{
137129
// Make sure a change at a root node propogates events down
138130
var kicker = observedChangeFor(propertyName, sourceChange);
139131

140132
// Handle null values in the chain
141-
if (sourceChange.Value == null)
133+
if (sourceChange.Value == null) {
142134
return Observable.Return(kicker);
135+
}
143136

144137
// Handle non null values in the chain
145138
return notifyForProperty(sourceChange.Value, propertyName, beforeChange)
@@ -148,45 +141,38 @@ private static IObservable<IObservedChange<object, object>>
148141
}
149142

150143
public static IObservable<IObservedChange<TSender, TValue>> SubscribeToExpressionChain<TSender, TValue> (
151-
this TSender source,
152-
IEnumerable<string> propertyNames,
153-
bool beforeChange = false,
154-
bool skipInitial = true
155-
)
144+
this TSender source,
145+
IEnumerable<string> propertyNames,
146+
bool beforeChange = false,
147+
bool skipInitial = true)
156148
{
157149
var path = String.Join(".", propertyNames);
158150

159-
IObservable<IObservedChange<object, object>> notifier
160-
= Observable.Return
161-
(new ObservedChange<object, object>()
162-
{ Value = source });
151+
IObservable<IObservedChange<object, object>> notifier =
152+
Observable.Return(new ObservedChange<object, object>() { Value = source });
163153

164-
notifier = propertyNames.Aggregate(notifier, (n, name) => n
165-
.Select(y => nestedObservedChanges(name, y, beforeChange))
166-
.Switch());
154+
notifier = propertyNames.Aggregate(notifier,
155+
(n, name) => n
156+
.Select(y => nestedObservedChanges(name, y, beforeChange))
157+
.Switch());
167158

168-
if (skipInitial)
159+
if (skipInitial) {
169160
notifier = notifier.Skip(1);
161+
}
170162

171163
notifier = notifier.Where(x => x.Sender != null);
172164

173-
var r = notifier.Select(x => x.fillInValue())
174-
.Select(x => new ObservedChange<TSender, TValue>()
175-
{
176-
Sender = source
177-
,
178-
PropertyName = path
179-
,
180-
Value = (TValue)x.Value
165+
var r = notifier
166+
.Select(x => x.fillInValue())
167+
.Select(x => new ObservedChange<TSender, TValue>() {
168+
Sender = source,
169+
PropertyName = path,
170+
Value = (TValue)x.Value,
181171
});
182172

183-
184173
return r.DistinctUntilChanged(x=>x.Value);
185174
}
186175

187-
188-
189-
190176
static readonly MemoizingMRUCache<Tuple<Type, bool>, ICreatesObservableForProperty> notifyFactoryCache =
191177
new MemoizingMRUCache<Tuple<Type, bool>, ICreatesObservableForProperty>((t, _) => {
192178
return RxApp.GetAllServices<ICreatesObservableForProperty>()
@@ -212,22 +198,6 @@ static IObservable<IObservedChange<object, object>> notifyForProperty(object sen
212198
return result.GetNotificationForProperty(sender, propertyName, beforeChange);
213199
}
214200

215-
static string buildPropPathFromNodePtr(LinkedListNode<string> node)
216-
{
217-
var ret = new StringBuilder();
218-
var current = node;
219-
220-
while(current.Next != null) {
221-
ret.Append(current.Value);
222-
ret.Append('.');
223-
current = current.Next;
224-
}
225-
226-
ret.Append(current.Value);
227-
return ret.ToString();
228-
}
229-
230-
231201
/// <summary>
232202
/// ObservableForProperty returns an Observable representing the
233203
/// property change notifications for a specific property on a
@@ -289,4 +259,4 @@ public static IObservable<TRet> WhenAny<TSender, T1, T2, TRet>(this TSender This
289259
}
290260
}
291261

292-
// vim: tw=120 ts=4 sw=4 et :
262+
// vim: tw=120 ts=4 sw=4 et :

ReactiveUI/VariadicTemplates_WP7.tt

Lines changed: 35 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ int maxFuncLength = 4;
2323

2424
namespace ReactiveUI
2525
{
26-
public static class WhenAnyMixin
27-
{
28-
<# for(int length=1; length <= maxFuncLength; length++) { #>
29-
<# var templParams = Enumerable.Range(1, length).Select(x => "T" + x.ToString()); #>
30-
<# string selectorTypeParams = String.Join(", ", templParams.Select(x => String.Format("IObservedChange<TSender, {0}>", x))); #>
31-
<# string dynamicSelectorTypeParams = String.Join(", ", templParams.Select(x => "IObservedChange<TSender, object>")); #>
32-
<# string selectorCall = "selector(" + String.Join(", ", Enumerable.Range(1, length).Select(x => "islot" + x.ToString())) + ")"; #>
26+
public static class WhenAnyMixin
27+
{
28+
<# for(int length=1; length <= maxFuncLength; length++) { #>
29+
<# var templParams = Enumerable.Range(1, length).Select(x => "T" + x.ToString()); #>
30+
<# string selectorTypeParams = String.Join(", ", templParams.Select(x => String.Format("IObservedChange<TSender, {0}>", x))); #>
31+
<# string dynamicSelectorTypeParams = String.Join(", ", templParams.Select(x => "IObservedChange<TSender, object>")); #>
32+
<# string selectorCall = "selector(" + String.Join(", ", Enumerable.Range(1, length).Select(x => "islot" + x.ToString())) + ")"; #>
3333

3434
/// <summary>
3535
/// WhenAny allows you to observe whenever one or more properties on an
@@ -39,30 +39,21 @@ namespace ReactiveUI
3939
/// initial setup.
4040
/// </summary>
4141
public static IObservable<TRet> WhenAny<TSender, TRet, <#= String.Join(",", templParams) #>>(this TSender This,
42-
<# for(int i=1; i <= length; i++) { #>
42+
<# for(int i=1; i <= length; i++) { #>
4343
Expression<Func<TSender, T<#=i#>>> property<#=i#>,
44-
<# } #>
44+
<# } #>
4545
Func<<#= selectorTypeParams #>, TRet> selector)
4646
{
47-
bool allInputsWorked = true;
48-
<# for(int i=1; i <= length; i++) { #>
49-
var slot<#=i#> = new ObservedChange<TSender, T<#=i#>>() {
50-
Sender = This,
51-
PropertyName = String.Join(".", Reflection.ExpressionToPropertyNames(property<#=i#>)),
52-
};
53-
T<#=i#> slot<#=i#>Value = default(T<#=i#>); allInputsWorked &= slot<#=i#>.TryGetValue(out slot<#=i#>Value); slot<#=i#>.Value = slot<#=i#>Value;
54-
IObservedChange<TSender, T<#=i#>> islot<#=i#> = slot<#=i#>;
55-
<# } #>
56-
57-
return Observable.Create<TRet>(subject => {
58-
if (allInputsWorked) subject.OnNext(<#= selectorCall #>);
59-
60-
return Observable.Merge(<# for(int i=1; i <= length; i++) { #>
61-
62-
This.ObservableForProperty(property<#=i#>).Do(x => { lock (slot<#=i#>) { islot<#=i#> = x.fillInValue(); } }).Select(x => <#= selectorCall #>)<#= (i==length?"":",") #> <# } #>
63-
64-
).Subscribe(subject);
65-
});
47+
<# if (length == 1){ #>
48+
return This.ObservableForProperty(property<#=1#>, beforeChange:false, skipInitial:false).Select(selector);
49+
<# }else{ #>
50+
return Observable.CombineLatest(
51+
<# for(int i=1; i <= length; i++) { #>
52+
This.ObservableForProperty(property<#=i#>, beforeChange: false, skipInitial:false),
53+
<# } #>
54+
selector
55+
);
56+
<# } #>
6657
}
6758

6859
/// <summary>
@@ -73,29 +64,25 @@ namespace ReactiveUI
7364
/// initial setup.
7465
/// </summary>
7566
public static IObservable<TRet> WhenAnyDynamic<TSender, TRet>(this TSender This,
76-
<# for(int i=1; i <= length; i++) { #>
67+
<# for(int i=1; i <= length; i++) { #>
7768
string[] property<#=i#>,
78-
<# } #>
69+
<# } #>
7970
Func<<#= dynamicSelectorTypeParams #>, TRet> selector)
8071
{
81-
<# for(int i=1; i <= length; i++) { #>
82-
var slot<#=i#> = new ObservedChange<TSender, object>() {
83-
Sender = This,
84-
PropertyName = String.Join(".", property<#=i#>),
85-
};
86-
object slot<#=i#>Value = default(object); slot<#=i#>.TryGetValue(out slot<#=i#>Value); slot<#=i#>.Value = slot<#=i#>Value;
87-
IObservedChange<TSender, object> islot<#=i#> = slot<#=i#>;
88-
<# } #>
89-
90-
return Observable.Create<TRet>(subject => {
91-
subject.OnNext(<#= selectorCall #>);
92-
93-
return Observable.Merge(<# for(int i=1; i <= length; i++) { #>
94-
This.ObservableForProperty(property<#=i#>).Do(x => { lock (slot<#=i#>) { islot<#=i#> = x.fillInValue(); } }).Select(x => <#= selectorCall #>)<#= (i==length?"":",") #> <# } #>
95-
).Subscribe(subject);
96-
});
72+
<# if (length == 1){ #>
73+
return ReactiveNotifyPropertyChangedMixin
74+
.SubscribeToExpressionChain<TSender,object>(This, property<#=1#>, beforeChange:false, skipInitial:false).Select(selector);
75+
<# }else{ #>
76+
return Observable.CombineLatest(
77+
<# for(int i=1; i <= length; i++) { #>
78+
ReactiveNotifyPropertyChangedMixin
79+
.SubscribeToExpressionChain<TSender,object>(This, property<#=i#>, beforeChange: false, skipInitial:false),
80+
<# } #>
81+
selector
82+
);
83+
<# } #>
9784
}
9885

99-
<# } #>
100-
}
86+
<# } #>
87+
}
10188
}

0 commit comments

Comments
 (0)