Changeset 74704 in spip-zone


Ignore:
Timestamp:
Aug 11, 2013, 8:59:19 AM (6 years ago)
Author:
marcimat@…
Message:

Début de prise en compte des fichiers. Présentation des entêtes et des constantes pour le moment.
+ Filtre |trier pour twig permettant de trier un objet Collection de phpDocumentor.

Location:
_galaxie_/code.spip.net/autodoc/trunk
Files:
6 added
3 edited

Legend:

Unmodified
Added
Removed
  • _galaxie_/code.spip.net/autodoc/trunk/src/autodoc/Plugin/Core/TwigZora.php

    r74692 r74704  
    1111use phpDocumentor\Transformer\Transformation;
    1212use phpDocumentor\Descriptor\ProjectDescriptor;
     13use phpDocumentor\Descriptor\Collection;
    1314use Zend\Config\Factory;
    1415use Zend\Config\Config;
     
    120121    }
    121122
     123    /**
     124     * Liste des filtres ajoutés à Twig
     125     * @return array
     126    **/
     127    public function getFilters()
     128    {
     129        return array(
     130            /* trier une Collection selon un argument */
     131            'trier' => new \Twig_SimpleFilter(
     132                'trier',
     133                function (Collection $collection, $tri = "") {
     134                    if ($collection->count() <= 1) {
     135                        return $collection;
     136                    }
     137
     138                    $array = $collection->getAll();
     139                    uasort($array, function($a, $b) use ($tri) {
     140                        return(
     141                            strtolower(TwigZora::walkObjectTree($a, $tri)) >
     142                            strtolower(TwigZora::walkObjectTree($b, $tri))
     143                        );
     144                    });
     145                    return new Collection($array);
     146                }
     147            ),
     148        );
     149    }
     150
     151
     152
     153
     154    /**
     155     * Trouver le chemin !
     156     *
     157     * Voir : phpDocumentor\Plugin\Core\Transformer\Writer\Twig::walkObjectTree
     158     * Totalement identique (au static près) : utiliser une classe séparée dès qu'elle sera disponible.
     159     *
     160     * Walks an object graph and/or array using a twig query string.
     161     *
     162     * Note: this method is public because it is used in a closure in {{@see getDestinationPath()}}.
     163     *
     164     * @param \Traversable|mixed $objectOrArray
     165     * @param string             $query         A path to walk separated by dots, i.e. `namespace.namespaces`.
     166     *
     167     * @todo move this to a separate class and make it more flexible.
     168     *
     169     * @return mixed
     170     */
     171    public static function walkObjectTree($objectOrArray, $query)
     172    {
     173        $node = $objectOrArray;
     174        $objectPath = explode('.', $query);
     175
     176        // walk through the tree
     177        foreach ($objectPath as $pathNode) {
     178            if (is_array($node)) {
     179                if (isset($node[$pathNode])) {
     180                    $node = $node[$pathNode];
     181                    continue;
     182                }
     183            } elseif (is_object($node)) {
     184                if (isset($node->$pathNode) || (method_exists($node, '__get') && $node->$pathNode)) {
     185                    $node = $node->$pathNode;
     186                    continue;
     187                } elseif (method_exists($node, $pathNode)) {
     188                    $node = $node->$pathNode();
     189                    continue;
     190                } elseif (method_exists($node, 'get' . $pathNode)) {
     191                    $pathNode = 'get' . $pathNode;
     192                    $node = $node->$pathNode();
     193                    continue;
     194                } elseif (method_exists($node, 'is' . $pathNode)) {
     195                    $pathNode = 'is' . $pathNode;
     196                    $node = $node->$pathNode();
     197                    continue;
     198                }
     199            }
     200
     201            return null;
     202        }
     203
     204        return $node;
     205    }
    122206}
  • _galaxie_/code.spip.net/autodoc/trunk/templates/zora/content/dossier.twig

    r74697 r74704  
    3131        <table class="table">
    3232                <thead>
    33                         <tr><th>Dossier</th><th>Description</th></tr>
     33                        <tr><th>Dossier</th>
     34                        {# <th>Description</th></tr> #}
    3435                </thead>
    3536                <tbody>
     
    3738                        <tr>
    3839                                <th><a href="{{ path(directory) }}">{{ directory.name }}</a></th>
    39                                 <td>{{ directory.summary }}</td>
     40                                {# <td>{{ directory.summary }}</td> #}
    4041                        </tr>
    4142                {% endfor %}
  • _galaxie_/code.spip.net/autodoc/trunk/templates/zora/template.xml

    r74696 r74704  
    3838    <!-- gestion des objets générées en twig -->
    3939    <transformation writer="twig" query="indexes.directories.0.flat" source="templates/zora/dossier.twig" />
     40    <transformation writer="twig" query="files" source="templates/zora/fichier.twig" />
    4041
    4142    <!-- gestion des statistiques -->
Note: See TracChangeset for help on using the changeset viewer.