diff options
author | redmatrix <git@macgirvin.com> | 2016-05-10 17:26:44 -0700 |
---|---|---|
committer | redmatrix <git@macgirvin.com> | 2016-05-10 17:26:44 -0700 |
commit | 0b02a6d123b2014705998c94ddf3d460948d3eac (patch) | |
tree | 78ff2cab9944a4f5ab3f80ec93cbe1120de90bb2 /vendor/sabre/xml/lib/ContextStackTrait.php | |
parent | 40b5b6e9d2da7ab65c8b4d38cdceac83a4d78deb (diff) | |
download | volse-hubzilla-0b02a6d123b2014705998c94ddf3d460948d3eac.tar.gz volse-hubzilla-0b02a6d123b2014705998c94ddf3d460948d3eac.tar.bz2 volse-hubzilla-0b02a6d123b2014705998c94ddf3d460948d3eac.zip |
initial sabre upgrade (needs lots of work - to wit: authentication, redo the browser interface, and rework event export/import)
Diffstat (limited to 'vendor/sabre/xml/lib/ContextStackTrait.php')
-rw-r--r-- | vendor/sabre/xml/lib/ContextStackTrait.php | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/vendor/sabre/xml/lib/ContextStackTrait.php b/vendor/sabre/xml/lib/ContextStackTrait.php new file mode 100644 index 000000000..ee3a3baca --- /dev/null +++ b/vendor/sabre/xml/lib/ContextStackTrait.php @@ -0,0 +1,123 @@ +<?php + +namespace Sabre\Xml; + +/** + * Context Stack + * + * The Context maintains information about a document during either reading or + * writing. + * + * During this process, it may be neccesary to override this context + * information. + * + * This trait allows easy access to the context, and allows the end-user to + * override its settings for document fragments, and easily restore it again + * later. + * + * @copyright Copyright (C) 2009-2015 fruux GmbH (https://fruux.com/). + * @author Evert Pot (http://evertpot.com/) + * @license http://sabre.io/license/ Modified BSD License + */ +trait ContextStackTrait { + + /** + * This is the element map. It contains a list of XML elements (in clark + * notation) as keys and PHP class names as values. + * + * The PHP class names must implement Sabre\Xml\Element. + * + * Values may also be a callable. In that case the function will be called + * directly. + * + * @var array + */ + public $elementMap = []; + + /** + * A contextUri pointing to the document being parsed / written. + * This uri may be used to resolve relative urls that may appear in the + * document. + * + * The reader and writer don't use this property, but as it's an extremely + * common use-case for parsing XML documents, it's added here as a + * convenience. + * + * @var string + */ + public $contextUri; + + /** + * This is a list of namespaces that you want to give default prefixes. + * + * You must make sure you create this entire list before starting to write. + * They should be registered on the root element. + * + * @var array + */ + public $namespaceMap = []; + + /** + * This is a list of custom serializers for specific classes. + * + * The writer may use this if you attempt to serialize an object with a + * class that does not implement XmlSerializable. + * + * Instead it will look at this classmap to see if there is a custom + * serializer here. This is useful if you don't want your value objects + * to be responsible for serializing themselves. + * + * The keys in this classmap need to be fully qualified PHP class names, + * the values must be callbacks. The callbacks take two arguments. The + * writer class, and the value that must be written. + * + * function (Writer $writer, object $value) + * + * @var array + */ + public $classMap = []; + + /** + * Backups of previous contexts. + * + * @var array + */ + protected $contextStack = []; + + /** + * Create a new "context". + * + * This allows you to safely modify the elementMap, contextUri or + * namespaceMap. After you're done, you can restore the old data again + * with popContext. + * + * @return null + */ + function pushContext() { + + $this->contextStack[] = [ + $this->elementMap, + $this->contextUri, + $this->namespaceMap, + $this->classMap + ]; + + } + + /** + * Restore the previous "context". + * + * @return null + */ + function popContext() { + + list( + $this->elementMap, + $this->contextUri, + $this->namespaceMap, + $this->classMap + ) = array_pop($this->contextStack); + + } + +} |