JSON Pointer v1.0.0 JSONPointer

Summary

Functions

Ensures that the given list has size number of elements

Escapes a reference token

Retrieves the value indicated by the pointer from the object

Looks up a JSON pointer in an object

Tests if an object has a value for a JSON pointer

Converts a JSON pointer into a list of reference tokens

Removes an attribute of object referenced by pointer

Sets a new value on object at the location described by pointer

Unescapes a reference token

Types

existing :: t
input :: map
removed :: t
t ::
  nil |
  true |
  false |
  list |
  float |
  integer |
  String.t |
  map

Functions

ensure_list_size(list, size)

Specs

ensure_list_size(list, non_neg_integer) :: list

Ensures that the given list has size number of elements

## Examples

iex> JSONPointer.ensure_list_size( [], 2 )
[nil, nil]
escape(str)

Specs

escape(String.t) :: String.t

Escapes a reference token

## Examples

iex> JSONPointer.escape "hello~bla"
"hello~0bla"
iex> JSONPointer.escape "hello/bla"
"hello~1bla"
get(obj, pointer)

Specs

get(input, pointer) :: {:ok, t} | {:error, msg}

Retrieves the value indicated by the pointer from the object

## Examples

iex> JSONPointer.get( %{ "fridge" => %{ "door" => "milk" } }, "/fridge/door" )
{:ok, "milk"}

iex> JSONPointer.get( %{ "contents" => [ "milk", "butter", "eggs" ]}, "/contents/2" )
{:ok, "eggs"} 

iex> JSONPointer.get( %{ "milk" => true, "butter" => false}, "/cornflakes" )
{:error, "token not found: cornflakes"}

iex> JSONPointer.get( %{ "contents" => [ "milk", "butter", "eggs" ]}, "/contents/4" )
{:error, "list index out of bounds: 4"} 
get!(obj, pointer)

Specs

get!(input, pointer) :: {:ok, t} | t

Looks up a JSON pointer in an object

raises an exception if their is an error

## Examples

iex> JSONPointer.get!( %{}, "/fridge/milk" )
** (ArgumentError) json pointer key not found: fridge
has(obj, pointer)

Specs

has(input, pointer) :: boolean

Tests if an object has a value for a JSON pointer

## Examples

iex> JSONPointer.has( %{ "milk" => true, "butter" => false}, "/butter" )
true

iex> JSONPointer.has( %{ "milk" => true, "butter" => false}, "/cornflakes" )
false
parse(pointer)

Specs

parse(pointer) ::
  {:ok, [String.t]} |
  {:error, msg, pointer}

Converts a JSON pointer into a list of reference tokens

## Examples

iex> JSONPointer.parse("/fridge/butter")
{:ok, [ "fridge", "butter"] }
remove(object, pointer)

Specs

remove(input, pointer) ::
  {:ok, t, removed} |
  {:error, msg}

Removes an attribute of object referenced by pointer

## Examples

iex> JSONPointer.remove( %{"fridge" => %{ "milk" => true, "butter" => true}}, "/fridge/butter" )
{:ok, %{"fridge" => %{"milk"=>true}}, true }

iex> JSONPointer.remove( %{"fridge" => %{ "milk" => true, "butter" => true}}, "/fridge/sandwich" )
{:error, "json pointer key not found: sandwich", %{ "butter" => true, "milk" => true}}
set(object, pointer, value)

Specs

set(input, pointer, t) ::
  {:ok, t, existing} |
  {:error, msg}

Sets a new value on object at the location described by pointer

## Examples

iex> JSONPointer.set( %{}, "/example/msg", "hello")
{:ok, %{ "example" => %{ "msg" => "hello" }}, nil }

iex> JSONPointer.set( %{}, "/fridge/contents/1", "milk" )
{:ok, %{"fridge" => %{"contents" => [nil, "milk"]}}, nil }

iex> JSONPointer.set( %{"milk"=>"full"}, "/milk", "empty")
{:ok, %{"milk" => "empty"}, "full"}
unescape(str)

Specs

unescape(String.t) :: String.t

Unescapes a reference token

## Examples

iex> JSONPointer.unescape "hello~0bla"
"hello~bla"
iex> JSONPointer.unescape "hello~1bla"
"hello/bla"