diff --git a/Pepperdash Core/Pepperdash Core/JsonToSimpl/JsonToSimplArrayLookupChild.cs b/Pepperdash Core/Pepperdash Core/JsonToSimpl/JsonToSimplArrayLookupChild.cs
index c63ab4d..56ef04a 100644
--- a/Pepperdash Core/Pepperdash Core/JsonToSimpl/JsonToSimplArrayLookupChild.cs
+++ b/Pepperdash Core/Pepperdash Core/JsonToSimpl/JsonToSimplArrayLookupChild.cs
@@ -11,8 +11,7 @@ namespace PepperDash.Core.JsonToSimpl
public class JsonToSimplArrayLookupChild : JsonToSimplChildObjectBase
{
public string SearchPropertyName { get; set; }
- public string SearchPropertyValue { get; set; }
- public string AppendToPathPrefix { get; set; }
+ public string SearchPropertyValue { get; set; }
int ArrayIndex;
@@ -46,11 +45,12 @@ namespace PepperDash.Core.JsonToSimpl
///
public void InitializeWithAppend(string file, string key, string pathPrefix, string pathAppend,
string pathSuffix, string searchPropertyName, string searchPropertyValue)
- {
- base.Initialize(file, key, pathPrefix, pathSuffix);
+ {
+ string pathPrefixWithAppend = (pathPrefix != null ? pathPrefix : "") + GetPathAppend(pathAppend);
+ base.Initialize(file, key, pathPrefixWithAppend, pathSuffix);
+
SearchPropertyName = searchPropertyName;
- SearchPropertyValue = searchPropertyValue;
- AppendToPathPrefix = pathAppend;
+ SearchPropertyValue = searchPropertyValue;
}
@@ -63,11 +63,10 @@ namespace PepperDash.Core.JsonToSimpl
///
protected override string GetFullPath(string path)
{
- return string.Format("{0}[{1}]{2}.{3}{4}",
- PathPrefix == null ? "" : PathPrefix,
- ArrayIndex,
- GetPathAppend(),
- path,
+ return string.Format("{0}[{1}].{2}{3}",
+ PathPrefix == null ? "" : PathPrefix,
+ ArrayIndex,
+ path,
PathSuffix == null ? "" : PathSuffix);
}
@@ -81,9 +80,8 @@ namespace PepperDash.Core.JsonToSimpl
/// Provides the path append for GetFullPath
///
///
- string GetPathAppend()
+ string GetPathAppend(string a)
{
- var a = AppendToPathPrefix;
if (string.IsNullOrEmpty(a))
{
return "";
@@ -109,42 +107,45 @@ namespace PepperDash.Core.JsonToSimpl
if (Master.JsonObject == null)
throw new InvalidOperationException("Cannot do operations before master JSON has read");
if (PathPrefix == null)
- throw new InvalidOperationException("Cannot do operations before PathPrefix is set");
-
- var token = Master.JsonObject.SelectToken(PathPrefix);
- if (token is JArray)
- {
- var array = token as JArray;
- try
- {
- var item = array.FirstOrDefault(o =>
- {
- var prop = o[SearchPropertyName];
- return prop != null && prop.Value()
- .Equals(SearchPropertyValue, StringComparison.OrdinalIgnoreCase);
- });
- if (item == null)
- {
- Debug.Console(1, "JSON Child[{0}] Array '{1}' '{2}={3}' not found: ", Key,
- PathPrefix, SearchPropertyName, SearchPropertyValue);
- this.LinkedToObject = false;
- return false;
- }
-
- this.LinkedToObject = true;
- ArrayIndex = array.IndexOf(item);
- OnStringChange(GetFullPath(""), 0, JsonToSimplConstants.FullPathToArrayChange);
- Debug.Console(1, "JSON Child[{0}] Found array match at index {1}", Key, ArrayIndex);
- return true;
- }
- catch (Exception e)
- {
- Debug.Console(1, "JSON Child[{0}] Array '{1}' lookup error: '{2}={3}'\r{4}", Key,
- PathPrefix, SearchPropertyName, SearchPropertyValue, e);
- }
+ throw new InvalidOperationException("Cannot do operations before PathPrefix is set");
+
+
+ var token = Master.JsonObject.SelectToken(PathPrefix);
+ if (token is JArray)
+ {
+ var array = token as JArray;
+ try
+ {
+ var item = array.FirstOrDefault(o =>
+ {
+ var prop = o[SearchPropertyName];
+ return prop != null && prop.Value()
+ .Equals(SearchPropertyValue, StringComparison.OrdinalIgnoreCase);
+ });
+ if (item == null)
+ {
+ Debug.Console(1, "JSON Child[{0}] Array '{1}' '{2}={3}' not found: ", Key,
+ PathPrefix, SearchPropertyName, SearchPropertyValue);
+ this.LinkedToObject = false;
+ return false;
+ }
+
+ this.LinkedToObject = true;
+ ArrayIndex = array.IndexOf(item);
+ OnStringChange(string.Format("{0}[{1}]", PathPrefix, ArrayIndex), 0, JsonToSimplConstants.FullPathToArrayChange);
+ Debug.Console(1, "JSON Child[{0}] Found array match at index {1}", Key, ArrayIndex);
+ return true;
+ }
+ catch (Exception e)
+ {
+ Debug.Console(1, "JSON Child[{0}] Array '{1}' lookup error: '{2}={3}'\r{4}", Key,
+ PathPrefix, SearchPropertyName, SearchPropertyValue, e);
+ }
+ }
+ else
+ {
+ Debug.Console(1, "JSON Child[{0}] Path '{1}' is not an array", Key, PathPrefix);
}
- else
- Debug.Console(1, "JSON Child[{0}] Path '{1}' is not an array", Key, PathPrefix);
return false;
}
diff --git a/Pepperdash Core/Pepperdash Core/JsonToSimpl/JsonToSimplChildObjectBase.cs b/Pepperdash Core/Pepperdash Core/JsonToSimpl/JsonToSimplChildObjectBase.cs
index cbed005..ec855f9 100644
--- a/Pepperdash Core/Pepperdash Core/JsonToSimpl/JsonToSimplChildObjectBase.cs
+++ b/Pepperdash Core/Pepperdash Core/JsonToSimpl/JsonToSimplChildObjectBase.cs
@@ -28,7 +28,7 @@ namespace PepperDash.Core.JsonToSimpl
/// This will be prepended to all paths to allow path swapping or for more organized
/// sub-paths
///
- public string PathPrefix { get; protected set; }
+ public string PathPrefix { get; protected set; }
///
/// This is added to the end of all paths
@@ -285,7 +285,7 @@ namespace PepperDash.Core.JsonToSimpl
protected virtual string GetFullPath(string path)
{
return (PathPrefix != null ? PathPrefix : "") +
- path + (PathSuffix != null ? PathSuffix : "");
+ path + (PathSuffix != null ? PathSuffix : "");
}
// Helpers for events