summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwebchick2015-07-22 15:46:53 -0400
committerwebchick2015-07-22 15:46:53 -0400
commite64a4c79cd0c56932cc3927da9eee6c1e0383a39 (patch)
tree7624aa0010fc6b3bdae106332f3991b47b289141
parenta8f8b33e72e26482c40f07024d0988f97b0f3e3a (diff)
Issue #2498599 by Cottser, naveenvalecha, webchick, karolus, cilefen: Remove sdboyer/gliph since it is unused by core
-rw-r--r--core/composer.json1
-rw-r--r--core/composer.lock50
-rw-r--r--core/vendor/composer/autoload_namespaces.php1
-rw-r--r--core/vendor/composer/installed.json50
-rw-r--r--core/vendor/sdboyer/gliph/LICENSE19
-rw-r--r--core/vendor/sdboyer/gliph/README.md52
-rw-r--r--core/vendor/sdboyer/gliph/composer.json24
-rw-r--r--core/vendor/sdboyer/gliph/composer.lock886
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Algorithm/ConnectedComponent.php65
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Exception/InvalidVertexTypeException.php13
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Exception/NonexistentVertexException.php15
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Exception/OutOfRangeException.php8
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Exception/RuntimeException.php8
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Exception/WrongVisitorStateException.php13
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Graph/AdjacencyList.php168
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Graph/DirectedAdjacencyList.php130
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Graph/DirectedGraph.php37
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Graph/Graph.php124
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Graph/MutableDirectedGraph.php25
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Graph/MutableGraph.php56
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Graph/MutableUndirectedGraph.php24
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Graph/UndirectedAdjacencyList.php88
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Traversal/DepthFirst.php136
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Visitor/DepthFirstBasicVisitor.php92
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Visitor/DepthFirstNoOpVisitor.php18
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Visitor/DepthFirstToposortVisitor.php66
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Visitor/DepthFirstVisitorInterface.php13
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Visitor/SimpleStatefulDepthFirstVisitor.php48
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Visitor/StatefulDepthFirstVisitor.php78
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Visitor/StatefulVisitorInterface.php23
-rw-r--r--core/vendor/sdboyer/gliph/src/Gliph/Visitor/TarjanSCCVisitor.php36
31 files changed, 1 insertions, 2366 deletions
diff --git a/core/composer.json b/core/composer.json
index 5313b3a..26938e3 100644
--- a/core/composer.json
+++ b/core/composer.json
@@ -5,7 +5,6 @@
"license": "GPL-2.0+",
"require": {
"php": ">=5.5.9",
- "sdboyer/gliph": "0.1.*",
"symfony/class-loader": "2.7.*",
"symfony/console": "2.7.*",
"symfony/css-selector": "2.7.*",
diff --git a/core/composer.lock b/core/composer.lock
index 3a01db0..676d0bf 100644
--- a/core/composer.lock
+++ b/core/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "34a206d03b9060c6f1b2895c0517792c",
+ "hash": "3708d8fdb54957e5ce661cda1df88353",
"packages": [
{
"name": "behat/mink",
@@ -1638,54 +1638,6 @@
"time": "2012-12-21 11:40:51"
},
{
- "name": "sdboyer/gliph",
- "version": "0.1.8",
- "source": {
- "type": "git",
- "url": "https://github.com/sdboyer/gliph.git",
- "reference": "db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sdboyer/gliph/zipball/db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e",
- "reference": "db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3"
- },
- "require-dev": {
- "phpunit/phpunit": "3.7.*",
- "satooshi/php-coveralls": "0.6.*"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Gliph": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Sam Boyer",
- "email": "tech@samboyer.org"
- }
- ],
- "description": "A graph library for PHP.",
- "homepage": "http://github.com/sdboyer/gliph",
- "keywords": [
- "gliph",
- "graph",
- "library",
- "php",
- "spl"
- ],
- "time": "2014-08-03 14:34:47"
- },
- {
"name": "sebastian/comparator",
"version": "1.1.1",
"source": {
diff --git a/core/vendor/composer/autoload_namespaces.php b/core/vendor/composer/autoload_namespaces.php
index 89ce61c..63f4b70 100644
--- a/core/vendor/composer/autoload_namespaces.php
+++ b/core/vendor/composer/autoload_namespaces.php
@@ -12,7 +12,6 @@ return array(
'Stack' => array($vendorDir . '/stack/builder/src'),
'Psr\\Log\\' => array($vendorDir . '/psr/log'),
'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src'),
- 'Gliph' => array($vendorDir . '/sdboyer/gliph/src'),
'Egulias\\' => array($vendorDir . '/egulias/email-validator/src'),
'EasyRdf_' => array($vendorDir . '/easyrdf/easyrdf/lib'),
'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src'),
diff --git a/core/vendor/composer/installed.json b/core/vendor/composer/installed.json
index cb25fbe..e063543 100644
--- a/core/vendor/composer/installed.json
+++ b/core/vendor/composer/installed.json
@@ -424,56 +424,6 @@
]
},
{
- "name": "sdboyer/gliph",
- "version": "0.1.8",
- "version_normalized": "0.1.8.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sdboyer/gliph.git",
- "reference": "db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sdboyer/gliph/zipball/db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e",
- "reference": "db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3"
- },
- "require-dev": {
- "phpunit/phpunit": "3.7.*",
- "satooshi/php-coveralls": "0.6.*"
- },
- "time": "2014-08-03 14:34:47",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-0": {
- "Gliph": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Sam Boyer",
- "email": "tech@samboyer.org"
- }
- ],
- "description": "A graph library for PHP.",
- "homepage": "http://github.com/sdboyer/gliph",
- "keywords": [
- "gliph",
- "graph",
- "library",
- "php",
- "spl"
- ]
- },
- {
"name": "psr/log",
"version": "1.0.0",
"version_normalized": "1.0.0.0",
diff --git a/core/vendor/sdboyer/gliph/LICENSE b/core/vendor/sdboyer/gliph/LICENSE
deleted file mode 100644
index 0fd36c7..0000000
--- a/core/vendor/sdboyer/gliph/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) Sam Boyer
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/core/vendor/sdboyer/gliph/README.md b/core/vendor/sdboyer/gliph/README.md
deleted file mode 100644
index 73f3629..0000000
--- a/core/vendor/sdboyer/gliph/README.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# Gliph
-
-[![Build Status](https://travis-ci.org/sdboyer/gliph.png?branch=php53)](https://travis-ci.org/sdboyer/gliph)
-[![Latest Stable Version](https://poser.pugx.org/sdboyer/gliph/v/stable.png)](https://packagist.org/packages/sdboyer/gliph)
-[![Coverage Status](https://coveralls.io/repos/sdboyer/gliph/badge.png?branch=php53)](https://coveralls.io/r/sdboyer/gliph?branch=php53)
-
-Gliph is a **g**raph **li**brary for **PH**P. It provides graph building blocks and datastructures for use by other PHP applications. It is (currently) designed for use with in-memory graphs, not for interaction with a graph database like [Neo4J](http://neo4j.org/).
-
-Gliph aims for both sane interfaces and performant implementation - at least, as performant as can be hoped for a PHP graph library. This does require knowing enough about graphs to know what type is appropriate for your use case, but we are aiming to provide helpers that simplify those choices.
-
-## Core Concepts
-
-Gliph has several components that work together: graph classes, algorithms, and visitors. Generally speaking, Gliph is patterned after the [C++ Boost Graph Library](http://www.boost.org/libs/graph/doc); reading their documentation can yield a lot of insight into how Gliph is intended to work.
-
-Note that Gliph is currently written for compatibility with PHP 5.3, but it is intended to port the library to PHP 5.5. The availability of traits, non-scalar keys in iterators, and generators will considerably change and improve both the internal and public-facing implementations.
-
-### Graphs
-
-There are a number of different strategies for representing graphs; these strategies are more or less efficient depending on certain properties the graph, and what needs to be done to the graph. The approach taken in Gliph is to offer a roughly consistent 'Graph' interface that is common to all these different strategies. The strategies will have varying levels of efficiency at meeting this common interface, so it is the responsibility of the user to select a graph implementation that is appropriate for their use case. This approach draws heavily from the [taxonomy of graphs](http://www.boost.org/doc/libs/1_54_0/libs/graph/doc/graph_concepts.html) established by the BGL.
-
-Gliph currently implements only an adjacency list graph strategy, in both directed and undirected flavors. Adjacency lists offer efficient access to out-edges, but inefficient access to in-edges (in a directed graph - in an undirected graph, in-edges and out-edges are the same). Adjacency lists and are generally more space-efficient for sparse graphs.
-
-### Algorithms
-
-Gliph provides various algorithms that can be run on graph objects. These algorithms interact with the graph by making calls to methods defined in the assorted Graph interfaces. If a graph implements the interface type-hinted by a particular algorithm, then the algorithm can run on that graph. But the efficiency of the algorithm will be largely determined by how efficiently that graph implementation can meet the requirements of the interface. Adjacency lists, for example, are not terribly efficient at providing a list of all edges in a graph, but are very good at single-vertex-centric operations.
-
-Gliph's algorithms are typically implemented quite sparsely (especially traversers) - they seek to implement the simplest, most generic version of an algorithm. They also may not return any output, as that work is left to Visitors.
-
-### Visitors
-
-Most algorithms require a visitor object to be provided. The visitor conforms to an interface specified by the algorithm, and the algorithm will call the visitor at certain choice points during its execution. This allows the algorithms to stay highly generic, while visitors can be tailored to a more specific purpose.
-
-For example, a ```DepthFirst``` visitor might be used to calculate vertex reach, or generate a topologically sorted list. Each of these are things that a depth-first graph traversal can do. But the work of doing so is left to the visitor so that only one traversal algorithm is needed, and that algorithm is as cheap (memory and cycles) as possible.
-
-## TODOs
-
-Lots. But, to start with:
-
-- Port to, or provide a parallel implementation in, PHP 5.5. Generators and non-scalar keys from iterators make this all SO much better. In doing that, also shift as much over to traits as possible.
-- Implement a generic breadth-first algorithm and its corresponding visitors.
-- Implement a generic iterative deepening depth-first algorithm, and its corresponding visitors.
-- Implement other popular connected components algorithms, as well as some shortest path algorithms (starting with Dijkstra)
-- Write up some examples showing how to actually use the library.
-- Extend the ```DepthFirst::traverse()``` algorithm and ```DepthFirstVisitorInterface``` to allow the visitor to stop the traversal. useful if, e.g., a search is being performed and the desired vertex has been found.
-
-## Acknowledgements
-
-This library draws heavy inspiration from the [C++ Boost Graph Library](http://www.boost.org/libs/graph/doc).
-
-## License
-
-MIT
diff --git a/core/vendor/sdboyer/gliph/composer.json b/core/vendor/sdboyer/gliph/composer.json
deleted file mode 100644
index 0c8c84f..0000000
--- a/core/vendor/sdboyer/gliph/composer.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "name": "sdboyer/gliph",
- "description": "A graph library for PHP.",
- "license": "MIT",
- "keywords": ["gliph", "library", "php", "spl", "graph"],
- "homepage": "http://github.com/sdboyer/gliph",
- "type": "library",
- "authors": [
- {
- "name": "Sam Boyer",
- "email": "tech@samboyer.org"
- }
- ],
- "require": {
- "php": ">=5.3"
- },
- "require-dev": {
- "satooshi/php-coveralls": "0.6.*",
- "phpunit/phpunit": "3.7.*"
- },
- "autoload": {
- "psr-0": { "Gliph": "src/" }
- }
-}
diff --git a/core/vendor/sdboyer/gliph/composer.lock b/core/vendor/sdboyer/gliph/composer.lock
deleted file mode 100644
index dd00f9d..0000000
--- a/core/vendor/sdboyer/gliph/composer.lock
+++ /dev/null
@@ -1,886 +0,0 @@
-{
- "_readme": [
- "This file locks the dependencies of your project to a known state",
- "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
- ],
- "hash": "3837dc792787c5b77aecfac96337ffc5",
- "packages": [
-
- ],
- "packages-dev": [
- {
- "name": "guzzle/guzzle",
- "version": "v3.7.4",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/guzzle.git",
- "reference": "b170b028c6bb5799640e46c8803015b0f9a45ed9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b170b028c6bb5799640e46c8803015b0f9a45ed9",
- "reference": "b170b028c6bb5799640e46c8803015b0f9a45ed9",
- "shasum": ""
- },
- "require": {
- "ext-curl": "*",
- "php": ">=5.3.3",
- "symfony/event-dispatcher": ">=2.1"
- },
- "replace": {
- "guzzle/batch": "self.version",
- "guzzle/cache": "self.version",
- "guzzle/common": "self.version",
- "guzzle/http": "self.version",
- "guzzle/inflection": "self.version",
- "guzzle/iterator": "self.version",
- "guzzle/log": "self.version",
- "guzzle/parser": "self.version",
- "guzzle/plugin": "self.version",
- "guzzle/plugin-async": "self.version",
- "guzzle/plugin-backoff": "self.version",
- "guzzle/plugin-cache": "self.version",
- "guzzle/plugin-cookie": "self.version",
- "guzzle/plugin-curlauth": "self.version",
- "guzzle/plugin-error-response": "self.version",
- "guzzle/plugin-history": "self.version",
- "guzzle/plugin-log": "self.version",
- "guzzle/plugin-md5": "self.version",
- "guzzle/plugin-mock": "self.version",
- "guzzle/plugin-oauth": "self.version",
- "guzzle/service": "self.version",
- "guzzle/stream": "self.version"
- },
- "require-dev": {
- "doctrine/cache": "*",
- "monolog/monolog": "1.*",
- "phpunit/phpunit": "3.7.*",
- "psr/log": "1.0.*",
- "symfony/class-loader": "*",
- "zendframework/zend-cache": "2.0.*",
- "zendframework/zend-log": "2.0.*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Guzzle\\Tests": "tests/",
- "Guzzle": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Guzzle Community",
- "homepage": "https://github.com/guzzle/guzzle/contributors"
- }
- ],
- "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients",
- "homepage": "http://guzzlephp.org/",
- "keywords": [
- "client",
- "curl",
- "framework",
- "http",
- "http client",
- "rest",
- "web service"
- ],
- "time": "2013-10-02 20:47:00"
- },
- {
- "name": "phpunit/php-code-coverage",
- "version": "1.2.13",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "466e7cd2554b4e264c9e3f31216d25ac0e5f3d94"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/466e7cd2554b4e264c9e3f31216d25ac0e5f3d94",
- "reference": "466e7cd2554b4e264c9e3f31216d25ac0e5f3d94",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "phpunit/php-file-iterator": ">=1.3.0@stable",
- "phpunit/php-text-template": ">=1.1.1@stable",
- "phpunit/php-token-stream": ">=1.1.3@stable"
- },
- "require-dev": {
- "phpunit/phpunit": "3.7.*@dev"
- },
- "suggest": {
- "ext-dom": "*",
- "ext-xdebug": ">=2.0.5"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "PHP/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "include-path": [
- ""
- ],
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
- "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
- "keywords": [
- "coverage",
- "testing",
- "xunit"
- ],
- "time": "2013-09-10 08:14:32"
- },
- {
- "name": "phpunit/php-file-iterator",
- "version": "1.3.3",
- "source": {
- "type": "git",
- "url": "git://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "1.3.3"
- },
- "dist": {
- "type": "zip",
- "url": "https://github.com/sebastianbergmann/php-file-iterator/zipball/1.3.3",
- "reference": "1.3.3",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "File/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "include-path": [
- ""
- ],
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "FilterIterator implementation that filters files based on a list of suffixes.",
- "homepage": "http://www.phpunit.de/",
- "keywords": [
- "filesystem",
- "iterator"
- ],
- "time": "2012-10-11 04:44:38"
- },
- {
- "name": "phpunit/php-text-template",
- "version": "1.1.4",
- "source": {
- "type": "git",
- "url": "git://github.com/sebastianbergmann/php-text-template.git",
- "reference": "1.1.4"
- },
- "dist": {
- "type": "zip",
- "url": "https://github.com/sebastianbergmann/php-text-template/zipball/1.1.4",
- "reference": "1.1.4",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "Text/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "include-path": [
- ""
- ],
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Simple template engine.",
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
- "keywords": [
- "template"
- ],
- "time": "2012-10-31 11:15:28"
- },
- {
- "name": "phpunit/php-timer",
- "version": "1.0.5",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "1.0.5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1.0.5",
- "reference": "1.0.5",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "PHP/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "include-path": [
- ""
- ],
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Utility class for timing",
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
- "keywords": [
- "timer"
- ],
- "time": "2013-08-02 07:42:54"
- },
- {
- "name": "phpunit/php-token-stream",
- "version": "1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "5220af2a7929aa35cf663d97c89ad3d50cf5fa3e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/5220af2a7929aa35cf663d97c89ad3d50cf5fa3e",
- "reference": "5220af2a7929aa35cf663d97c89ad3d50cf5fa3e",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2-dev"
- }
- },
- "autoload": {
- "classmap": [
- "PHP/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "include-path": [
- ""
- ],
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Wrapper around PHP's tokenizer extension.",
- "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
- "keywords": [
- "tokenizer"
- ],
- "time": "2013-09-13 04:58:23"
- },
- {
- "name": "phpunit/phpunit",
- "version": "3.7.27",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "4b024e753e3421837afbcca962c8724c58b39376"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4b024e753e3421837afbcca962c8724c58b39376",
- "reference": "4b024e753e3421837afbcca962c8724c58b39376",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-pcre": "*",
- "ext-reflection": "*",
- "ext-spl": "*",
- "php": ">=5.3.3",
- "phpunit/php-code-coverage": "~1.2.1",
- "phpunit/php-file-iterator": ">=1.3.1",
- "phpunit/php-text-template": ">=1.1.1",
- "phpunit/php-timer": ">=1.0.4",
- "phpunit/phpunit-mock-objects": "~1.2.0",
- "symfony/yaml": "~2.0"
- },
- "require-dev": {
- "pear-pear/pear": "1.9.4"
- },
- "suggest": {
- "ext-json": "*",
- "ext-simplexml": "*",
- "ext-tokenizer": "*",
- "phpunit/php-invoker": ">=1.1.0,<1.2.0"
- },
- "bin": [
- "composer/bin/phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "PHPUnit/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "include-path": [
- "",
- "../../symfony/yaml/"
- ],
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "The PHP Unit Testing framework.",
- "homepage": "http://www.phpunit.de/",
- "keywords": [
- "phpunit",
- "testing",
- "xunit"
- ],
- "time": "2013-09-16 03:09:52"
- },
- {
- "name": "phpunit/phpunit-mock-objects",
- "version": "1.2.3",
- "source": {
- "type": "git",
- "url": "git://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "1.2.3"
- },
- "dist": {
- "type": "zip",
- "url": "https://github.com/sebastianbergmann/phpunit-mock-objects/archive/1.2.3.zip",
- "reference": "1.2.3",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "phpunit/php-text-template": ">=1.1.1@stable"
- },
- "suggest": {
- "ext-soap": "*"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "PHPUnit/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "include-path": [
- ""
- ],
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Mock Object library for PHPUnit",
- "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
- "keywords": [
- "mock",
- "xunit"
- ],
- "time": "2013-01-13 10:24:48"
- },
- {
- "name": "psr/log",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
- "shasum": ""
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Psr\\Log\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for logging libraries",
- "keywords": [
- "log",
- "psr",
- "psr-3"
- ],
- "time": "2012-12-21 11:40:51"
- },
- {
- "name": "satooshi/php-coveralls",
- "version": "v0.6.1",
- "source": {
- "type": "git",
- "url": "https://github.com/satooshi/php-coveralls.git",
- "reference": "dd0df95bd37a7cf5c5c50304dfe260ffe4b50760"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/satooshi/php-coveralls/zipball/dd0df95bd37a7cf5c5c50304dfe260ffe4b50760",
- "reference": "dd0df95bd37a7cf5c5c50304dfe260ffe4b50760",
- "shasum": ""
- },
- "require": {
- "ext-curl": "*",
- "ext-json": "*",
- "ext-simplexml": "*",
- "guzzle/guzzle": ">=3.0",
- "php": ">=5.3",
- "psr/log": "1.0.0",
- "symfony/config": ">=2.0",
- "symfony/console": ">=2.0",
- "symfony/stopwatch": ">=2.2",
- "symfony/yaml": ">=2.0"
- },
- "require-dev": {
- "apigen/apigen": "2.8.*@stable",
- "pdepend/pdepend": "dev-master",
- "phpmd/phpmd": "dev-master",
- "phpunit/php-invoker": ">=1.1.0,<1.2.0",
- "phpunit/phpunit": "3.7.*@stable",
- "sebastian/finder-facade": "dev-master",
- "sebastian/phpcpd": "1.4.*@stable",
- "squizlabs/php_codesniffer": "1.4.*@stable",
- "theseer/fdomdocument": "dev-master"
- },
- "bin": [
- "composer/bin/coveralls"
- ],
- "type": "library",
- "autoload": {
- "psr-0": {
- "Contrib\\Component": "src/",
- "Contrib\\Bundle": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Kitamura Satoshi",
- "email": "with.no.parachute@gmail.com",
- "homepage": "https://www.facebook.com/satooshi.jp"
- }
- ],
- "description": "PHP client library for Coveralls API",
- "homepage": "https://github.com/satooshi/php-coveralls",
- "keywords": [
- "ci",
- "coverage",
- "github",
- "test"
- ],
- "time": "2013-05-04 08:07:33"
- },
- {
- "name": "symfony/config",
- "version": "v2.3.5",
- "target-dir": "Symfony/Component/Config",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/Config.git",
- "reference": "1ced3d6c88b22df8cd1fe5209dbd6a89df362a29"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/Config/zipball/1ced3d6c88b22df8cd1fe5209dbd6a89df362a29",
- "reference": "1ced3d6c88b22df8cd1fe5209dbd6a89df362a29",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "symfony/filesystem": "~2.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Config\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- }
- ],
- "description": "Symfony Config Component",
- "homepage": "http://symfony.com",
- "time": "2013-09-19 09:45:20"
- },
- {
- "name": "symfony/console",
- "version": "v2.3.5",
- "target-dir": "Symfony/Component/Console",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/Console.git",
- "reference": "f880062d56edefb25b36f2defa65aafe65959dc7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/Console/zipball/f880062d56edefb25b36f2defa65aafe65959dc7",
- "reference": "f880062d56edefb25b36f2defa65aafe65959dc7",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "symfony/event-dispatcher": "~2.1"
- },
- "suggest": {
- "symfony/event-dispatcher": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Console\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- }
- ],
- "description": "Symfony Console Component",
- "homepage": "http://symfony.com",
- "time": "2013-09-25 06:04:15"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "v2.3.5",
- "target-dir": "Symfony/Component/EventDispatcher",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/EventDispatcher.git",
- "reference": "7fc72a7a346a1887d3968cc1ce5642a15cd182e9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/7fc72a7a346a1887d3968cc1ce5642a15cd182e9",
- "reference": "7fc72a7a346a1887d3968cc1ce5642a15cd182e9",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "symfony/dependency-injection": "~2.0"
- },
- "suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\EventDispatcher\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- }
- ],
- "description": "Symfony EventDispatcher Component",
- "homepage": "http://symfony.com",
- "time": "2013-09-19 09:45:20"
- },
- {
- "name": "symfony/filesystem",
- "version": "v2.3.5",
- "target-dir": "Symfony/Component/Filesystem",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/Filesystem.git",
- "reference": "2b8995042086c5552c94d33b5553c492e9cfc00e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/Filesystem/zipball/2b8995042086c5552c94d33b5553c492e9cfc00e",
- "reference": "2b8995042086c5552c94d33b5553c492e9cfc00e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Filesystem\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- }
- ],
- "description": "Symfony Filesystem Component",
- "homepage": "http://symfony.com",
- "time": "2013-09-19 09:45:20"
- },
- {
- "name": "symfony/stopwatch",
- "version": "v2.3.5",
- "target-dir": "Symfony/Component/Stopwatch",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/Stopwatch.git",
- "reference": "1f951fa881d2e661525e81ee0afc97261ad43459"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/1f951fa881d2e661525e81ee0afc97261ad43459",
- "reference": "1f951fa881d2e661525e81ee0afc97261ad43459",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Stopwatch\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- }
- ],
- "description": "Symfony Stopwatch Component",
- "homepage": "http://symfony.com",
- "time": "2013-09-19 09:45:20"
- },
- {
- "name": "symfony/yaml",
- "version": "v2.3.5",
- "target-dir": "Symfony/Component/Yaml",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/Yaml.git",
- "reference": "6bb881b948368482e1abf1a75c08bcf88a1c5fc3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/Yaml/zipball/6bb881b948368482e1abf1a75c08bcf88a1c5fc3",
- "reference": "6bb881b948368482e1abf1a75c08bcf88a1c5fc3",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Yaml\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- }
- ],
- "description": "Symfony Yaml Component",
- "homepage": "http://symfony.com",
- "time": "2013-09-22 18:04:39"
- }
- ],
- "aliases": [
-
- ],
- "minimum-stability": "stable",
- "stability-flags": [
-
- ],
- "platform": {
- "php": ">=5.3"
- },
- "platform-dev": [
-
- ]
-}
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Algorithm/ConnectedComponent.php b/core/vendor/sdboyer/gliph/src/Gliph/Algorithm/ConnectedComponent.php
deleted file mode 100644
index 686c299..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Algorithm/ConnectedComponent.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-namespace Gliph\Algorithm;
-
-use Gliph\Graph\DirectedGraph;
-use Gliph\Visitor\TarjanSCCVisitor;
-
-/**
- * Contains algorithms for discovering connected components.
- */
-class ConnectedComponent {
-
- /**
- * Finds connected components in the provided directed graph.
- *
- * @param DirectedGraph $graph
- * The DirectedGraph to search for connected components.
- * @param TarjanSCCVisitor $visitor
- * The visitor that will collect and store the connected components. One
- * will be created if not provided.
- *
- * @return TarjanSCCVisitor
- * The finalized visitor.
- */
- public static function tarjan_scc(DirectedGraph $graph, TarjanSCCVisitor $visitor = NULL) {
- $visitor = $visitor ?: new TarjanSCCVisitor();
- $counter = 0;
- $stack = array();
- $indices = new \SplObjectStorage();
- $lowlimits = new \SplObjectStorage();
-
- $visit = function($vertex) use (&$visit, &$counter, $graph, &$stack, $indices, $lowlimits, $visitor) {
- $indices->attach($vertex, $counter);
- $lowlimits->attach($vertex, $counter);
- $stack[] = $vertex;
- $counter++;
-
- $graph->eachAdjacent($vertex, function ($to) use (&$visit, $vertex, $indices, $lowlimits, &$stack) {
- if (!$indices->contains($to)) {
- $visit($to);
- $lowlimits[$vertex] = min($lowlimits[$vertex], $lowlimits[$to]);
- }
- else if (in_array($to, $stack, TRUE)) {
- $lowlimits[$vertex] = min($lowlimits[$vertex], $indices[$to]);
- }
- });
-
- if ($lowlimits[$vertex] === $indices[$vertex]) {
- $visitor->newComponent();
- do {
- $other = array_pop($stack);
- $visitor->addToCurrentComponent($other);
- } while ($other != $vertex);
- }
- };
-
- $graph->eachVertex(function($vertex) use (&$visit, $indices) {
- if (!$indices->contains($vertex)) {
- $visit($vertex);
- }
- });
-
- return $visitor;
- }
-} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Exception/InvalidVertexTypeException.php b/core/vendor/sdboyer/gliph/src/Gliph/Exception/InvalidVertexTypeException.php
deleted file mode 100644
index 4b33c81..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Exception/InvalidVertexTypeException.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Gliph\Exception\InvalidVertexTypeException.
- */
-
-namespace Gliph\Exception;
-
-/**
- * Error thrown when attempting to add a vertex of an invalid type.
- */
-class InvalidVertexTypeException extends \Exception {} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Exception/NonexistentVertexException.php b/core/vendor/sdboyer/gliph/src/Gliph/Exception/NonexistentVertexException.php
deleted file mode 100644
index 22d0860..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Exception/NonexistentVertexException.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Gliph\Exception\NonexistentVertexException.
- */
-
-namespace Gliph\Exception;
-
-/**
- * Exception thrown when a vertex not present in a Graph is provided as a
- * parameter to a method that requires the vertex to be present (e.g., removing
- * the vertex, checking the edges of that vertex).
- */
-class NonexistentVertexException extends \OutOfBoundsException {} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Exception/OutOfRangeException.php b/core/vendor/sdboyer/gliph/src/Gliph/Exception/OutOfRangeException.php
deleted file mode 100644
index f8aa085..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Exception/OutOfRangeException.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-namespace Gliph\Exception;
-
-/**
- * OutOfRangeException for Gliph.
- */
-class OutOfRangeException extends \OutOfRangeException {} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Exception/RuntimeException.php b/core/vendor/sdboyer/gliph/src/Gliph/Exception/RuntimeException.php
deleted file mode 100644
index 39f98b4..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Exception/RuntimeException.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-namespace Gliph\Exception;
-
-/**
- * RuntimeException for Gliph.
- */
-class RuntimeException extends \RuntimeException {}
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Exception/WrongVisitorStateException.php b/core/vendor/sdboyer/gliph/src/Gliph/Exception/WrongVisitorStateException.php
deleted file mode 100644
index f6fa2be..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Exception/WrongVisitorStateException.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Gliph\Exception;
-
-/**
- * An exception thrown when a method is called on a visitor that it does not
- * expect in its current state.
- *
- * For example, this exception should be thrown by a visitor if it has a method
- * that returns data produced by a full traversal algorithm, but the algorithm
- * has not yet informed the visitor that it is done running.
- */
-class WrongVisitorStateException extends \LogicException {} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Graph/AdjacencyList.php b/core/vendor/sdboyer/gliph/src/Gliph/Graph/AdjacencyList.php
deleted file mode 100644
index 3f87286..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Graph/AdjacencyList.php
+++ /dev/null
@@ -1,168 +0,0 @@
-<?php
-
-namespace Gliph\Graph;
-
-use Gliph\Exception\InvalidVertexTypeException;
-use Gliph\Exception\NonexistentVertexException;
-
-/**
- * A graph, represented as an adjacency list.
- *
- * Adjacency lists store vertices directly, and edges relative to the vertices
- * they connect. That means there is no overall list of edges in the graph; only
- * a list of the graph's vertices. In this implementation, that list is keyed by
- * vertex, with the value being a list of all the vertices to which that vertex
- * is adjacent - hence, "adjacency list."
- *
- * Consequently, this structure offers highly efficient access to vertices, but
- * less efficient access to edges.
- *
- * In an undirected graph, the edges are stored in both vertices' adjacency
- * lists. In a directed graph, only the out-edges are stored in each vertex's
- * adjacency list. This makes accessing in-edge information in a directed graph
- * highly inefficient.
- */
-abstract class AdjacencyList implements MutableGraph {
-
- /**
- * Contains the adjacency list of vertices.
- *
- * @var \SplObjectStorage
- */
- protected $vertices;
-
- /**
- * Bookkeeper for nested iteration.
- *
- * @var \SplObjectStorage
- */
- protected $walking;
-
- /**
- * Count of the number of edges in the graph.
- *
- * We keep track because calculating it on demand is expensive.
- *
- * @var int
- */
- protected $size = 0;
-
- public function __construct() {
- $this->vertices = new \SplObjectStorage();
- $this->walking = new \SplObjectStorage();
- }
-
- /**
- * {@inheritdoc}
- */
- public function addVertex($vertex) {
- if (!is_object($vertex)) {
- throw new InvalidVertexTypeException('Vertices must be objects; non-object provided.');
- }
-
- if (!$this->hasVertex($vertex)) {
- $this->vertices[$vertex] = new \SplObjectStorage();
- }
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function eachAdjacent($vertex, $callback) {
- if (!$this->hasVertex($vertex)) {
- throw new NonexistentVertexException('Vertex is not in graph; cannot iterate over its adjacent vertices.');
- }
-
- $set = $this->_getTraversableSplos($this->vertices[$vertex]);
- foreach ($set as $adjacent_vertex) {
- call_user_func($callback, $adjacent_vertex);
- }
- $this->walking->detach($set);
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function eachVertex($callback) {
- $this->fev(function ($v, $adjacent) use ($callback) {
- call_user_func($callback, $v, $adjacent);
- });
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function hasVertex($vertex) {
- return $this->vertices->contains($vertex);
- }
-
- /**
- * {@inheritdoc}
- */
- public function order() {
- return $this->vertices->count();
- }
-
- /**
- * {@inheritdoc}
- */
- public function size() {
- return $this->size;
- }
-
- protected function fev($callback) {
- $set = $this->_getTraversableSplos($this->vertices);
- foreach ($set as $vertex) {
- $outgoing = $set->getInfo();
- $callback($vertex, $outgoing);
- }
- $this->walking->detach($set);
-
- return $this;
- }
-
- /**
- * Helper function to ensure SPLOS traversal pointer is not overridden.
- *
- * This would otherwise occur if nested calls are made that traverse the
- * same SPLOS. This keeps track of which SPLOSes are currently being
- * traversed, and if it's in use, it returns a clone.
- *
- * It is incumbent on the calling code to release the semaphore directly
- * by calling $this->_cleanupSplosTraversal() when the traversal in
- * question is complete. (This is very important!)
- *
- * Only public because it needs to be called from within closures.
- *
- * @param \SplObjectStorage $splos
- * The SPLOS to traverse.
- *
- * @return \SplObjectStorage
- * A SPLOS that is safe for traversal; may or may not be a clone of the
- * original.
- */
- public function _getTraversableSplos(\SplObjectStorage $splos) {
- if ($this->walking->contains($splos)) {
- return clone $splos;
- }
- else {
- $this->walking->attach($splos);
- return $splos;
- }
- }
-
- /**
- * Helper function to clean up SPLOSes after finishing traversal.
- *
- * @param \SplObjectStorage $splos
- * The SPLOS to mark as safe for traversal again.
- */
- public function _cleanupSplosTraversal(\SplObjectStorage $splos) {
- $this->walking->detach($splos);
- }
-} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Graph/DirectedAdjacencyList.php b/core/vendor/sdboyer/gliph/src/Gliph/Graph/DirectedAdjacencyList.php
deleted file mode 100644
index 443d61f..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Graph/DirectedAdjacencyList.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-
-namespace Gliph\Graph;
-
-use Gliph\Algorithm\ConnectedComponent;
-use Gliph\Exception\NonexistentVertexException;
-use Gliph\Exception\RuntimeException;
-use Gliph\Traversal\DepthFirst;
-use Gliph\Visitor\DepthFirstToposortVisitor;
-
-class DirectedAdjacencyList extends AdjacencyList implements MutableDirectedGraph {
-
- /**
- * {@inheritdoc}
- */
- public function addDirectedEdge($tail, $head) {
- $this->addVertex($tail)->addVertex($head);
- if (!$this->vertices[$tail]->contains($head)) {
- $this->size++;
- }
-
- $this->vertices[$tail]->attach($head);
- }
-
- /**
- * {@inheritdoc}
- */
- public function removeVertex($vertex) {
- if (!$this->hasVertex($vertex)) {
- throw new NonexistentVertexException('Vertex is not in the graph, it cannot be removed.', E_WARNING);
- }
-
- $this->eachVertex(function($v, $outgoing) use ($vertex) {
- if ($outgoing->contains($vertex)) {
- $outgoing->detach($vertex);
- }
- });
- unset($this->vertices[$vertex]);
- }
-
- /**
- * {@inheritdoc}
- */
- public function removeEdge($tail, $head) {
- $this->vertices[$tail]->detach($head);
- }
-
- /**
- * {@inheritdoc}
- */
- public function eachEdge($callback) {
- $edges = array();
- $that = $this;
- $this->fev(function ($from, $outgoing) use (&$edges, $that) {
- $set = $that->_getTraversableSplos($outgoing);
- foreach ($set as $to) {
- $edges[] = array($from, $to);
- }
- $that->_cleanupSplosTraversal($set);
- });
-
- foreach ($edges as $edge) {
- call_user_func($callback, $edge);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function transpose() {
- $graph = new self();
- $this->eachEdge(function($edge) use (&$graph) {
- $graph->addDirectedEdge($edge[1], $edge[0]);
- });
-
- return $graph;
- }
-
- /**
- * {@inheritdoc}
- */
- public function isAcyclic() {
- // The DepthFirstToposortVisitor throws an exception on cycles.
- try {
- DepthFirst::traverse($this, new DepthFirstToposortVisitor());
- return TRUE;
- }
- catch (RuntimeException $e) {
- return FALSE;
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCycles() {
- $scc = ConnectedComponent::tarjan_scc($this);
- return $scc->getConnectedComponents();
- }
-
- /**
- * {@inheritdoc}
- */
- public function inDegree($vertex) {
- if (!$this->hasVertex($vertex)) {
- throw new NonexistentVertexException('Vertex is not in the graph, in-degree information cannot be provided', E_WARNING);
- }
-
- $count = 0;
- $this->fev(function ($from, $outgoing) use (&$count, $vertex) {
- if ($outgoing->contains($vertex)) {
- $count++;
- }
- });
-
- return $count;
- }
-
- /**
- * {@inheritdoc}
- */
- public function outDegree($vertex) {
- if (!$this->hasVertex($vertex)) {
- throw new NonexistentVertexException('Vertex is not in the graph, out-degree information cannot be provided', E_WARNING);
- }
-
- return $this->vertices[$vertex]->count();
- }
-}
-
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Graph/DirectedGraph.php b/core/vendor/sdboyer/gliph/src/Gliph/Graph/DirectedGraph.php
deleted file mode 100644
index a4ef20a..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Graph/DirectedGraph.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-namespace Gliph\Graph;
-
-/**
- * Interface for directed graph datastructures.
- */
-interface DirectedGraph extends Graph {
-
- /**
- * Returns the transpose of this graph.
- *
- * A transpose is identical to the current graph, except that its edges
- * have had their directionality reversed.
- *
- * Transposed graphs are sometimes called the 'reverse' or 'converse'.
- *
- * @return DirectedGraph
- */
- public function transpose();
-
- /**
- * Indicates whether or not this graph is acyclic.
- *
- * @return bool
- */
- public function isAcyclic();
-
- /**
- * Returns the cycles in this graph, if any.
- *
- * @return array
- * An array of arrays, each subarray representing a full cycle in the
- * graph. If the array is empty, the graph is acyclic.
- */
- public function getCycles();
-} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Graph/Graph.php b/core/vendor/sdboyer/gliph/src/Gliph/Graph/Graph.php
deleted file mode 100644
index 482ac2a..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Graph/Graph.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-
-namespace Gliph\Graph;
-
-use Gliph\Exception\InvalidVertexTypeException;
-use Gliph\Exception\NonexistentVertexException;
-
-/**
- * The most basic interface for graph datastructures.
- */
-interface Graph {
-
- /**
- * Calls the callback with each vertex adjacent to the provided vertex.
- *
- * The meaning of "adjacency" depends on the type of graph. In a directed
- * graph, it refers to all the out-edges of the provided vertex. In an
- * undirected graph, in-edges and out-edges are the same, so this method
- * will iterate over both.
- *
- * @param object $vertex
- * The vertex whose out-edges should be visited.
- * @param callback $callback
- * The callback to fire. For each vertex found along an out-edge, this
- * callback will be called with that vertex as the sole parameter.
- *
- * @return Graph
- * The current graph instance.
- *
- * @throws NonexistentVertexException
- * Thrown if the vertex provided in the first parameter is not present in
- * the graph.
- */
- public function eachAdjacent($vertex, $callback);
-
- /**
- * Calls the provided callback for each vertex in the graph.
- *
- * @param $callback
- * The callback is called once for each vertex in the graph. Two
- * parameters are provided:
- * - The vertex being inspected.
- * - An SplObjectStorage containing a list of all the vertices adjacent
- * to the vertex being inspected.
- *
- * @return Graph
- * The current graph instance.
- */
- public function eachVertex($callback);
-
- /**
- * Calls the provided callback for each edge in the graph.
- *
- * @param $callback
- * The callback is called once for each unique edge in the graph. A single
- * parameter is provided: a 2-tuple (indexed array with two elements),
- * where the first element is the first vertex (in a directed graph, the
- * tail) and the second element is the second vertex (in a directed graph,
- * the head).
- *
- * @return Graph
- * The current graph instance.
- */
- public function eachEdge($callback);
-
- /**
- * Indicates whether or not the provided vertex is present in the graph.
- *
- * @param object $vertex
- * The vertex object to check for membership in the graph.
- *
- * @return bool
- * TRUE if the vertex is present, FALSE otherwise.
- */
- public function hasVertex($vertex);
-
- /**
- * Returns the in-degree (number of incoming edges) for the provided vertex.
- *
- * In undirected graphs, in-degree and out-degree are the same.
- *
- * @param object $vertex
- * The vertex for which to retrieve in-degree information.
- *
- * @return int
- *
- * @throws NonexistentVertexException
- * Thrown if the vertex provided in the first parameter is not present in
- * the graph.
- *
- */
- public function inDegree($vertex);
-
- /**
- * Returns the out-degree (count of outgoing edges) for the provided vertex.
- *
- * In undirected graphs, in-degree and out-degree are the same.
- *
- * @param object $vertex
- * The vertex for which to retrieve out-degree information.
- *
- * @return int
- *
- * @throws NonexistentVertexException
- * Thrown if the vertex provided in the first parameter is not present in
- * the graph.
- *
- */
- public function outDegree($vertex);
-
- /**
- * Returns the number of edges in the graph.
- *
- * @return int
- */
- public function size();
-
- /**
- * Returns the number of vertices in the graph.
- *
- * @return int
- */
- public function order();
-}
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Graph/MutableDirectedGraph.php b/core/vendor/sdboyer/gliph/src/Gliph/Graph/MutableDirectedGraph.php
deleted file mode 100644
index 4ac3a3e..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Graph/MutableDirectedGraph.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-namespace Gliph\Graph;
-
-/**
- * Describes a directed graph that can be modified after initial creation.
- */
-interface MutableDirectedGraph extends MutableGraph, DirectedGraph {
-
- /**
- * Adds a directed edge to this graph.
- *
- * Directed edges are also often referred to as 'arcs'.
- *
- * @param object $tail
- * An object vertex from which the edge originates. The vertex will be
- * added to the graph if it is not already present.
- * @param object $head
- * An object vertex to which the edge points. The vertex will be added to
- * the graph if it is not already present.
- *
- * @return DirectedGraph
- * The current graph instance.
- */
- public function addDirectedEdge($tail, $head);
-} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Graph/MutableGraph.php b/core/vendor/sdboyer/gliph/src/Gliph/Graph/MutableGraph.php
deleted file mode 100644
index 752a2a0..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Graph/MutableGraph.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-namespace Gliph\Graph;
-
-/**
- * Describes a graph that can be modified after initial creation.
- */
-interface MutableGraph extends Graph {
-
- /**
- * Adds a vertex to the graph.
- *
- * Gliph requires that its graph vertices be objects; beyond that, it does
- * not care about vertex type.
- *
- * @param object $vertex
- * An object to use as a vertex in the graph.
- *
- * @return Graph
- * The current graph instance.
- *
- * @throws InvalidVertexTypeException
- * Thrown if an invalid type of data is provided as a vertex.
- */
- public function addVertex($vertex);
-
- /**
- * Remove a vertex from the graph.
- *
- * This will also remove any edges that include the vertex.
- *
- * @param object $vertex
- * A vertex object to remove from the graph.
- *
- * @return Graph
- * The current graph instance.
- *
- * @throws NonexistentVertexException
- * Thrown if the provided vertex is not present in the graph.
- */
- public function removeVertex($vertex);
-
- /**
- * Removes an edge from the graph.
- *
- * @param $a
- * The first vertex in the edge pair to remove. In a directed graph, this
- * is the tail vertex.
- * @param $b
- * The second vertex in the edge pair to remove. In a directed graph, this
- * is the head vertex.
- *
- * @return Graph
- * The current graph instance.
- */
- public function removeEdge($a, $b);
-} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Graph/MutableUndirectedGraph.php b/core/vendor/sdboyer/gliph/src/Gliph/Graph/MutableUndirectedGraph.php
deleted file mode 100644
index 3bbec05..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Graph/MutableUndirectedGraph.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-namespace Gliph\Graph;
-
-/**
- * Describes a undirected graph that can be modified after initial creation.
- */
-interface MutableUndirectedGraph extends Graph {
-
- /**
- * Adds an undirected edge to this graph.
- *
- * @param object $a
- * The first object vertex in the edge pair. The vertex will be added to
- * the graph if it is not already present.
- * @param object $b
- * The second object vertex in the edge pair. The vertex will be added to
- * the graph if it is not already present.
- *
- * @return MutableUndirectedGraph
- * The current graph instance.
- */
- public function addEdge($a, $b);
-} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Graph/UndirectedAdjacencyList.php b/core/vendor/sdboyer/gliph/src/Gliph/Graph/UndirectedAdjacencyList.php
deleted file mode 100644
index be7d3e5..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Graph/UndirectedAdjacencyList.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-namespace Gliph\Graph;
-
-use Gliph\Exception\NonexistentVertexException;
-
-class UndirectedAdjacencyList extends AdjacencyList implements MutableUndirectedGraph {
-
- /**
- * {@inheritdoc}
- */
- public function addEdge($from, $to) {
- $this->addVertex($from)->addVertex($to);
- if (!$this->vertices[$from]->contains($to)) {
- $this->size++;
- }
-
- $this->vertices[$from]->attach($to);
- $this->vertices[$to]->attach($from);
- }
-
- /**
- * {@inheritdoc}
- */
- public function removeVertex($vertex) {
- if (!$this->hasVertex($vertex)) {
- throw new NonexistentVertexException('Vertex is not in the graph, it cannot be removed.', E_WARNING);
- }
-
- foreach ($this->vertices[$vertex] as $adjacent) {
- $this->vertices[$adjacent]->detach($vertex);
- }
- unset($this->vertices[$vertex]);
- }
-
- /**
- * {@inheritdoc}
- */
- public function removeEdge($from, $to) {
- $this->vertices[$from]->detach($to);
- $this->vertices[$to]->detach($from);
- }
-
- /**
- * {@inheritdoc}
- */
- public function eachEdge($callback) {
- $edges = array();
- $complete = new \SplObjectStorage();
- $that = $this;
- $this->fev(function ($a, $adjacent) use (&$edges, &$complete, $that) {
- $set = $that->_getTraversableSplos($adjacent);
- foreach ($set as $b) {
- if (!$complete->contains($b)) {
- $edges[] = array($a, $b);
- }
- }
- $that->_cleanupSplosTraversal($set);
- $complete->attach($a);
- });
-
- foreach ($edges as $edge) {
- call_user_func($callback, $edge);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function inDegree($vertex) {
- if (!$this->hasVertex($vertex)) {
- throw new NonexistentVertexException('Vertex is not in the graph, in-degree information cannot be provided', E_WARNING);
- }
-
- return $this->vertices[$vertex]->count();
- }
-
- /**
- * {@inheritdoc}
- */
- public function outDegree($vertex) {
- if (!$this->hasVertex($vertex)) {
- throw new NonexistentVertexException('Vertex is not in the graph, out-degree information cannot be provided', E_WARNING);
- }
-
- return $this->vertices[$vertex]->count();
- }
-} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Traversal/DepthFirst.php b/core/vendor/sdboyer/gliph/src/Gliph/Traversal/DepthFirst.php
deleted file mode 100644
index 5a0d4dd..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Traversal/DepthFirst.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-
-namespace Gliph\Traversal;
-
-use Gliph\Exception\RuntimeException;
-use Gliph\Graph\DirectedGraph;
-use Gliph\Visitor\DepthFirstToposortVisitor;
-use Gliph\Visitor\DepthFirstVisitorInterface;
-
-class DepthFirst {
-
- /**
- * Perform a depth-first traversal on the provided graph.
- *
- * @param DirectedGraph $graph
- * The graph on which to perform the depth-first search.
- * @param DepthFirstVisitorInterface $visitor
- * The visitor object to use during the traversal.
- * @param object|\SplDoublyLinkedList $start
- * A vertex, or vertices, to use as start points for the traversal. There
- * are a few sub-behaviors here:
- * - If an SplDoublyLinkedList, SplQueue, or SplStack is provided, the
- * traversal will deque and visit vertices contained therein.
- * - If a single vertex object is provided, it will be the sole
- * originating point for the traversal.
- * - If no value is provided, DepthFirst::find_sources() is called to
- * search the graph for source vertices. These are place into an
- * SplQueue in the order in which they are discovered, and traversal
- * is then run over that queue in the same manner as if calling code
- * had provided a queue directly. This method *guarantees* that all
- * vertices in the graph will be visited.
- *
- * @throws RuntimeException
- * Thrown if an invalid $start parameter is provided.
- */
- public static function traverse(DirectedGraph $graph, DepthFirstVisitorInterface $visitor, $start = NULL) {
- if ($start === NULL) {
- $queue = self::find_sources($graph, $visitor);
- }
- else if ($start instanceof \SplDoublyLinkedList) {
- $queue = $start;
- }
- else if (is_object($start)) {
- $queue = new \SplDoublyLinkedList();
- $queue->push($start);
- }
-
- if ($queue->isEmpty()) {
- throw new RuntimeException('No start vertex or vertices were provided, and no source vertices could be found in the provided graph.', E_WARNING);
- }
-
- $visiting = new \SplObjectStorage();
- $visited = new \SplObjectStorage();
-
- $visitor->beginTraversal();
-
- $visit = function($vertex) use ($graph, $visitor, &$visit, $visiting, $visited) {
- if ($visiting->contains($vertex)) {
- $visitor->onBackEdge($vertex, $visit);
- }
- else if (!$visited->contains($vertex)) {
- $visiting->attach($vertex);
-
- $visitor->onStartVertex($vertex, $visit);
-
- $graph->eachAdjacent($vertex, function($to) use ($vertex, &$visit, $visitor) {
- $visitor->onExamineEdge($vertex, $to, $visit);
- $visit($to);
- });
-
- $visitor->onFinishVertex($vertex, $visit);
-
- $visiting->detach($vertex);
- $visited->attach($vertex);
- }
- };
-
- while (!$queue->isEmpty()) {
- $vertex = $queue->shift();
- $visit($vertex);
- }
-
- $visitor->endTraversal();
- }
-
- /**
- * Finds source vertices in a DirectedGraph, then enqueues them.
- *
- * @param DirectedGraph $graph
- * @param DepthFirstVisitorInterface $visitor
- *
- * @return \SplQueue
- */
- public static function find_sources(DirectedGraph $graph, DepthFirstVisitorInterface $visitor) {
- $incomings = new \SplObjectStorage();
- $queue = new \SplQueue();
-
- $graph->eachEdge(function ($edge) use (&$incomings) {
- if (!isset($incomings[$edge[1]])) {
- $incomings[$edge[1]] = new \SplObjectStorage();
- }
- $incomings[$edge[1]]->attach($edge[0]);
- });
-
- // Prime the queue with vertices that have no incoming edges.
- $graph->eachVertex(function($vertex) use ($queue, $incomings, $visitor) {
- if (!$incomings->contains($vertex)) {
- $queue->push($vertex);
- // TRUE second param indicates source vertex
- $visitor->onInitializeVertex($vertex, TRUE, $queue);
- }
- else {
- $visitor->onInitializeVertex($vertex, FALSE, $queue);
- }
- });
-
- return $queue;
- }
-
- /**
- * Performs a topological sort on the provided graph.
- *
- * @param DirectedGraph $graph
- * @param object|\SplDoublyLinkedList $start
- * The starting point(s) for the toposort. @see DepthFirst::traverse()
- *
- * @return array
- * A valid topologically sorted list for the provided graph.
- */
- public static function toposort(DirectedGraph $graph, $start = NULL) {
- $visitor = new DepthFirstToposortVisitor();
- self::traverse($graph, $visitor, $start);
-
- return $visitor->getTsl();
- }
-} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Visitor/DepthFirstBasicVisitor.php b/core/vendor/sdboyer/gliph/src/Gliph/Visitor/DepthFirstBasicVisitor.php
deleted file mode 100644
index c6d0aa9..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Visitor/DepthFirstBasicVisitor.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-
-namespace Gliph\Visitor;
-
-use Gliph\Exception\WrongVisitorStateException;
-
-/**
- * Basic depth-first visitor.
- *
- * This visitor records reachability data for each vertex and creates a
- * topologically sorted list.
- */
-class DepthFirstBasicVisitor extends DepthFirstToposortVisitor {
-
- /**
- * @var \SplObjectStorage
- */
- public $active;
-
- /**
- * @var \SplObjectStorage
- */
- protected $paths;
-
- public function __construct() {
- $this->active = new \SplObjectStorage();
- $this->paths = new \SplObjectStorage();
- }
-
- public function onInitializeVertex($vertex, $source, \SplQueue $queue) {
- parent::onInitializeVertex($vertex, $source, $queue);
-
- $this->paths[$vertex] = array();
- }
-
- public function onStartVertex($vertex, \Closure $visit) {
- parent::onStartVertex($vertex, $visit);
-
- $this->active->attach($vertex);
- if (!isset($this->paths[$vertex])) {
- $this->paths[$vertex] = array();
- }
- }
-
- public function onExamineEdge($from, $to, \Closure $visit) {
- parent::onExamineEdge($from, $to, $visit);
-
- foreach ($this->active as $vertex) {
- // TODO this check makes this less efficient - find a better algo
- if (!in_array($to, $this->paths[$vertex], TRUE)) {
- $path = $this->paths[$vertex];
- $path[] = $to;
- $this->paths[$vertex] = $path;
- }
- }
- }
-
- public function onFinishVertex($vertex, \Closure $visit) {
- parent::onFinishVertex($vertex, $visit);
-
- $this->active->detach($vertex);
- }
-
- /**
- * Returns an array of all vertices reachable from the given vertex.
- *
- * @param object $vertex
- * The vertex for which reachability data is desired.
- *
- * @return array|bool
- * An array of reachable vertices, or FALSE if the vertex could not be
- * found in the reachability data. Note that an empty array will be
- * returned for vertices that zero reachable vertices. This is a different
- * from FALSE, so the identity operator (===) should be used to verify
- * returns.
- *
- * @throws WrongVisitorStateException
- * Thrown if reachability data is requested before the traversal algorithm
- * completes.
- */
- public function getReachable($vertex) {
- if ($this->getState() !== self::COMPLETE) {
- throw new WrongVisitorStateException('Correct reachability data cannot be retrieved until traversal is complete.');
- }
-
- if (!isset($this->paths[$vertex])) {
- return FALSE;
- }
-
- return $this->paths[$vertex];
- }
-} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Visitor/DepthFirstNoOpVisitor.php b/core/vendor/sdboyer/gliph/src/Gliph/Visitor/DepthFirstNoOpVisitor.php
deleted file mode 100644
index a61709b..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Visitor/DepthFirstNoOpVisitor.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Gliph\Visitor;
-
-/**
- * A no-op visitor for depth first traversal algorithms.
- *
- * @codeCoverageIgnore
- */
-class DepthFirstNoOpVisitor implements DepthFirstVisitorInterface {
- public function onInitializeVertex($vertex, $source, \SplQueue $queue) {}
- public function beginTraversal() {}
- public function onBackEdge($vertex, \Closure $visit) {}
- public function onStartVertex($vertex, \Closure $visit) {}
- public function onExamineEdge($from, $to, \Closure $visit) {}
- public function onFinishVertex($vertex, \Closure $visit) {}
- public function endTraversal() {}
-} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Visitor/DepthFirstToposortVisitor.php b/core/vendor/sdboyer/gliph/src/Gliph/Visitor/DepthFirstToposortVisitor.php
deleted file mode 100644
index 61a1d37..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Visitor/DepthFirstToposortVisitor.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Gliph\Visitor\DepthFirstToposortVisitor.
- */
-
-namespace Gliph\Visitor;
-
-use Gliph\Exception\RuntimeException;
-use Gliph\Exception\WrongVisitorStateException;
-
-/**
- * Visitor that produces a topologically sorted list on a depth first traversal.
- */
-class DepthFirstToposortVisitor extends SimpleStatefulDepthFirstVisitor implements DepthFirstVisitorInterface {
-
- /**
- * @var array
- */
- protected $tsl = array();
-
- /**
- * @codeCoverageIgnore
- */
- public function onInitializeVertex($vertex, $source, \SplQueue $queue) {}
-
- /**
- * @codeCoverageIgnore
- */
- public function onStartVertex($vertex, \Closure $visit) {}
-
- /**
- * @codeCoverageIgnore
- */
- public function onExamineEdge($from, $to, \Closure $visit) {}
-
- public function onBackEdge($vertex, \Closure $visit) {
- throw new RuntimeException(sprintf('Cycle detected in provided graph; toposort is not possible.'));
- }
-
- public function beginTraversal() {
- parent::beginTraversal();
- $this->tsl = array();
- }
-
- public function onFinishVertex($vertex, \Closure $visit) {
- $this->tsl[] = $vertex;
- }
-
- /**
- * Returns a valid topological sort of the visited graph as an array.
- *
- * @return array
- *
- * @throws WrongVisitorStateException
- * Thrown if called before traversal is complete.
- */
- public function getTsl() {
- if ($this->getState() !== self::COMPLETE) {
- throw new WrongVisitorStateException('Topologically sorted list cannot be retrieved until traversal is complete.');
- }
-
- return $this->tsl;
- }
-} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Visitor/DepthFirstVisitorInterface.php b/core/vendor/sdboyer/gliph/src/Gliph/Visitor/DepthFirstVisitorInterface.php
deleted file mode 100644
index ae4f388..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Visitor/DepthFirstVisitorInterface.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Gliph\Visitor;
-
-interface DepthFirstVisitorInterface {
- public function onInitializeVertex($vertex, $source, \SplQueue $queue);
- public function beginTraversal();
- public function onBackEdge($vertex, \Closure $visit);
- public function onStartVertex($vertex, \Closure $visit);
- public function onExamineEdge($from, $to, \Closure $visit);
- public function onFinishVertex($vertex, \Closure $visit);
- public function endTraversal();
-} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Visitor/SimpleStatefulDepthFirstVisitor.php b/core/vendor/sdboyer/gliph/src/Gliph/Visitor/SimpleStatefulDepthFirstVisitor.php
deleted file mode 100644
index 8c7693f..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Visitor/SimpleStatefulDepthFirstVisitor.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Gliph\Visitor\SimpleStatefulDepthFirstVisitor.
- */
-
-namespace Gliph\Visitor;
-
-use Gliph\Exception\WrongVisitorStateException;
-
-/**
- * Simplified stateful depth-first visitor with less complex state.
- *
- * Rather than a three-way distinction (NOT_STARTED/IN_PROGRESS/COMPLETE), the
- * simplified visitor only cares about COMPLETE.
- */
-abstract class SimpleStatefulDepthFirstVisitor implements StatefulVisitorInterface, DepthFirstVisitorInterface {
-
- /**
- * Represents the current state of the visitor.
- *
- * This visitor disregards the NOT_STARTED phase as irrelevant, and so is
- * considered IN_PROGRESS from initial construction.
- *
- * @var int
- */
- protected $state = self::IN_PROGRESS;
-
- /**
- * @codeCoverageIgnore
- */
- public function beginTraversal() {}
-
- /**
- * {@inheritdoc}
- */
- public function endTraversal() {
- if ($this->getState() != self::IN_PROGRESS) {
- throw new WrongVisitorStateException('Cannot end traversal, visitor is not marked as currently being in progress.');
- }
- $this->state = self::COMPLETE;
- }
-
- public function getState() {
- return $this->state;
- }
-} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Visitor/StatefulDepthFirstVisitor.php b/core/vendor/sdboyer/gliph/src/Gliph/Visitor/StatefulDepthFirstVisitor.php
deleted file mode 100644
index 7c2de15..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Visitor/StatefulDepthFirstVisitor.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Gliph\Visitor\StatefulDepthFirstVisitor.
- */
-
-namespace Gliph\Visitor;
-
-use Gliph\Exception\WrongVisitorStateException;
-
-/**
- * A base class for stateful depth first visitors.
- *
- * This visitor tracks state as indicated to it by the depth first traversal
- * algorithm, throwing exceptions if certain methods are accessed from an
- * incorrect state.
- */
-abstract class StatefulDepthFirstVisitor implements DepthFirstVisitorInterface, StatefulVisitorInterface {
-
- /**
- * Represents the current state of the visitor.
- *
- * @var int
- */
- protected $state = self::NOT_STARTED;
-
- public function onInitializeVertex($vertex, $source, \SplQueue $queue) {
- if ($this->state != self::NOT_STARTED) {
- throw new WrongVisitorStateException('Vertex initialization should only happen before traversal has begun.');
- }
- }
-
- public function beginTraversal() {
- if ($this->state != self::NOT_STARTED) {
- throw new WrongVisitorStateException('Traversal has already begun; cannot begin twice.');
- }
- $this->state = self::IN_PROGRESS;
- }
-
- public function onBackEdge($vertex, \Closure $visit) {
- if ($this->state != self::IN_PROGRESS) {
- throw new WrongVisitorStateException('onBackEdge should only be called while traversal is in progress.');
- }
- }
-
- public function onStartVertex($vertex, \Closure $visit) {
- if ($this->state != self::IN_PROGRESS) {
- throw new WrongVisitorStateException('onStartVertex should only be called while traversal is in progress.');
- }
- }
-
- public function onExamineEdge($from, $to, \Closure $visit) {
- if ($this->state != self::IN_PROGRESS) {
- throw new WrongVisitorStateException('onExamineEdge should only be called while traversal is in progress.');
- }
- }
-
- public function onFinishVertex($vertex, \Closure $visit) {
- if ($this->state != self::IN_PROGRESS) {
- throw new WrongVisitorStateException('onFinishVertex should only be called while traversal is in progress.');
- }
- }
-
- public function endTraversal() {
- if ($this->state != self::IN_PROGRESS) {
- throw new WrongVisitorStateException('Cannot end traversal; no traversal is currently in progress.');
- }
- $this->state = self::COMPLETE;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getState() {
- return $this->state;
- }
-} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Visitor/StatefulVisitorInterface.php b/core/vendor/sdboyer/gliph/src/Gliph/Visitor/StatefulVisitorInterface.php
deleted file mode 100644
index b73c5c0..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Visitor/StatefulVisitorInterface.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace Gliph\Visitor;
-
-/**
- * Interface for stateful algorithm visitors.
- */
-interface StatefulVisitorInterface {
- const NOT_STARTED = 0;
- const IN_PROGRESS = 1;
- const COMPLETE = 2;
-
- /**
- * Returns an integer indicating the current state of the visitor.
- *
- * @return int
- * State should be one of the three StatefulVisitorInterface constants:
- * - 0: indicates the algorithm has not yet started.
- * - 1: indicates the algorithm is in progress.
- * - 2: indicates the algorithm is complete.
- */
- public function getState();
-} \ No newline at end of file
diff --git a/core/vendor/sdboyer/gliph/src/Gliph/Visitor/TarjanSCCVisitor.php b/core/vendor/sdboyer/gliph/src/Gliph/Visitor/TarjanSCCVisitor.php
deleted file mode 100644
index 73255b2..0000000
--- a/core/vendor/sdboyer/gliph/src/Gliph/Visitor/TarjanSCCVisitor.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Gliph\Visitor;
-
-/**
- * Visitor that collects strongly connected component data from Tarjan's
- * strongly connected components algorithm.
- */
-class TarjanSCCVisitor {
-
- protected $components = array();
-
- protected $currentComponent;
-
- public function newComponent() {
- // Ensure the reference is broken
- unset($this->currentComponent);
- $this->currentComponent = array();
- $this->components[] = &$this->currentComponent;
- }
-
- public function addToCurrentComponent($vertex) {
- $this->currentComponent[] = $vertex;
- }
-
- public function getComponents() {
- return $this->components;
- }
-
- public function getConnectedComponents() {
- // TODO make this less stupid
- return array_values(array_filter($this->components, function($component) {
- return count($component) > 1;
- }));
- }
-} \ No newline at end of file