summaryrefslogtreecommitdiff
path: root/server/vendor/php-opencloud/common/src/Common/JsonPath.php
diff options
context:
space:
mode:
authorEole <EoleDev@outlook.fr>2016-04-27 16:42:28 +0200
committerEole <EoleDev@outlook.fr>2016-04-27 16:42:28 +0200
commit49f416dc5061032e0514ea0cfeceaca37d13e432 (patch)
tree1202ac2a6fa860b8929afdc886c94fc50bd0a1de /server/vendor/php-opencloud/common/src/Common/JsonPath.php
parentc7edd70b5e5b0f5159c78ce3d924d4e7f60db816 (diff)
parentc9202d9113210981ae47df40511645da2ee140df (diff)
Merge branch 'develop' into Eole_Graph
Conflicts: client/index.html client/js/controllers/home/home.js client/partials/home/home.html
Diffstat (limited to 'server/vendor/php-opencloud/common/src/Common/JsonPath.php')
-rw-r--r--server/vendor/php-opencloud/common/src/Common/JsonPath.php119
1 files changed, 0 insertions, 119 deletions
diff --git a/server/vendor/php-opencloud/common/src/Common/JsonPath.php b/server/vendor/php-opencloud/common/src/Common/JsonPath.php
deleted file mode 100644
index 0a6372e..0000000
--- a/server/vendor/php-opencloud/common/src/Common/JsonPath.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-
-namespace OpenCloud\Common;
-
-/**
- * This class allows arbitrary data structures to be inserted into, and extracted from, deep arrays
- * and JSON-serialized strings. Say, for example, that you have this array as an input:
- *
- * <pre><code>['foo' => ['bar' => ['baz' => 'some_value']]]</code></pre>
- *
- * and you wanted to insert or extract an element. Usually, you would use:
- *
- * <pre><code>$array['foo']['bar']['baz'] = 'new_value';</code></pre>
- *
- * but sometimes you do not have access to the variable - so a string representation is needed. Using
- * XPath-like syntax, this class allows you to do this:
- *
- * <pre><code>$jsonPath = new JsonPath($array);
- * $jsonPath->set('foo.bar.baz', 'new_value');
- * $val = $jsonPath->get('foo.bar.baz');
- * </code></pre>
- *
- * @package OpenCloud\Common
- */
-class JsonPath
-{
- /** @var array */
- private $jsonStructure;
-
- /**
- * @param $structure The initial data structure to extract from and insert into. Typically this will be a
- * multidimensional associative array; but well-formed JSON strings are also acceptable.
- */
- public function __construct($structure)
- {
- $this->jsonStructure = is_string($structure) ? json_decode($structure, true) : $structure;
- }
-
- /**
- * Set a node in the structure
- *
- * @param $path The XPath to use
- * @param $value The new value of the node
- */
- public function set($path, $value)
- {
- $this->jsonStructure = $this->setPath($path, $value, $this->jsonStructure);
- }
-
- /**
- * Internal method for recursive calls.
- *
- * @param $path
- * @param $value
- * @param $json
- * @return mixed
- */
- private function setPath($path, $value, $json)
- {
- $nodes = explode('.', $path);
- $point = array_shift($nodes);
-
- if (!isset($json[$point])) {
- $json[$point] = [];
- }
-
- if (!empty($nodes)) {
- $json[$point] = $this->setPath(implode('.', $nodes), $value, $json[$point]);
- } else {
- $json[$point] = $value;
- }
-
- return $json;
- }
-
- /**
- * Return the updated structure.
- *
- * @return mixed
- */
- public function getStructure()
- {
- return $this->jsonStructure;
- }
-
- /**
- * Get a path's value. If no path can be matched, NULL is returned.
- *
- * @param $path
- * @return mixed|null
- */
- public function get($path)
- {
- return $this->getPath($path, $this->jsonStructure);
- }
-
- /**
- * Internal method for recursion.
- *
- * @param $path
- * @param $json
- * @return null
- */
- private function getPath($path, $json)
- {
- $nodes = explode('.', $path);
- $point = array_shift($nodes);
-
- if (!isset($json[$point])) {
- return null;
- }
-
- if (empty($nodes)) {
- return $json[$point];
- } else {
- return $this->getPath(implode('.', $nodes), $json[$point]);
- }
- }
-}