Skip to content

Commit

Permalink
refactor: move GlobalEditorRules to non-generic EditableDumpContainer…
Browse files Browse the repository at this point in the history
… class
  • Loading branch information
rdavisau committed Apr 25, 2019
1 parent eb53c2c commit df9c35e
Showing 1 changed file with 15 additions and 18 deletions.
33 changes: 15 additions & 18 deletions src/DumpEditable/EditableDumpContainer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,7 @@ public partial class EditableDumpContainer<T> : DumpContainer
public Action OnChanged { get; set; }
public Action<T, PropertyInfo, object> OnPropertyValueChanged { get; set; }
public IDisposable KeepRunningToken { get; private set; }

public static void AddGlobalEditorRule(EditorRule rule)
=> GlobalEditorRules.Insert(0, rule);


public void AddChangeHandler<U>(Expression<Func<T, U>> selector,
Action<T, U> onChangedAction)
{
Expand Down Expand Up @@ -136,7 +133,7 @@ private object GetDynamicEditorTypeForObject(object input, List<PropertyEditor>

private object GetPropertyEditor(object o, PropertyInfo p)
{
var allRules = Enumerable.Concat(_editorRules, GlobalEditorRules);
var allRules = Enumerable.Concat(_editorRules, EditableDumpContainer.GlobalEditorRules);

foreach (var editor in allRules)
if (editor.Match(o, p))
Expand All @@ -158,9 +155,20 @@ private object GetPropertyEditor(object o, PropertyInfo p)
}
}

public partial class EditableDumpContainer<T>
public static class EditableDumpContainer
{
private static readonly List<EditorRule> GlobalEditorRules = GetDefaultEditors();
public static readonly CompositeDisposable KeepRunningTokens = new CompositeDisposable();
public static DumpEditableOptions DefaultOptions = DumpEditableOptions.Defaults;
public static EditableDumpContainer<T> For<T>(T obj, bool failSilently = false)
=> new EditableDumpContainer<T>(obj, failSilently);

public static EditableDumpContainer<T> ForEnumerable<T>(IEnumerable<T> obj, bool failSilently = false)
=> new EditableDumpContainer<T>(obj, failSilently);

public static void AddGlobalEditorRule(EditorRule rule)
=> GlobalEditorRules.Insert(0, rule);

internal static readonly List<EditorRule> GlobalEditorRules = GetDefaultEditors();
private static List<EditorRule> GetDefaultEditors() =>
new List<EditorRule>
{
Expand All @@ -186,17 +194,6 @@ public partial class EditableDumpContainer<T>
EditorRule.ForTypeWithStringBasedEditor<sbyte>(sbyte.TryParse),
EditorRule.ForTypeWithStringBasedEditor<char>(char.TryParse),
};
}

public static class EditableDumpContainer
{
public static readonly CompositeDisposable KeepRunningTokens = new CompositeDisposable();
public static DumpEditableOptions DefaultOptions = DumpEditableOptions.Defaults;

public static EditableDumpContainer<T> For<T>(T obj, bool failSilently = false)
=> new EditableDumpContainer<T>(obj, failSilently);

public static EditableDumpContainer<T> ForEnumerable<T>(IEnumerable<T> obj, bool failSilently = false)
=> new EditableDumpContainer<T>(obj, failSilently);
}
}

0 comments on commit df9c35e

Please sign in to comment.