Changeset 74916 in spip-zone


Ignore:
Timestamp:
Aug 23, 2013, 4:21:47 PM (6 years ago)
Author:
marcimat@…
Message:

Gestion plus maline des pipelines. On regroupe les pipelines par nom et on crée, pour chaque pipeline une page dédiée qui liste ses utilisations : quelles fonctions l'utilisent, quelles fonctions en sont des maillons.

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

Legend:

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

    r74906 r74916  
    1212use phpDocumentor\Descriptor\ProjectDescriptor;
    1313use autodoc\Plugin\Core\Descriptor\SpipTagDescriptor;
     14use autodoc\Plugin\Core\Descriptor\PipelineDescriptor;
    1415
    1516use Cilex\Application;
     
    119120        foreach ($project->getFiles() as $file) {
    120121            foreach ($file->getFunctions() as $function) {
    121                 if ($pipeline = $function->getTags()->get('pipeline')) {
    122                     $pipelines->add( $function );
     122
     123                // traiter les fonctions de passage (chains)
     124                if ($pipelineTags = $function->getTags()->get('pipeline')) {
     125                    foreach ($pipelineTags as $pipelineTag) {
     126                        $pipelineName = $pipelineTag->getDescription();
     127
     128                        if (!$pipeline = $pipelines->get( $pipelineName )) {
     129                            $pipeline = new PipelineDescriptor();
     130                            $pipeline->setName($pipelineName);
     131                            $pipelines->set($pipelineName, $pipeline);
     132                        }
     133                       
     134                        $pipeline->getChains()->add( $function );
     135                    }
     136                }
     137
     138                // traiter les exécutions de ce pipeline (calls)
     139                if ($pipelineTags = $function->getTags()->get('pipeline_appel')) {
     140                    foreach ($pipelineTags as $pipelineTag) {
     141                        $pipelineName = $pipelineTag->getDescription();
     142
     143                        if (!$pipeline = $pipelines->get( $pipelineName )) {
     144                            $pipeline = new PipelineDescriptor();
     145                            $pipeline->setName($pipelineName);
     146                            $pipelines->set($pipelineName, $pipeline);
     147                        }
     148                       
     149                        $pipeline->getCalls()->add( $function );
     150                    }
    123151                }
    124152
  • _galaxie_/code.spip.net/autodoc/trunk/src/autodoc/Plugin/Core/Transformer/Router/ZoraRouter.php

    r74906 r74916  
    1616use autodoc\Plugin\Core\Descriptor\DirectoryDescriptor;
    1717use autodoc\Plugin\Core\Descriptor\ApiDescriptor;
     18use autodoc\Plugin\Core\Descriptor\PipelineDescriptor;
    1819
    1920/**
     
    3536        $constantDescriptor      = new UrlGenerator\Zora\ConstantDescriptor();
    3637        $apiDescriptor           = new UrlGenerator\Zora\ApiDescriptor();
     38        $pipelineDescriptor           = new UrlGenerator\Zora\PipelineDescriptor();
    3739
    3840        // @codingStandardsIgnoreStart
     
    4345        $this[] = new Rule(function ($node) { return ($node instanceof ConstantDescriptor); },   $constantDescriptor);
    4446        $this[] = new Rule(function ($node) { return ($node instanceof ApiDescriptor); },        $apiDescriptor);
     47        $this[] = new Rule(function ($node) { return ($node instanceof PipelineDescriptor); },   $pipelineDescriptor);
    4548        // @codingStandardsIgnoreEnd
    4649    }
  • _galaxie_/code.spip.net/autodoc/trunk/templates/zora/content/pipelines.twig

    r74902 r74916  
    33
    44
    5 {% include 'inclure/liste/spiperies.twig' with {
    6         'elements' : project.indexes.spip.pipelines|trier('tags.pipeline.0.description', 'getFullyQualifiedStructuralElementName'),
    7         'type'     : 'pipeline'
    8 } %}
     5<div class='info'>
     6        Cette page ne liste (malheureusement) pas tous les pipelines existants
     7        mais seulement ceux qui sont utilisés dans ce code source, soit parce
     8        qu'une fonction utilise la fonction <code>pipeline()</code> soit parce
     9        qu'une fonction est un des maillons de la chaîne du pipeline.
     10</div>
    911
     12{% set pipelines = project.indexes.spip.pipelines|trier('name') %}
     13
     14{% if pipelines|length %}
     15<table class="table">
     16        <thead>
     17                <tr><th>Nom</th></tr>
     18        </thead>
     19        <tbody>
     20        {% for pipeline in pipelines %}
     21                <tr>
     22                        <th><a href="{{ path(pipeline) }}">{{ pipeline.name }}</a></th>
     23                </tr>
     24        {% endfor %}
     25        </tbody>
     26</table>
     27{% endif %}
     28
  • _galaxie_/code.spip.net/autodoc/trunk/templates/zora/content/sommaire.twig

    r74904 r74916  
    2323        {'type': 'filtre',   'nom': 'Filtres',   'elements': project.indexes.spip.filtres|trier('name')},
    2424        {'type': 'critere',  'nom': 'Critères',  'elements': project.indexes.spip.criteres|trier('name')},
    25         {'type': 'boucle',   'nom': 'Boucles',   'elements': project.indexes.spip.boucles|trier('name')},
    26         {'type': 'pipeline', 'nom': 'Pipelines', 'elements': project.indexes.spip.pipelines|trier('tags.pipeline.0.description', 'getFullyQualifiedStructuralElementName')},
     25        {'type': 'boucle',   'nom': 'Boucles',   'elements': project.indexes.spip.boucles|trier('name')}
    2726] %}
    2827
     
    4342        {% endif %}
    4443{% endfor %}
     44
     45
     46{% set elements = [
     47        {'type': 'pipeline', 'nom': 'Pipelines', 'elements': project.indexes.spip.pipelines|trier('name')},
     48] %}
     49
     50{% for e in elements %}
     51        {% if e.elements|length %}
     52                <div id="{{ e.type }}">
     53                        <h3>{{ e.nom }}</h3>
     54                        <ul class='colonnes'>
     55                                {% for element in e.elements %}
     56                                        <li><a href="{{ path( element ) }}">{{ element.name }}</a></li>
     57                                {% endfor %}
     58                        </ul>
     59                </div><!-- #{{ e.type }} -->
     60        {% endif %}
     61{% endfor %}
  • _galaxie_/code.spip.net/autodoc/trunk/templates/zora/inclure/nav.twig

    r74906 r74916  
    11
    22{%- set elements = [
    3         {'path':'balises.html',    'nom': 'Balises',    'elements': project.indexes.spip.balises},
    4         {'path':'filtres.html',    'nom': 'Filtres',    'elements': project.indexes.spip.filtres},
    5         {'path':'criteres.html',   'nom': 'Critères',   'elements': project.indexes.spip.criteres},
    6         {'path':'boucles.html',    'nom': 'Boucles',    'elements': project.indexes.spip.boucles},
    7         {'path':'pipelines.html', 'nom': 'Pipelines',  'elements': project.indexes.spip.pipelines},
    8         {'path':'apis/index.html', 'nom': 'APIs',       'elements': project.indexes.apis},
    9         {'path':'constantes.html', 'nom': 'Constantes', 'elements': project.indexes.constants}
     3        {'path':'balises.html',         'nom': 'Balises',    'elements': project.indexes.spip.balises},
     4        {'path':'filtres.html',         'nom': 'Filtres',    'elements': project.indexes.spip.filtres},
     5        {'path':'criteres.html',        'nom': 'Critères',   'elements': project.indexes.spip.criteres},
     6        {'path':'boucles.html',         'nom': 'Boucles',    'elements': project.indexes.spip.boucles},
     7        {'path':'pipelines/index.html', 'nom': 'Pipelines',  'elements': project.indexes.spip.pipelines},
     8        {'path':'apis/index.html',      'nom': 'APIs',       'elements': project.indexes.apis},
     9        {'path':'constantes.html',      'nom': 'Constantes', 'elements': project.indexes.constants}
    1010] %}
    1111
     
    6666                                                        <li><a href="{{ path('statistiques.html') }}">Statistiques</a></li>
    6767
    68                                                         <!-- lien temporaire -->
     68                                                        {#- <!-- lien temporaire -->
    6969                                                        <li><a href="{{ path('debug.html') }}">Debug</a></li>
     70                                                        #}
    7071                                                </ul>
    7172                                        </ul>
  • _galaxie_/code.spip.net/autodoc/trunk/templates/zora/template.xml

    r74906 r74916  
    4343    <transformation writer="twig" source="templates/zora/filtres.twig"    artifact="filtres.html"/>
    4444    <transformation writer="twig" source="templates/zora/criteres.twig"   artifact="criteres.html"/>
    45     <transformation writer="twig" source="templates/zora/pipelines.twig"  artifact="pipelines.html"/>
     45    <transformation writer="twig" source="templates/zora/pipelines.twig"  artifact="pipelines/index.html"/>
    4646    <transformation writer="twig" source="templates/zora/apis.twig"       artifact="apis/index.html"/>
    4747
     
    5151    <transformation writer="twig" query="indexes.classes" source="templates/zora/class.twig" />
    5252    <transformation writer="twig" query="indexes.apis" source="templates/zora/api.twig" />
     53    <transformation writer="twig" query="indexes.spip.pipelines" source="templates/zora/pipeline.twig" />
    5354
    5455    <!-- gestion des statistiques -->
Note: See TracChangeset for help on using the changeset viewer.