|
| 1 | +# Dgeni Packages |
| 2 | + |
| 3 | +Ce dépôt contient une collection de packages de dgeni qui peuvent être utilisés par dgeni, le générateur |
| 4 | +de documentation, pour créer une documentation à partir du code source. |
| 5 | + |
| 6 | + |
| 7 | +Actuellement, il y a les packages suivants : |
| 8 | + |
| 9 | +* base - L'ensemble minimal des processeurs pour commencer avec Dgeni |
| 10 | +* jsdoc - Extraction et analyse des balises |
| 11 | +* nunjucks - Le moteur de rendu de template de nunjucks. Comme il n'est plus dans jsdoc, vous devez l'ajouter |
| 12 | + explicitement dans votre configuration ou vous obtiendrez l'erreur |
| 13 | + `Error: No provider for "templateEngine"! (Resolving: templateEngine)` |
| 14 | +* ngdoc - La partie spécifique d'angular.js, avec la définition des balises, des processeurs et des templates. |
| 15 | + Celui-ci charge les packages de jsdoc et nunjucks pour vous. |
| 16 | +* examples - Processeurs pour supporter les exemples exécutables qui figurent sur les docs du site d'angular.js. |
| 17 | + |
| 18 | +#### Le package `base` |
| 19 | + |
| 20 | +Ce package contient les processeurs suivants : |
| 21 | + |
| 22 | +* `read-files` - utilisé pour charger les documents depuis les fichiers. Ce processeur peut-être configuré pour utiliser |
| 23 | +un ensemble de **lecteur de fichier**. Il y a des lecteurs de fichiers (file-readers) dans les packages `jsdoc` et `ngdoc`. |
| 24 | +* `render-docs` - rendre les documents dans une propriété (`doc.renderedContent`) en utilisant |
| 25 | +un `templateEngine` (moteur de template), qui doit être fourni séparément - voir le package `nunjucks`. |
| 26 | +* `templateFinder` - recherche dans les répertoires à l'aide de modèle (pattern) pour trouver un template qui correspond au document donné. |
| 27 | +* `unescape-comments` - reformatte les marqueurs de commentaires pour ne pas casser le style des commentaires de jsdoc, |
| 28 | +par exemple `*/` |
| 29 | +* `write-files` - écrit les docs sur le disque |
| 30 | + |
| 31 | +#### Le package `nunjucks` |
| 32 | + |
| 33 | +Ce package fournit une implémentation de `templateEngine` basé sur nunjucks, qui est requis par le |
| 34 | +processeur `render-docs` du package `base`. |
| 35 | + |
| 36 | +* `nunjucks-template-engine` - fournit un `templateEngine` qui utilise la bibliothèque de template de Nunjucks |
| 37 | +pour rendre les documents en texte, tel que le HTML ou le JS, basé sur des templates. |
| 38 | + |
| 39 | +#### Le package `jsdoc` |
| 40 | + |
| 41 | +Ce package contient le lecteur de fichier (file-readers) suivant : |
| 42 | + |
| 43 | +* `jsdoc` - peut lire les documentations depuis les commentaires (avec le style jsdoc) dans les fichiers contenant le code source. |
| 44 | + |
| 45 | +Ce package contient les processeurs suivants : |
| 46 | + |
| 47 | +* `code-name` - détermine le nom du document selon le code qui est placé après la documention |
| 48 | +dans le fichier source. |
| 49 | +* `compute-path` - détermine le chemin du document, utilisé pour écrire le fichier et pour naviguer |
| 50 | +vers le document dans une application web. |
| 51 | +* `defaultTagTransforms` - fournit une collection de fonction de transformation des balises à appliquer à chaque balise. |
| 52 | +Regardez les transformations dans le processeur `tagExtractor`. |
| 53 | +* `parse-tags` - utilise un `tagParser` pour analyser les balises de jsdoc dans le contenu du document. |
| 54 | +* `extract-tags` - utilise un `tagExtractor` pour extraire l'information depuis les balises analysées. |
| 55 | +* `inline-tags` - recherche les docs pour les balises [`inline`](http://usejsdoc.org/about-inline-tags.html) |
| 56 | +qui ont besoin d'avoir de l'injection de contenu |
| 57 | +* `tagDefinitions` - fournit une collection de définitions de balise, et une map de la même façon, utilisé par |
| 58 | +`tagParser` et `tagExtractor`. |
| 59 | +* `tagExtractor` - fournit un service pour extraire l'information des balises et la convertir en des propriétés |
| 60 | +spécifiques sur le document, basé sur un ensemble de définitions de balise. |
| 61 | +Le package `jsdoc` contient des définitions pour un certain nombre de balise standard de jsdoc : `name`, |
| 62 | +`memberof`, `param`, `property`, `returns`, `module`, `description`, `usage`, |
| 63 | +`animations`, `constructor`, `class`, `classdesc`, `global`, `namespace`, `method`, `type` et |
| 64 | +`kind`. |
| 65 | +* `tagParser` - fournit un service pour analyser le contenu d'un document pour récupérer toutes les balises |
| 66 | +de style jsdoc. |
| 67 | + |
| 68 | +**Ce package ne fournit pas de templates, ni un `templateEngine` pour rendre les templates (utilisez le |
| 69 | +package `nunjucks` pour faire cela).** |
| 70 | + |
| 71 | +### Le package `ngdoc` |
| 72 | + |
| 73 | +Le package `ngdoc` charge automatiquement les packages `jsdoc` et `nunjucks`. |
| 74 | + |
| 75 | +Ce package contient les lecteurs de fichiers suivants, en plus de ceux prévus par le |
| 76 | +package `jsdocs` : |
| 77 | + |
| 78 | +* `ngdoc` - peut extraire un document depuis un fichier qui contient du ngdoc. |
| 79 | + |
| 80 | +En plus des processeurs fournis par le package `jsdoc`, ce package ajoute les processeurs suivants : |
| 81 | + |
| 82 | +* `api-docs` - |
| 83 | + |
| 84 | +Ce processeur exécute des processus qui sont spécifiquement liées à la documentation pour les composants de l'API. Il fait ce qui suit : |
| 85 | + |
| 86 | + - Détermine le nom du package pour le module (par exemple angular ou angular-sanitize) |
| 87 | + - Collecte tous les documents qui appartiennent au module |
| 88 | + - Les attache à la doc du module dans la propriété `components` |
| 89 | + - Détermine le chemin de l'URL vers le document dans l'application docs et le chemin de destination (OutputPath) du fichier final |
| 90 | + - Il relie les documents des services d'angular avec les documents des provider correspondant. |
| 91 | + |
| 92 | +api-docs a les options de configuration suivantes de disponibles (énumérés avec les valeurs par défaut) : |
| 93 | + |
| 94 | + ```js |
| 95 | + config.set('processing.api-docs', { |
| 96 | + outputPath: '${area}/${module}/${docType}/${name}.html', // Le chemin pour écrire la page d'un document de l'api. |
| 97 | + path: '${area}/${module}/${docType}/${name}', // L'url pour la page du document. |
| 98 | + moduleOutputPath: '${area}/${name}/index.html', // Le chemin pour écrire la page d'un module de l'api. |
| 99 | + modulePath: '${area}/${name}' // L'url pour la page du module. |
| 100 | + } |
| 101 | + }); |
| 102 | + ``` |
| 103 | + |
| 104 | +* `component-groups-generate` - |
| 105 | + |
| 106 | +* `compute-id` - |
| 107 | + |
| 108 | +* `filter-ngdocs` - |
| 109 | +Pour AngularJS, nous sommes seulement intéressés aux documents qui contiennent les balises @ngdoc. Ce processeur |
| 110 | +supprime les docs qui ne contiennent pas cette balise. |
| 111 | + |
| 112 | +* `partial-names` - |
| 113 | + |
| 114 | + |
| 115 | +Ce package fournit également un ensemble de templates pour générer un fichier HTML pour chaque document : api, |
| 116 | +directive, erreur, fonction de filtre, input, module, objet, aperçu, provider, service, type et un numéro |
| 117 | +pour supporter le rendu des exemples exécutables. |
| 118 | + |
| 119 | +### Le package `examples` |
| 120 | + |
| 121 | +Ce package est un mix qui fournit des processeurs supplémentaires pour travailler avec des exemples dans les docs : |
| 122 | + |
| 123 | +* `examples-parse` - |
| 124 | +Analyse les balises `<example>` depuis le contenu, la création des nouvelles docs seront convertis en fichiers |
| 125 | +supplémentaires qui pourront être chargés par l'application et utilisés, par exemple, en direct dans des démos |
| 126 | +d'exemples et des tests de bout en bout. |
| 127 | +* `examples-generate` - |
| 128 | + |
| 129 | + |
| 130 | + |
| 131 | +## Rendu HTML |
| 132 | + |
| 133 | +Nous rendons chacun de ces documents comme une page HTML. Nous utilisons le moteur de template Javascript |
| 134 | +"nunjucks" pour générer du code HTML basé sur les données de chaque document. Nous avons des balises nunjucks |
| 135 | +et des filtres qui peuvent rendre des liens et du texte markdown et mettre en évidence le code. |
| 136 | + |
| 137 | +Le template utilisé pour rendre le doc est calculé par un `templateFinder` (Chercheur de template), qui utilise le premier qui correspond |
| 138 | +à un ensemble de modèle (pattern) dans un ensemble de dossiers, fourni dans la configuration. Cela permet beaucoup de contrôle |
| 139 | +pour fournir des templates génériques pour la plupart des situations et des templates spécifiques pour des cas exceptionnels. |
| 140 | + |
| 141 | +Voici un exemple de modèle d'angularjs : |
| 142 | + |
| 143 | +``` |
| 144 | +rendering: { |
| 145 | +
|
| 146 | + ... |
| 147 | +
|
| 148 | + templatePatterns: [ |
| 149 | + '${ doc.template }', |
| 150 | + '${ doc.id }.${ doc.docType }.template.html', |
| 151 | + '${ doc.id }.template.html', |
| 152 | + '${ doc.docType }.template.html' |
| 153 | + ], |
| 154 | +
|
| 155 | + ... |
| 156 | +
|
| 157 | + templateFolders: [ |
| 158 | + 'templates' |
| 159 | + ] |
| 160 | +
|
| 161 | + }, |
| 162 | +``` |
0 commit comments