/// <summary> /// Parses a string containing a JSON Pointer. /// </summary> /// <param name="source">The source string.</param> /// <returns>A <see cref="JsonPointer"/> instance.</returns> public static JsonPointer Parse(string source) { var pointer = new JsonPointer(); var parts = source.Split('/'); if (parts.Length == 0) { return(pointer); } if (parts[0] == "#") { pointer._usesHash = true; } else { parts = parts.Skip(1).ToArray(); } pointer.AddRange(parts.SkipWhile(s => s == "#").Select(_Unescape)); return(pointer); }
/// <summary> /// Creates a copy of the pointer and appends new segments. /// </summary> /// <param name="append">The segments to append.</param> public JsonPointer CloneAndAppend(params string[] append) { var clone = new JsonPointer(this, Count + append.Length, _usesHash); clone.AddRange(append); return(clone); }
/// <summary> /// Creates a copy of the pointer and appends new segments. /// </summary> /// <param name="append">The segments to append.</param> public JsonPointer CloneAndAppend(params string[] append) { var clone = new JsonPointer(this) { _usesHash = _usesHash }; clone.AddRange(append); return(clone); }