From 80e2f3f6bee6814c71cef3538d986b8c0c88073a Mon Sep 17 00:00:00 2001 From: Yannis Delmas Date: Sat, 29 Jan 2022 12:25:08 +0100 Subject: [PATCH 01/14] test de Grunt sur deux pages --- .gitignore | 2 + Gruntfile.js | 52 ++ README.md | 24 +- _page.twig | 51 ++ _recommandation.twig | 11 + docs/LICENSE.txt | 674 ++++++++++++++++++ docs/assets/css/default.css | 147 ++++ docs/assets/css/mint-and-grapes.css | 350 +++++++++ docs/assets/images/ecailles.png | Bin 0 -> 206 bytes docs/assets/images/github-mark-32px.png | Bin 0 -> 1714 bytes docs/assets/images/ricepaper.png | Bin 0 -> 133494 bytes docs/assets/js/glossary.js | 57 ++ docs/assets/js/leader-line.min.js | 2 + .../guide-generalites.html | 56 +- docs/guide-html.html | 234 ++++++ docs/guide-javascript.html | 38 + docs/guide-php.html | 38 + docs/guide-style.html | 230 ++++++ docs/index.html | 46 ++ docs/principes.html | 313 ++++++++ guide-generalites-010-fichiers.twig | 110 +++ guide-generalites.twig | 4 + package.json | 9 + principes.html => principes.twig | 37 +- 24 files changed, 2430 insertions(+), 55 deletions(-) create mode 100644 Gruntfile.js create mode 100644 _page.twig create mode 100644 _recommandation.twig create mode 100644 docs/LICENSE.txt create mode 100644 docs/assets/css/default.css create mode 100644 docs/assets/css/mint-and-grapes.css create mode 100644 docs/assets/images/ecailles.png create mode 100644 docs/assets/images/github-mark-32px.png create mode 100644 docs/assets/images/ricepaper.png create mode 100644 docs/assets/js/glossary.js create mode 100644 docs/assets/js/leader-line.min.js rename guide-generalites.html => docs/guide-generalites.html (79%) create mode 100644 docs/guide-html.html create mode 100644 docs/guide-javascript.html create mode 100644 docs/guide-php.html create mode 100644 docs/guide-style.html create mode 100644 docs/index.html create mode 100644 docs/principes.html create mode 100644 guide-generalites-010-fichiers.twig create mode 100644 guide-generalites.twig create mode 100644 package.json rename principes.html => principes.twig (90%) diff --git a/.gitignore b/.gitignore index 22d0d82..beadb7f 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ vendor +node_modules +package-lock.json diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..c80bf66 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,52 @@ +module.exports = function(grunt) { + let chalk = require('chalk'); + + let traceFile = function(f) { + if ( grunt.file.isFile(f) ) console.log(chalk.cyan(f)); + return true; + } + + grunt.initConfig({ + copy: { + main: { + expand: true, + src: '{assets/**,*.html}', + dest: 'docs/', + filter: traceFile, + }, + licence: { + src: 'LICENSE', + dest: 'docs/LICENSE.txt', + filter: traceFile, + } + }, + twigRender: { + options: { + functions: { + asset: function(arg) { return 'assets/' + arg; }, + templateName: function() { return grunt.task.current.files[0].template; }, + }, + filters: { + glob: function(arg) { return grunt.file.expand(arg); }, + }, + }, + main: { + files: [ + { + data: {}, + expand: true, + src: ["*.twig", "!*-+([0-9])?(-*).twig", "!_*.twig"], + // tous les modèles TWIG, hormis les composants et les partiels + dest: "docs/", + ext: ".html" + } + ] + } + } + }); + + grunt.loadNpmTasks('grunt-contrib-copy'); + grunt.loadNpmTasks('grunt-twig-render'); + + grunt.registerTask('default', ['copy', 'twigRender']); +}; \ No newline at end of file diff --git a/README.md b/README.md index 044fe91..af0414d 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,25 @@ # Le beau code web -Table des matières : [`index.html`](index.html) +## Documents et dossiers -Les principes sont dans [`principes.html`](principes.html). +Les fichiers destinés à la publication sont dans [`/docs`](docs). Ils sont mis à jour à l’aide de la commance `make` (cf. ci-dessous). -Les recommandations actées sont dans la branche `main`. Les propositions à discuter sont à placer dans des branches de développement spécifiques. +Table des matières : [`index.html`](docs/index.html) + +Les principes sont dans [`principes.html`](docs/principes.html). + +## Branches + +Les éléments actés sont dans la branche `main`. Les propositions à discuter sont à placer dans des branches de développement spécifiques. + +## Installation et mise en œuvre + +Ce dépôt utilise [NPM](https://www.npmjs.org/), le gestionnaire de paquets de [Node.js](https://nodejs.org/). Ces deux logiciels doivent être préalablement installés pour pouvoir mettre à jour les fichiers HTML publiés. + +La commande `npm install` permet d’installer et mettre à jour les éléments suivants: + +- [Grunt](https://gruntjs.com/) pour la gestion et la mise en œuvre des mises à jour. +- Plugin [grunt-contrib-copy](https://www.npmjs.com/package/grunt-contrib-copy) de Grunt pour la copie en l’état de fichiers. +- Plugin [grunt-twig-render](https://www.npmjs.com/package/grunt-twig-render) de Grunt, utilisant la bibliothèque [Twig.js](https://github.com/twigjs/twig.js), pour le rendu des modèles TWIG. + +Pour fabriquer les fichiers publiables, entrer la commande `grunt`. diff --git a/_page.twig b/_page.twig new file mode 100644 index 0000000..67ea092 --- /dev/null +++ b/_page.twig @@ -0,0 +1,51 @@ + + + + {# Ne pas retirer la ligne suivante, qui ne s'applique pas à ce document. #} + + {% set prismjs = 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.25.0' %} + {% block head %} + + + + {% block pageTitle %}Le beau code web{% endblock %} + + + + {% endblock %} + + +
+

{% block docTitle %}Le beau code web{% endblock %}

+
+
+ {% block docContent %} + {% for component in components %} + {% include component %} + {% endfor %} + {% endblock %} + {% if block('docContent')|trim is empty %} +

+ Il n’y a pas de recommandation validée pour l’instant. + N’hésitez pas à consulter notre dépôt Github pour faire des propositions. +

+ {% endif %} +
+ + + + + + + + \ No newline at end of file diff --git a/_recommandation.twig b/_recommandation.twig new file mode 100644 index 0000000..1c33628 --- /dev/null +++ b/_recommandation.twig @@ -0,0 +1,11 @@ +
+

+ {% block recTitle %}{% endblock %} + +

+ {% block recContent %}{% endblock %} +
+ Justification + {% block recRationale %}{% endblock %} +
+
\ No newline at end of file diff --git a/docs/LICENSE.txt b/docs/LICENSE.txt new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/docs/LICENSE.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/docs/assets/css/default.css b/docs/assets/css/default.css new file mode 100644 index 0000000..e30e77d --- /dev/null +++ b/docs/assets/css/default.css @@ -0,0 +1,147 @@ +@charset "utf-8"; + +@import url(https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,700;1,400;1,700&display=swap); +@import url(https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap); +@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta2/css/all.min.css); + + +/* Paramètres généraux */ + +:root { + --famille-titre: 'EB Garamond', 'Times New Roman', Times, serif; + --famille-texte: 'Open Sans', 'Lucida Sans', 'Lucida Sans Unicode', Arial, Helvetica, sans-serif; + --rapport-titre-texte: 1.2; /* rapport de hauteur d'x entre les deux familles précédentes */ + --famille-tags: var(--famille-texte); + --teinte-tags: 90, 50%; + --teinte-complements: 0, 0%; + --teinte-justifications: 200, 50%; + --line-height: 1.45; + --inc-typo: 1.189207115; /* = √√2 : incrément typographique standard simple */ + --inc-typo-x2: 1.414213562; /* = √2 : incrément typographique double */ + --inc-typo-x3: 1.681792831; /* = √2√√2 : incrément typographique triple */ + --inc-typo-x4: 2; /* incrément typographique quadruple */ + --inc-typo-x6: 2.828427124; /* = 2√2 : incrément typographique sextuple */ +} + + +/* Typographie générale */ + +body { + font-family: var(--famille-texte); + line-height: var(--line-height); +} + +h1, h2, h3, h4, h5, h6, .bcw { + font-family: var(--famille-titre); + font-style: italic; + font-feature-settings: "liga", "hlig", "clig"; /* TODO ne fonctionne pas avec Google fonts */ + text-shadow: 1px 1px 2px #999999; + text-rendering: optimizeLegibility; +} + +h1, h2, h3, h4, h5, h6 { + text-align: left; page-break-after: avoid; +} + +h1 { font-size: calc(var(--inc-typo-x4) * var(--rapport-titre-texte) * 1rem); } +h2 { font-size: calc(var(--inc-typo-x3) * var(--rapport-titre-texte) * 1rem); } +h3 { font-size: calc(var(--inc-typo-x2) * var(--rapport-titre-texte) * 1rem); } +h4 { font-size: calc(var(--inc-typo) * var(--rapport-titre-texte) * 1rem); } +.bcw { font-size: calc(var(--rapport-titre-texte) * 100%); } + + +/* Typographie linguistique */ + +:lang(fr) > * { quotes: "«\202F" "\202F»" "‹\202F" "\202F›"; } +:lang(en) > * { quotes: "“" "”" "‘" "’"; } +/* cf. https://drafts.csswg.org/css-content/#quotes */ +/* Unicode : U+202F Narrow No-Break Space (NNBSP) */ + +:lang(fr) > :lang(en) { font-style: italic; } +:lang(fr) > q:lang(en)::before, :lang(fr) > q:lang(en)::after { font-style: normal; } + + +/* Mise en page */ + +body { + max-width: 960px; margin: 0 auto; padding: 0 2.5rem; + background-image: url(../images/ricepaper.png); +} + +h1 { margin: 4rem 0 1rem; } +h2 { margin: 3rem 0 1rem; } +h3 { margin: 2rem 0 1rem; } +p { margin: 0.5rem 0; } +ul, ol, dd { margin: 0; padding: 0 0 0 4rem; } + +footer { margin: 2rem 0 0; } + + +/* Auto-liens dans des titres */ + +h2, h3, h4, h5, h6 { position: relative; } +a.self-link { + position: absolute; left: -1.5em; width: 1em; height: calc(var(--line-height) * 1em); + text-align: center; + color: inherit; + transition: opacity 0.25s; opacity: 0.25; text-decoration: none; +} +a.self-link:hover { opacity: 1; text-decoration: none; } +h2 > a.self-link::before, h3 > a.self-link::before, h4 > a.self-link::before, +h5 > a.self-link::before, h6 > a.self-link::before { + content: "⚓"; /* TODO ⚓ ou § ? */ + font-size: calc(100% / var(--inc-typo)); +} + + +/* Principes de référence et modalités RFC-2119 */ + +.principle { + font-family: var(--famille-tags); + background-color: hsl(var(--teinte-tags), 75%); + color: hsl(var(--teinte-tags), 25%); + border: 1px solid hsl(var(--teinte-tags), 50%); + padding: 0 0.25rem; border-radius: 0.25rem; + text-decoration: none; font-weight: normal; +} +h2 .principle, h3 .principle, h4 .principle { + font-size: calc(100% / var(--rapport-titre-texte)); +} + +.rfc2119 { font-variant: small-caps; } + + +/* Compléments */ + +aside, details.rationale { + margin: 1rem 4rem; padding: 0 1rem; border-radius: 1rem; + font-size: calc(100% / var(--inc-typo)); +} + +aside { + border: 1px solid hsl(var(--teinte-complements), 40%); + background-color: hsla(var(--teinte-complements), 75%, 0.2); +} + +aside.bonus::before { + content: "+"; + display: block; + font-size: calc(var(--inc-typo-x2) * 100%); font-weight: bold; + width: 1rem; height: 1rem; line-height: 1rem; margin: -0.5rem 0; border-radius: 0.5rem; + text-align: center; + background-color: hsl(var(--teinte-complements), 40%); +} + +details.rationale { + border: 1px solid hsl(var(--teinte-justifications), 40%); + background-color: hsla(var(--teinte-justifications), 75%, 0.2); +} +details.rationale > summary { + color: hsl(var(--teinte-justifications), 20%); + font-weight: bold; +} + + +/* Affichage des codes */ + +.no-wrap, :not(pre) > code.no-wrap { white-space: nowrap; } diff --git a/docs/assets/css/mint-and-grapes.css b/docs/assets/css/mint-and-grapes.css new file mode 100644 index 0000000..d2b49d9 --- /dev/null +++ b/docs/assets/css/mint-and-grapes.css @@ -0,0 +1,350 @@ +@charset "utf-8"; + +@import url(https://fonts.googleapis.com/css2?family=Merriweather:ital,wght@0,400;0,700;1,400;1,700&display=swap); +@import url(https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap); +@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css); + + +/* Paramètres généraux */ + +:root { + --famille-titre: 'Merriweather', 'Times', serif; + --famille-texte: 'Open Sans', 'Lucida Sans', 'Lucida Sans Unicode', Arial, Helvetica, sans-serif; + --rapport-titre-texte: 1; /* rapport de hauteur d'x entre les deux familles précédentes */ + --famille-tags: var(--famille-texte); + --teinte-primaire: 165, 88%; + --teinte-secondaire: 288, 30%; + --teinte-complements: 0, 0%; + --teinte-justifications: 200, 50%; + --couleur-corps-texte: #555; + --couleur-titre: #333; + --couleur-mark-text: var(--couleur-titre); + --couleur-mark1: hsl(50, 60%, 80%); + --couleur-mark2: hsl(110, 60%, 80%); + --couleur-mark3: hsl(170, 60%, 80%); + --couleur-mark4: hsl(230, 60%, 80%); + --couleur-mark5: hsl(290, 60%, 80%); + --couleur-mark6: hsl(350, 60%, 80%); + --line-height: 1.55; + --inc-typo: 1.189207115; /* = √√2 : incrément typographique standard simple */ + --inc-typo-x2: 1.414213562; /* = √2 : incrément typographique double */ + --inc-typo-x3: 1.681792831; /* = √2√√2 : incrément typographique triple */ + --inc-typo-x4: 2; /* incrément typographique quadruple */ + --inc-typo-x6: 2.828427124; /* = 2√2 : incrément typographique sextuple */ +} + + +/* Typographie générale */ + +::selection { + color: #fff; + background-color: hsl(var(--teinte-secondaire), 60%); +} + +body { + font-family: var(--famille-texte); + line-height: var(--line-height); + color: var(--couleur-corps-texte); + background-image: url(../images/ecailles.png); +} +body:before { + content: ''; + position: fixed; + top: 0; + left: 0; + right: 0; + height: 8px; + background-color: hsl(var(--teinte-secondaire), 41%); + z-index: 1; +} + +h1, +h2, +h3, +h4, +h5, +h6, +.bcw { + font-family: var(--famille-titre); + color: var(--couleur-titre); + font-feature-settings: "liga", "hlig", "clig"; /* TODO ne fonctionne pas avec Google fonts */ + text-rendering: optimizeLegibility; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + text-align: left; + page-break-after: avoid; +} + +h1 { + font-size: calc(var(--inc-typo-x4) * var(--rapport-titre-texte) * 1rem); + color: hsl(var(--teinte-secondaire), 41%); +} + +h2 { + font-size: calc(var(--inc-typo-x3) * var(--rapport-titre-texte) * 1rem); +} + +h3 { + font-size: calc(var(--inc-typo-x2) * var(--rapport-titre-texte) * 1rem); +} + +h4 { + font-size: calc(var(--inc-typo) * var(--rapport-titre-texte) * 1rem); +} + +.bcw { + font-size: calc(var(--rapport-titre-texte) * 100%); +} + + +/* Typographie linguistique */ + +:lang(fr)>* { + quotes: "«\202F""\202F»""‹\202F""\202F›"; +} + +:lang(en)>* { + quotes: "“""”""‘""’"; +} + +/* cf. https://drafts.csswg.org/css-content/#quotes */ +/* Unicode : U+202F Narrow No-Break Space (NNBSP) */ + +:lang(fr)> :lang(en) { + font-style: italic; +} + +:lang(fr)>q:lang(en)::before, +:lang(fr)>q:lang(en)::after { + font-style: normal; +} + + +/* Mise en page */ + +body { + max-width: 960px; + margin: 0 auto; + padding: 0 2.5rem; +} + +h1 { + margin: 4rem 0 1rem; +} + +h2 { + margin: 3rem 0 1rem; +} + +h3 { + margin: 2rem 0 1rem; +} + +p { + margin: 0.5rem 0; +} + +ul, +ol, +dd { + margin: 0; + padding: 0 0 0 4rem; +} + +footer { + margin: 2rem 0 0; +} + + +/* Auto-liens dans des titres */ + +h2, +h3, +h4, +h5, +h6 { + position: relative; +} + +a.self-link { + position: absolute; + left: -1.5em; + width: 1em; + height: calc(var(--line-height) * 1em); + text-align: center; + color: inherit; + transition: opacity 0.25s; + opacity: 0.3; + text-decoration: none; +} + +a.self-link:hover { + opacity: 1; + text-decoration: none; +} + +h2>a.self-link::before, +h3>a.self-link::before, +h4>a.self-link::before, +h5>a.self-link::before, +h6>a.self-link::before { + content: "💬"; + font-size: calc(100% / var(--inc-typo)); +} + + +/* Autres règles de mise en forme */ + +a { + color: hsl(var(--teinte-primaire), 41%); +} +a:visited { + color: hsl(var(--teinte-secondaire), 60%); +} +a:hover { + opacity: .7; +} + +.sr-only { /* only for screen readers */ + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + + +/* Principes de référence et modalités RFC-2119 */ + +.principle { + font-family: var(--famille-tags); + background-color: hsl(var(--teinte-primaire), 85%); + color: hsl(var(--teinte-primaire), 35%); + border: 1px solid hsl(var(--teinte-primaire), 60%); + padding: 0 0.25rem; + border-radius: 0.25rem; + text-decoration: none; + font-weight: normal; +} +.principle:visited { + background-color: hsl(var(--teinte-primaire), 85%); + color: hsl(var(--teinte-primaire), 35%); + border: 1px solid hsl(var(--teinte-primaire), 60%); +} + +h2 .principle, +h3 .principle, +h4 .principle { + font-size: calc(100% / var(--rapport-titre-texte)); +} + +.rfc2119 { + font-variant: small-caps; +} + + +/* Compléments */ + +aside, +details.rationale { + margin: 1rem 4rem; + padding: 0 1rem; + border-radius: 1rem; + font-size: calc(100% / var(--inc-typo)); +} + +aside { + border: 1px solid hsl(var(--teinte-complements), 40%); + background-color: hsla(var(--teinte-complements), 75%, 0.2); +} + +aside.bonus::before { + content: "+"; + display: block; + font-size: calc(var(--inc-typo-x2) * 100%); + font-weight: bold; + width: 1rem; + height: 1rem; + line-height: 1rem; + margin: -0.5rem 0; + border-radius: 0.5rem; + text-align: center; + background-color: hsl(var(--teinte-complements), 40%); + color: hsl(var(--teinte-complements), 75%); +} + +details.rationale { + border: 1px solid hsl(var(--teinte-justifications), 40%); + background-color: hsla(var(--teinte-justifications), 75%, 0.2); +} + +details.rationale>summary { + color: hsl(var(--teinte-justifications), 20%); + font-weight: bold; +} + + +/* Affichage des codes */ + +.no-wrap, +:not(pre)>code.no-wrap { + white-space: nowrap; +} + +mark[title="1"].label, +code mark[title="1"] { + background-color: var(--couleur-mark1); +} +mark[title="2"].label, +code mark[title="2"] { + background-color: var(--couleur-mark2); +} +mark[title="3"].label, +code mark[title="3"] { + background-color: var(--couleur-mark3); +} +mark[title="4"].label, +code mark[title="4"] { + background-color: var(--couleur-mark4); +} +mark[title="5"].label, +code mark[title="5"] { + background-color: var(--couleur-mark5); +} +mark[title="6"].label, +code mark[title="6"] { + background-color: var(--couleur-mark6); +} +code mark[title] { + position: relative; +} +code mark[title]::before { + content: attr(title); + font-size: calc(100% / var(--inc-typo-x2)); + position: absolute; + top: -0.5em; + left: -0.75em; + background-color: inherit; +} +mark.label, +code mark[title]::before { + display: inline-block; + height: 1em; + width: 1em; + line-height: 1em; + border-radius: 0.5em; + text-align: center; + color: var(--couleur-mark-text); + font-family: var(--famille-texte); + font-style: normal; +} diff --git a/docs/assets/images/ecailles.png b/docs/assets/images/ecailles.png new file mode 100644 index 0000000000000000000000000000000000000000..a1177a9562460691b2c784f1163153ca56a9fe22 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^20$#r!3HEx+wWTrq^5ehIEHu}e>>HXi&c@w<+s?&I@6nyIlL zpHD4)*01@x$$r_I{6CUFfvhCcjk6+r*QkXFukN&e^8eY9edjjvCWHVT$l&Sf=d#Wz Gp$P!U@K!GX literal 0 HcmV?d00001 diff --git a/docs/assets/images/github-mark-32px.png b/docs/assets/images/github-mark-32px.png new file mode 100644 index 0000000000000000000000000000000000000000..8b25551a97921681334176ee143b41510a117d86 GIT binary patch literal 1714 zcmaJ?X;2eq7*4oFu!ne{XxAht2qc?8LXr|_LPCfTpaBK7K$c{I0Ld=NLIOeuC;@2) zZ$K%a)k+m-s0>xHmKxL%0V&0TRzzznhgyqrIC$F)0{WwLXLrBvd*^wc_uSc%h%m9E z{W5z3f#4_!7RvAyFh6!S_*<8qJ%KOIm?#E|L=rJQq=gB5C6WLG5;c?r%V0>EmEH#X z5eSwPRa6WXBMs#$5H%GtW2go-in9p>zW@UYDNNWc^XOXZQ? z1QjEV00I#$3^1wQUJ8&-2UsjB-G|9y(LDhMNN3PM{APL4eYi{(m*ERcUnJa{R+-3^ z34^A6;U^v`8N*O6ji%S@sd{fJqD`XFIUJ5zgTe5^5nj414F(y!G&=H(f)Lgzv?>%+ zAsWD}2qhpH7>|TU`X&W6IxDNuO_vET7|j5oG&&VDr!)hUO8+0KR?nh!m<)a!?|%yG zqOwq!CWCcIhE{<$E|F|@g>nP6FoYr6C<8>D?ID9%&5J(4oSbR1I^byW*g@__U z4QsF&uJSEcFeleM3~ChjEQGbHOjsGDMbyAl(p=Ttv9RaVo8~I#js@@Y9C^_2U})yn zzSHU%6FxuY?d;&65MyR({^lU*3$z$ZllDb(o&<7d;A_`h2U+3~BJ2Hv`{W}KEU801#cv_B|9Cm!ynR{S`AMsSn z;7E=B;mb!wx$L;S>yGXG^6=&WlQn9$s?&L%Y1D8TI^MlKB1DqsEng$>f4=xYWBoPI z_S1p!sJ#d2?YI4kPA{k}Eby?F=f-J9zIc`YDl^pzjVm~9ebE?Hn?t0Nx+la|D0MB; z9)2xv1G>a1|A9kQ>~DV<=X3-4yC&n!m8-3K#P z{X@0zRuQsy$+N ziSCoLJU{Z$nQy4A4Y5UJ07$5FA~qL2%Q+cLaqDU?Lz3?=BC5;Nk6BbTmmceEaM>-Z zi>O&-dSE=%ex;vcvCOk{*JQ5^_4M z4lW7%l9IqY(z7pV(?I@@8=KPFO82)O{VDI18-*d-k$YmI^XiuPs_LuFw<^ZcD}yP5 c*NrbeloN*74g`U%%F6r~k%+>C^#XapzmV0H-2eap literal 0 HcmV?d00001 diff --git a/docs/assets/images/ricepaper.png b/docs/assets/images/ricepaper.png new file mode 100644 index 0000000000000000000000000000000000000000..acaf07ebe49891586f5a37cb951462d7ec9bcbf2 GIT binary patch literal 133494 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%0DZo+z=uAL`8sSf^@{WYf~dmiWyhFs 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 qsD4!x(xwa25cCD?WRK(i{_}q`L1yE=cO',X={disc:{elmId:"leader-line-disc",noRotate:!0,bBox:{left:-5,top:-5,width:10,height:10,right:5,bottom:5},widthR:2.5,heightR:2.5,bCircle:5,sideLen:5,backLen:5,overhead:0,outlineBase:1,outlineMax:4},square:{elmId:"leader-line-square",noRotate:!0,bBox:{left:-5,top:-5,width:10,height:10,right:5,bottom:5},widthR:2.5,heightR:2.5,bCircle:5,sideLen:5,backLen:5,overhead:0,outlineBase:1,outlineMax:4},arrow1:{elmId:"leader-line-arrow1",bBox:{left:-8,top:-8,width:16,height:16,right:8,bottom:8},widthR:4,heightR:4,bCircle:8,sideLen:8,backLen:8,overhead:8,outlineBase:2,outlineMax:1.5},arrow2:{elmId:"leader-line-arrow2",bBox:{left:-7,top:-8,width:11,height:16,right:4,bottom:8},widthR:2.75,heightR:4,bCircle:8,sideLen:8,backLen:7,overhead:4,outlineBase:1,outlineMax:1.75},arrow3:{elmId:"leader-line-arrow3",bBox:{left:-4,top:-5,width:12,height:10,right:8,bottom:5},widthR:3,heightR:2.5,bCircle:8,sideLen:5,backLen:4,overhead:8,outlineBase:1,outlineMax:2.5},hand:{elmId:"leader-line-hand",bBox:{left:-3,top:-12,width:40,height:24,right:37,bottom:12},widthR:10,heightR:6,bCircle:37,sideLen:12,backLen:3,overhead:37},crosshair:{elmId:"leader-line-crosshair",noRotate:!0,bBox:{left:-96,top:-96,width:192,height:192,right:96,bottom:96},widthR:48,heightR:48,bCircle:96,sideLen:96,backLen:96,overhead:0}},F={behind:Y,disc:"disc",square:"square",arrow1:"arrow1",arrow2:"arrow2",arrow3:"arrow3",hand:"hand",crosshair:"crosshair"},q={disc:"disc",square:"square",arrow1:"arrow1",arrow2:"arrow2",arrow3:"arrow3",hand:"hand",crosshair:"crosshair"},G=[b,k,L,A],D="auto",Q={x:"left",y:"top",width:"width",height:"height"},z=80,j=4,H=5,U=120,K=8,J=3.75,$=10,ee=30,te=.5522847,ne=.25*Math.PI,m=/^\s*(\-?[\d\.]+)\s*(\%)?\s*$/,ae="http://www.w3.org/2000/svg",S="-ms-scroll-limit"in document.documentElement.style&&"-ms-ime-align"in document.documentElement.style&&!window.navigator.msPointerEnabled,ie=!S&&!!document.uniqueID,oe="MozAppearance"in document.documentElement.style,le=!(S||oe||!window.chrome||!window.CSS),re=!S&&!ie&&!oe&&!le&&!window.chrome&&"WebkitAppearance"in document.documentElement.style,se=ie||S?.2:.1,ue={path:T,lineColor:"coral",lineSize:4,plugSE:[Y,"arrow1"],plugSizeSE:[1,1],lineOutlineEnabled:!1,lineOutlineColor:"indianred",lineOutlineSize:.25,plugOutlineEnabledSE:[!1,!1],plugOutlineSizeSE:[1,1]},he=(p={}.toString,c={}.hasOwnProperty.toString,d=c.call(Object),function(e){return e&&"[object Object]"===p.call(e)&&(!(e=Object.getPrototypeOf(e))||(e=e.hasOwnProperty("constructor")&&e.constructor)&&"function"==typeof e&&c.call(e)===d)}),pe=Number.isFinite||function(e){return"number"==typeof e&&window.isFinite(e)},g=(_={ease:[.25,.1,.25,1],linear:[0,0,1,1],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1]},v=1e3/60/2,l=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||function(e){setTimeout(e,v)},r=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame||function(e){clearTimeout(e)},i=Number.isFinite||function(e){return"number"==typeof e&&window.isFinite(e)},E=[],x=0,{add:function(n,e,t,a,i,o,l){var r,s,u,h,p,c,d,f,y,m,S=++x;function g(e,t){return{value:n(t),timeRatio:e,outputRatio:t}}if("string"==typeof i&&(i=_[i]),n=n||function(){},t=this._endIndex||this._string[this._currentIndex]<"0"||"9"=this._endIndex||this._string[this._currentIndex]<"0"||"9"=this._endIndex)return null;var e=null,t=this._string[this._currentIndex];if(this._currentIndex+=1,"0"===t)e=0;else{if("1"!==t)return null;e=1}return this._skipOptionalSpacesOrDelimiter(),e}};function n(e){if(!e||0===e.length)return[];var t=new i(e),n=[];if(t.initialCommandIsMoveTo())for(;t.hasMoreData();){var a=t.parseSegment();if(null===a)break;n.push(a)}return n}function l(e){return e.map(function(e){return{type:e.type,values:Array.prototype.slice.call(e.values)}})}function r(e){var u=[],h=null,p=null,c=null,d=null,f=null,y=null,m=null;return e.forEach(function(e){var t,n,a,i,o,l,r,s;"M"===e.type?(r=e.values[0],s=e.values[1],u.push({type:"M",values:[r,s]}),d=y=r,f=m=s):"C"===e.type?(o=e.values[0],l=e.values[1],t=e.values[2],n=e.values[3],r=e.values[4],s=e.values[5],u.push({type:"C",values:[o,l,t,n,r,s]}),p=t,c=n,d=r,f=s):"L"===e.type?(r=e.values[0],s=e.values[1],u.push({type:"L",values:[r,s]}),d=r,f=s):"H"===e.type?(r=e.values[0],u.push({type:"L",values:[r,f]}),d=r):"V"===e.type?(s=e.values[0],u.push({type:"L",values:[d,s]}),f=s):"S"===e.type?(t=e.values[0],n=e.values[1],r=e.values[2],s=e.values[3],i="C"===h||"S"===h?(a=d+(d-p),f+(f-c)):(a=d,f),u.push({type:"C",values:[a,i,t,n,r,s]}),p=t,c=n,d=r,f=s):"T"===e.type?(r=e.values[0],s=e.values[1],l="Q"===h||"T"===h?(o=d+(d-p),f+(f-c)):(o=d,f),u.push({type:"C",values:[a=d+2*(o-d)/3,i=f+2*(l-f)/3,r+2*(o-r)/3,s+2*(l-s)/3,r,s]}),p=o,c=l,d=r,f=s):"Q"===e.type?(o=e.values[0],l=e.values[1],r=e.values[2],s=e.values[3],u.push({type:"C",values:[a=d+2*(o-d)/3,i=f+2*(l-f)/3,r+2*(o-r)/3,s+2*(l-s)/3,r,s]}),p=o,c=l,d=r,f=s):"A"===e.type?(n=e.values[0],a=e.values[1],i=e.values[2],o=e.values[3],l=e.values[4],r=e.values[5],s=e.values[6],0===n||0===a?(u.push({type:"C",values:[d,f,r,s,r,s]}),d=r,f=s):d===r&&f===s||b(d,f,r,s,n,a,i,o,l).forEach(function(e){u.push({type:"C",values:e}),d=r,f=s})):"Z"===e.type&&(u.push(e),d=y,f=m),h=e.type}),u}var s=e.SVGPathElement.prototype.setAttribute,u=e.SVGPathElement.prototype.removeAttribute,d=e.Symbol?e.Symbol():"__cachedPathData",f=e.Symbol?e.Symbol():"__cachedNormalizedPathData",b=function(e,t,n,a,i,o,l,r,s,u){function h(e,t,n){return{x:e*Math.cos(n)-t*Math.sin(n),y:e*Math.sin(n)+t*Math.cos(n)}}var p=Math.PI*l/180,c=[];u?(_=u[0],v=u[1],S=u[2],g=u[3]):(e=(m=h(e,t,-p)).x,t=m.y,1<(m=(y=(e-(n=(f=h(n,a,-p)).x))/2)*y/(i*i)+(d=(t-(a=f.y))/2)*d/(o*o))&&(i*=m=Math.sqrt(m),o*=m),f=i*i,m=o*o,S=(f=(r===s?-1:1)*Math.sqrt(Math.abs((f*m-f*d*d-m*y*y)/(f*d*d+m*y*y))))*i*d/o+(e+n)/2,g=f*-o*y/i+(t+a)/2,_=Math.asin(parseFloat(((t-g)/o).toFixed(9))),v=Math.asin(parseFloat(((a-g)/o).toFixed(9))),e120*Math.PI/180&&(d=v,f=n,y=a,v=s&&_=e.duration&&e.count&&e.loopsLeft<=1)return a=e.frames[e.lastFrame=e.reverse?0:e.frames.length-1],e.frameCallback(a.value,!0,a.timeRatio,a.outputRatio),void(e.framesStart=null);if(t>e.duration){if(n=Math.floor(t/e.duration),e.count){if(n>=e.loopsLeft)return a=e.frames[e.lastFrame=e.reverse?0:e.frames.length-1],e.frameCallback(a.value,!0,a.timeRatio,a.outputRatio),void(e.framesStart=null);e.loopsLeft-=n}e.framesStart+=e.duration*n,t=i-e.framesStart}e.reverse&&(t=e.duration-t),a=e.frames[e.lastFrame=Math.round(t/v)],!1!==e.frameCallback(a.value,!1,a.timeRatio,a.outputRatio)?o=!0:e.framesStart=null}}),o&&(e=l.call(window,xe))}function be(e,t){e.framesStart=Date.now(),null!=t&&(e.framesStart-=e.duration*(e.reverse?1-t:t)),e.loopsLeft=e.count,e.lastFrame=null,xe()}function ke(t,n){var e,a;return typeof t!=typeof n||(e=he(t)?"obj":Array.isArray(t)?"array":"")!=(he(n)?"obj":Array.isArray(n)?"array":"")||("obj"===e?ke(a=Object.keys(t).sort(),Object.keys(n).sort())||a.some(function(e){return ke(t[e],n[e])}):"array"===e?t.length!==n.length||t.some(function(e,t){return ke(e,n[t])}):t!==n)}function we(n){return n&&(he(n)?Object.keys(n).reduce(function(e,t){return e[t]=we(n[t]),e},{}):Array.isArray(n)?n.map(we):n)}function Oe(e){var t,n,a,i=1,o=e=(e+"").trim();function l(e){var t=1,e=m.exec(e);return e&&(t=parseFloat(e[1]),e[2]?t=0<=t&&t<=100?t/100:1:(t<0||1=Math.abs(n)?0<=t?k:A:0<=n?L:b))})),f.position_path!==y.position_path||f.position_lineStrokeWidth!==y.position_lineStrokeWidth||[0,1].some(function(e){return f.position_plugOverheadSE[e]!==y.position_plugOverheadSE[e]||(t=v[e],n=y.position_socketXYSE[e],t.x!==n.x||t.y!==n.y||t.socketId!==n.socketId)||(t=g[e],n=y.position_socketGravitySE[e],(e=null==t?"auto":Array.isArray(t)?"array":"number")!=(null==n?"auto":Array.isArray(n)?"array":"number")||("array"==e?t[0]!==n[0]||t[1]!==n[1]:t!==n));var t,n})){switch(l.pathList.baseVal=_=[],l.pathList.animVal=null,f.position_path){case P:_.push([E(v[0]),E(v[1])]);break;case N:t="number"==typeof g[0]&&0j?(f.position_lineStrokeWidth-j)*H:0),e.socketId===b?{x:0,y:-(i=(i=(e.y-n.y)/2)=t.x:t.dirId===r?e.y>=t.y:e.x<=t.x}function f(e,t){return t.dirId===i||t.dirId===r?e.x===t.x:e.y===t.y}function y(e){return e[0]?{contain:0,notContain:1}:{contain:1,notContain:0}}function m(e,t,n){return Math.abs(t[n]-e[n])}function S(e,t,n){return"x"===n?e.x=ee?S(u[t.notContain],u[t.contain],o[t.contain]):u[t.contain].dirId)):(i=[{x:u[0].x,y:u[0].y},{x:u[1].x,y:u[1].y}],s.forEach(function(e,t){var n=0===t?1:0,a=m(i[t],i[n],o[t]);a$&&(d[a]-e<$&&(e=d[a]-$),s=Ve(n[0],n[1],(p?e:d[a]-e)/d[a]),_[a]=p?[s,n[1]]:[n[0],s],d[a]-=e)):(d[a]=d[a]||Te.apply(null,n),d[a]>$&&(d[a]-e<$&&(e=d[a]-$),s=Ne(n[0],n[1],n[2],n[3],We(n[0],n[1],n[2],n[3],p?e:d[a]-e)),o=p?(i=n[0],s.toP1):(i=n[3],s.fromP2),l=Math.atan2(i.y-s.y,s.x-i.x),r=Ae(s,o),s.x=i.x+Math.cos(l)*e,s.y=i.y+Math.sin(l)*e*-1,o.x=s.x+Math.cos(l)*r,o.y=s.y+Math.sin(l)*r*-1,_[a]=p?[s,s.toP1,s.toP2,n[3]]:[n[0],s.fromP1,s.fromP2,s],d[a]=null)):e<0&&(n=_[a=p?0:_.length-1],s=v[t].socketId,t=-c[t]["x"==(u=s===A||s===k?"x":"y")?"width":"height"],h=(e=en.outlineMax&&(t=n.outlineMax),t*=2*n.outlineBase,y=Xe(r,u.plugOutline_strokeWidthSE,e,t)||y,y=Xe(r,u.plugOutline_inStrokeWidthSE,e,u.plugOutline_colorTraSE[e]?t-se/(u.line_strokeWidth/ue.lineSize)/s.plugSizeSE[e]*2:t/2)||y)}),y)),(t.faces||U.line||U.plug||U.lineOutline||U.plugOutline)&&(U.faces=(g=(m=e).curStats,_=m.aplStats,v=m.events,E=!1,!g.line_altColor&&Xe(m,_,"line_color",S=g.line_color,v.apl_line_color)&&(m.lineFace.style.stroke=S,E=!0),Xe(m,_,"line_strokeWidth",S=g.line_strokeWidth,v.apl_line_strokeWidth)&&(m.lineShape.style.strokeWidth=S+"px",E=!0,(oe||ie)&&(je(m,m.lineShape),ie&&(je(m,m.lineFace),je(m,m.lineMaskCaps)))),Xe(m,_,"lineOutline_enabled",S=g.lineOutline_enabled,v.apl_lineOutline_enabled)&&(m.lineOutlineFace.style.display=S?"inline":"none",E=!0),g.lineOutline_enabled&&(Xe(m,_,"lineOutline_color",S=g.lineOutline_color,v.apl_lineOutline_color)&&(m.lineOutlineFace.style.stroke=S,E=!0),Xe(m,_,"lineOutline_strokeWidth",S=g.lineOutline_strokeWidth,v.apl_lineOutline_strokeWidth)&&(m.lineOutlineMaskShape.style.strokeWidth=S+"px",E=!0,ie&&(je(m,m.lineOutlineMaskCaps),je(m,m.lineOutlineFace))),Xe(m,_,"lineOutline_inStrokeWidth",S=g.lineOutline_inStrokeWidth,v.apl_lineOutline_inStrokeWidth)&&(m.lineMaskShape.style.strokeWidth=S+"px",E=!0,ie&&(je(m,m.lineOutlineMaskCaps),je(m,m.lineOutlineFace)))),Xe(m,_,"plug_enabled",S=g.plug_enabled,v.apl_plug_enabled)&&(m.plugsFace.style.display=S?"inline":"none",E=!0),g.plug_enabled&&[0,1].forEach(function(n){var e=g.plug_plugSE[n],t=e!==Y?X[q[e]]:null,a=Ze(n,t);Xe(m,_.plug_enabledSE,n,S=g.plug_enabledSE[n],v.apl_plug_enabledSE)&&(m.plugsFace.style[a.prop]=S?"url(#"+m.plugMarkerIdSE[n]+")":"none",E=!0),g.plug_enabledSE[n]&&(Xe(m,_.plug_plugSE,n,e,v.apl_plug_plugSE)&&(m.plugFaceSE[n].href.baseVal="#"+t.elmId,Ue(m,m.plugMarkerSE[n],a.orient,t.bBox,m.svg,m.plugMarkerShapeSE[n],m.plugsFace),E=!0,oe&&je(m,m.plugsFace)),Xe(m,_.plug_colorSE,n,S=g.plug_colorSE[n],v.apl_plug_colorSE)&&(m.plugFaceSE[n].style.fill=S,E=!0,(le||re||ie)&&!g.line_colorTra&&je(m,ie?m.lineMaskCaps:m.capsMaskLine)),["markerWidth","markerHeight"].forEach(function(e){var t="plug_"+e+"SE";Xe(m,_[t],n,S=g[t][n],v["apl_"+t])&&(m.plugMarkerSE[n][e].baseVal.value=S,E=!0)}),Xe(m,_.plugOutline_enabledSE,n,S=g.plugOutline_enabledSE[n],v.apl_plugOutline_enabledSE)&&(S?(m.plugFaceSE[n].style.mask="url(#"+m.plugMaskIdSE[n]+")",m.plugOutlineFaceSE[n].style.display="inline"):(m.plugFaceSE[n].style.mask="none",m.plugOutlineFaceSE[n].style.display="none"),E=!0),g.plugOutline_enabledSE[n]&&(Xe(m,_.plugOutline_plugSE,n,e,v.apl_plugOutline_plugSE)&&(m.plugOutlineFaceSE[n].href.baseVal=m.plugMaskShapeSE[n].href.baseVal=m.plugOutlineMaskShapeSE[n].href.baseVal="#"+t.elmId,[m.plugMaskSE[n],m.plugOutlineMaskSE[n]].forEach(function(e){e.x.baseVal.value=t.bBox.left,e.y.baseVal.value=t.bBox.top,e.width.baseVal.value=t.bBox.width,e.height.baseVal.value=t.bBox.height}),E=!0),Xe(m,_.plugOutline_colorSE,n,S=g.plugOutline_colorSE[n],v.apl_plugOutline_colorSE)&&(m.plugOutlineFaceSE[n].style.fill=S,E=!0,ie&&(je(m,m.lineMaskCaps),je(m,m.lineOutlineMaskCaps))),Xe(m,_.plugOutline_strokeWidthSE,n,S=g.plugOutline_strokeWidthSE[n],v.apl_plugOutline_strokeWidthSE)&&(m.plugOutlineMaskShapeSE[n].style.strokeWidth=S+"px",E=!0),Xe(m,_.plugOutline_inStrokeWidthSE,n,S=g.plugOutline_inStrokeWidthSE[n],v.apl_plugOutline_inStrokeWidthSE)&&(m.plugMaskShapeSE[n].style.strokeWidth=S+"px",E=!0)))}),E)),(t.position||U.line||U.plug)&&(U.position=Ke(e)),(t.path||U.position)&&(U.path=(k=(x=e).curStats,I=x.aplStats,M=x.pathList.animVal||x.pathList.baseVal,w=k.path_edge,C=!1,M&&(w.x1=w.x2=M[0][0].x,w.y1=w.y2=M[0][0].y,k.path_pathData=b=Be(M,function(e){e.xw.x2&&(w.x2=e.x),e.y>w.y2&&(w.y2=e.y)}),Fe(b,I.path_pathData)&&(x.linePath.setPathData(b),I.path_pathData=b,C=!0,ie?(je(x,x.plugsFace),je(x,x.lineMaskCaps)):oe&&je(x,x.linePath),x.events.apl_path&&x.events.apl_path.forEach(function(e){e(x,b)}))),C)),U.viewBox=(M=(O=e).curStats,I=O.aplStats,C=M.path_edge,L=M.viewBox_bBox,A=I.viewBox_bBox,V=O.svg.viewBox.baseVal,P=O.svg.style,N=!1,I=Math.max(M.line_strokeWidth/2,M.viewBox_plugBCircleSE[0]||0,M.viewBox_plugBCircleSE[1]||0),T={x1:C.x1-I,y1:C.y1-I,x2:C.x2+I,y2:C.y2+I},O.events.new_edge4viewBox&&O.events.new_edge4viewBox.forEach(function(e){e(O,T)}),L.x=M.lineMask_x=M.lineOutlineMask_x=M.maskBGRect_x=T.x1,L.y=M.lineMask_y=M.lineOutlineMask_y=M.maskBGRect_y=T.y1,L.width=T.x2-T.x1,L.height=T.y2-T.y1,["x","y","width","height"].forEach(function(e){var t;(t=L[e])!==A[e]&&(V[e]=A[e]=t,P[Q[e]]=t+("x"===e||"y"===e?O.bodyOffset[e]:0)+"px",N=!0)}),N),U.mask=(R=(W=e).curStats,F=W.aplStats,G=!1,R.plug_enabled?[0,1].forEach(function(e){R.capsMaskMarker_enabledSE[e]=R.plug_enabledSE[e]&&R.plug_colorTraSE[e]||R.plugOutline_enabledSE[e]&&R.plugOutline_colorTraSE[e]}):R.capsMaskMarker_enabledSE[0]=R.capsMaskMarker_enabledSE[1]=!1,R.capsMaskMarker_enabled=R.capsMaskMarker_enabledSE[0]||R.capsMaskMarker_enabledSE[1],R.lineMask_outlineMode=R.lineOutline_enabled,R.caps_enabled=R.capsMaskMarker_enabled||R.capsMaskAnchor_enabledSE[0]||R.capsMaskAnchor_enabledSE[1],R.lineMask_enabled=R.caps_enabled||R.lineMask_outlineMode,(R.lineMask_enabled&&!R.lineMask_outlineMode||R.lineOutline_enabled)&&["x","y"].forEach(function(e){var t="maskBGRect_"+e;Xe(W,F,t,B=R[t])&&(W.maskBGRect[e].baseVal.value=B,G=!0)}),Xe(W,F,"lineMask_enabled",B=R.lineMask_enabled)&&(W.lineFace.style.mask=B?"url(#"+W.lineMaskId+")":"none",G=!0,re&&je(W,W.lineMask)),R.lineMask_enabled&&(Xe(W,F,"lineMask_outlineMode",B=R.lineMask_outlineMode)&&(B?(W.lineMaskBG.style.display="none",W.lineMaskShape.style.display="inline"):(W.lineMaskBG.style.display="inline",W.lineMaskShape.style.display="none"),G=!0),["x","y"].forEach(function(e){var t="lineMask_"+e;Xe(W,F,t,B=R[t])&&(W.lineMask[e].baseVal.value=B,G=!0)}),Xe(W,F,"caps_enabled",B=R.caps_enabled)&&(W.lineMaskCaps.style.display=W.lineOutlineMaskCaps.style.display=B?"inline":"none",G=!0,re&&je(W,W.capsMaskLine)),R.caps_enabled&&([0,1].forEach(function(e){var t;Xe(W,F.capsMaskAnchor_enabledSE,e,B=R.capsMaskAnchor_enabledSE[e])&&(W.capsMaskAnchorSE[e].style.display=B?"inline":"none",G=!0,re&&je(W,W.lineMask)),R.capsMaskAnchor_enabledSE[e]&&(Fe(t=R.capsMaskAnchor_pathDataSE[e],F.capsMaskAnchor_pathDataSE[e])&&(W.capsMaskAnchorSE[e].setPathData(t),F.capsMaskAnchor_pathDataSE[e]=t,G=!0),Xe(W,F.capsMaskAnchor_strokeWidthSE,e,B=R.capsMaskAnchor_strokeWidthSE[e])&&(W.capsMaskAnchorSE[e].style.strokeWidth=B+"px",G=!0))}),Xe(W,F,"capsMaskMarker_enabled",B=R.capsMaskMarker_enabled)&&(W.capsMaskLine.style.display=B?"inline":"none",G=!0),R.capsMaskMarker_enabled&&[0,1].forEach(function(n){var e=R.capsMaskMarker_plugSE[n],t=e!==Y?X[q[e]]:null,a=Ze(n,t);Xe(W,F.capsMaskMarker_enabledSE,n,B=R.capsMaskMarker_enabledSE[n])&&(W.capsMaskLine.style[a.prop]=B?"url(#"+W.lineMaskMarkerIdSE[n]+")":"none",G=!0),R.capsMaskMarker_enabledSE[n]&&(Xe(W,F.capsMaskMarker_plugSE,n,e)&&(W.capsMaskMarkerShapeSE[n].href.baseVal="#"+t.elmId,Ue(W,W.capsMaskMarkerSE[n],a.orient,t.bBox,W.svg,W.capsMaskMarkerShapeSE[n],W.capsMaskLine),G=!0,oe&&(je(W,W.capsMaskLine),je(W,W.lineFace))),["markerWidth","markerHeight"].forEach(function(e){var t="capsMaskMarker_"+e+"SE";Xe(W,F[t],n,B=R[t][n])&&(W.capsMaskMarkerSE[n][e].baseVal.value=B,G=!0)}))}))),R.lineOutline_enabled&&["x","y"].forEach(function(e){var t="lineOutlineMask_"+e;Xe(W,F,t,B=R[t])&&(W.lineOutlineMask[e].baseVal.value=B,G=!0)}),G),t.effect&&(j=(D=e).curStats,H=D.aplStats,Object.keys(Z).forEach(function(e){var t=Z[e],n=e+"_enabled",a=e+"_options",e=j[a];Xe(D,H,n,z=j[n])?(z&&(H[a]=we(e)),t[z?"init":"remove"](D)):z&&ke(e,H[a])&&(t.remove(D),H[n]=!0,H[a]=we(e),t.init(D))})),(le||re)&&U.line&&!U.path&&je(e,e.lineShape),le&&U.plug&&!U.line&&je(e,e.plugsFace),He(e)}function et(e,t){return{duration:(pe(e.duration)&&0i.x2&&(i.x2=e.x2),e.y2>i.y2&&(i.y2=e.y2),["x","y"].forEach(function(e){var t,n="dropShadow_"+e;o[n]=t=i[e+"1"],Xe(a,l,n,t)&&(a.efc_dropShadow_elmFilter[e].baseVal.value=t)}))}}},Object.keys(Z).forEach(function(e){var t=Z[e],n=t.stats;n[e+"_enabled"]={iniValue:!1},n[e+"_options"]={hasProps:!0},t.anim&&(n[e+"_animOptions"]={},n[e+"_animId"]={})}),w={none:{defaultAnimOptions:{},init:function(e,t){var n=e.curStats;n.show_animId&&(g.remove(n.show_animId),n.show_animId=null),w.none.start(e,t)},start:function(e,t){w.none.stop(e,!0)},stop:function(e,t,n){var a=e.curStats;return n=null!=n?n:e.aplStats.show_on,a.show_inAnim=!1,t&&Je(e,n),n?1:0}},fade:{defaultAnimOptions:{duration:300,timing:"linear"},init:function(n,e){var t=n.curStats,a=n.aplStats;t.show_animId&&g.remove(t.show_animId),t.show_animId=g.add(function(e){return e},function(e,t){t?w.fade.stop(n,!0):(n.svg.style.opacity=e+"",ie&&(je(n,n.svg),He(n)))},a.show_animOptions.duration,1,a.show_animOptions.timing,null,!1),w.fade.start(n,e)},start:function(e,t){var n,a=e.curStats;a.show_inAnim&&(n=g.stop(a.show_animId)),Je(e,1),a.show_inAnim=!0,g.start(a.show_animId,!e.aplStats.show_on,null!=t?t:n)},stop:function(e,t,n){var a,i=e.curStats;return n=null!=n?n:e.aplStats.show_on,a=i.show_inAnim?g.stop(i.show_animId):n?1:0,i.show_inAnim=!1,t&&(e.svg.style.opacity=n?"":"0",Je(e,n)),a}},draw:{defaultAnimOptions:{duration:500,timing:[.58,0,.42,1]},init:function(n,e){var t=n.curStats,a=n.aplStats,o=n.pathList.baseVal,i=Re(o),l=i.segsLen,r=i.lenAll;t.show_animId&&g.remove(t.show_animId),t.show_animId=g.add(function(e){var t,n,a,i=-1;if(0===e)n=[[o[0][0],o[0][0]]];else if(1===e)n=o;else{for(t=r*e,n=[];t>=l[++i];)n.push(o[i]),t-=l[i];t&&(2===(a=o[i]).length?n.push([a[0],Ve(a[0],a[1],t/l[i])]):(e=Ne(a[0],a[1],a[2],a[3],We(a[0],a[1],a[2],a[3],t)),n.push([a[0],e.fromP1,e.fromP2,e])))}return n},function(e,t){t?w.draw.stop(n,!0):(n.pathList.animVal=e,$e(n,{path:!0}))},a.show_animOptions.duration,1,a.show_animOptions.timing,null,!1),w.draw.start(n,e)},start:function(e,t){var n,a=e.curStats;a.show_inAnim&&(n=g.stop(a.show_animId)),Je(e,1),a.show_inAnim=!0,Ge(e,"apl_position",w.draw.update),g.start(a.show_animId,!e.aplStats.show_on,null!=t?t:n)},stop:function(e,t,n){var a,i=e.curStats;return n=null!=n?n:e.aplStats.show_on,a=i.show_inAnim?g.stop(i.show_animId):n?1:0,i.show_inAnim=!1,t&&(e.pathList.animVal=n?null:[[e.pathList.baseVal[0][0],e.pathList.baseVal[0][0]]],$e(e,{path:!0}),Je(e,n)),a},update:function(e){De(e,"apl_position",w.draw.update),e.curStats.show_inAnim?w.draw.init(e,w.draw.stop(e)):e.aplStats.show_animOptions={}}}},[["start","anchorSE",0],["end","anchorSE",1],["color","lineColor"],["size","lineSize"],["startSocketGravity","socketGravitySE",0],["endSocketGravity","socketGravitySE",1],["startPlugColor","plugColorSE",0],["endPlugColor","plugColorSE",1],["startPlugSize","plugSizeSE",0],["endPlugSize","plugSizeSE",1],["outline","lineOutlineEnabled"],["outlineColor","lineOutlineColor"],["outlineSize","lineOutlineSize"],["startPlugOutline","plugOutlineEnabledSE",0],["endPlugOutline","plugOutlineEnabledSE",1],["startPlugOutlineColor","plugOutlineColorSE",0],["endPlugOutlineColor","plugOutlineColorSE",1],["startPlugOutlineSize","plugOutlineSizeSE",0],["endPlugOutlineSize","plugOutlineSizeSE",1]].forEach(function(e){var t=e[0],n=e[1],a=e[2];Object.defineProperty(ot.prototype,t,{get:function(){var e=null!=a?Se[this._id].options[n][a]:n?Se[this._id].options[n]:Se[this._id].options[t];return null==e?D:we(e)},set:lt(t),enumerable:!0})}),[["path",R],["startSocket",V,"socketSE",0],["endSocket",V,"socketSE",1],["startPlug",F,"plugSE",0],["endPlug",F,"plugSE",1]].forEach(function(e){var a=e[0],i=e[1],o=e[2],l=e[3];Object.defineProperty(ot.prototype,a,{get:function(){var t,n=null!=l?Se[this._id].options[o][l]:o?Se[this._id].options[o]:Se[this._id].options[a];return n?Object.keys(i).some(function(e){return i[e]===n&&(t=e,!0)})?t:new Error("It's broken"):D},set:lt(a),enumerable:!0})}),Object.keys(Z).forEach(function(n){var a=Z[n];Object.defineProperty(ot.prototype,n,{get:function(){var s,e,t=Se[this._id].options[n];return he(t)?(s=t,e=a.optionsConf.reduce(function(e,t){var n,a=t[0],i=t[1],o=t[2],l=t[3],t=t[4],r=null!=t?s[l][t]:l?s[l]:s[i];return e[i]="id"===a?r?Object.keys(o).some(function(e){return o[e]===r&&(n=e,!0)})?n:new Error("It's broken"):D:null==r?D:we(r),e},{}),a.anim&&(e.animation=we(s.animation)),e):t},set:lt(n),enumerable:!0})}),["startLabel","endLabel","middleLabel"].forEach(function(e,n){Object.defineProperty(ot.prototype,e,{get:function(){var e=Se[this._id],t=e.options;return t.labelSEM[n]&&!e.optionIsAttach.labelSEM[n]?_e[t.labelSEM[n]._id].text:t.labelSEM[n]||""},set:lt(e),enumerable:!0})}),ot.prototype.setOptions=function(e){return it(Se[this._id],e),this},ot.prototype.position=function(){return $e(Se[this._id],{position:!0}),this},ot.prototype.remove=function(){var t=Se[this._id],n=t.curStats;Object.keys(Z).forEach(function(e){e+="_animId";n[e]&&g.remove(n[e])}),n.show_animId&&g.remove(n.show_animId),t.attachments.slice().forEach(function(e){at(t,e)}),t.baseWindow&&t.svg&&t.baseWindow.document.body.removeChild(t.svg),delete Se[this._id]},ot.prototype.show=function(e,t){return tt(Se[this._id],!0,e,t),this},ot.prototype.hide=function(e,t){return tt(Se[this._id],!1,e,t),this},o=function(t){t&&_e[t._id]&&(t.boundTargets.slice().forEach(function(e){at(e.props,t,!0)}),t.conf.remove&&t.conf.remove(t),delete _e[t._id])},rt.prototype.remove=function(){var t=this,n=_e[t._id];n&&(n.boundTargets.slice().forEach(function(e){n.conf.removeOption(n,e)}),ze(function(){var e=_e[t._id];e&&(console.error("LeaderLineAttachment was not removed by removeOption"),o(e))}))},M=rt,window.LeaderLineAttachment=M,I=function(e,t){return e instanceof M&&(!(e.isRemoved||t&&_e[e._id].conf.type!==t)||null)},O={pointAnchor:{type:"anchor",argOptions:[{optionName:"element",type:Me}],init:function(e,t){return e.element=O.pointAnchor.checkElement(t.element),e.x=O.pointAnchor.parsePercent(t.x,!0)||[.5,!0],e.y=O.pointAnchor.parsePercent(t.y,!0)||[.5,!0],!0},removeOption:function(e,t){var n=t.props,a={},i=e.element,e=n.options.anchorSE["start"===t.optionName?1:0];i===e&&(i=e===document.body?new M(O.pointAnchor,[i]):document.body),a[t.optionName]=i,it(n,a)},getBBoxNest:function(e,t){var n=Le(e.element,t.baseWindow),a=n.width,t=n.height;return n.width=n.height=0,n.left=n.right=n.left+e.x[0]*(e.x[1]?a:1),n.top=n.bottom=n.top+e.y[0]*(e.y[1]?t:1),n},parsePercent:function(e,t){var n,a,i=!1;return pe(e)?a=e:"string"==typeof e&&(n=m.exec(e))&&n[2]&&(i=0!==(a=parseFloat(n[1])/100)),null!=a&&(t||0<=a)?[a,i]:null},checkElement:function(e){if(null==e)e=document.body;else if(!Me(e))throw new Error("`element` must be Element");return e}},areaAnchor:{type:"anchor",argOptions:[{optionName:"element",type:Me},{optionName:"shape",type:"string"}],stats:{color:{},strokeWidth:{},elementWidth:{},elementHeight:{},elementLeft:{},elementTop:{},pathListRel:{},bBoxRel:{},pathData:{},viewBoxBBox:{hasProps:!0},dashLen:{},dashGap:{}},init:function(a,e){var t,n=[];return a.element=O.pointAnchor.checkElement(e.element),"string"==typeof e.color&&(a.color=e.color.trim()),"string"==typeof e.fillColor&&(a.fill=e.fillColor.trim()),pe(e.size)&&0<=e.size&&(a.size=e.size),e.dash&&(a.dash=!0,pe(e.dash.len)&&0i.right&&(i.right=t),ei.bottom&&(i.bottom=e)):i={left:t,right:t,top:e,bottom:e},o?S.pathListRel.push([o,{x:t,y:e}]):S.pathListRel=[],o={x:t,y:e}}),S.pathListRel.push([]),e=S.strokeWidth/2,e=[{x:i.left-e,y:i.top-e},{x:i.right+e,y:i.bottom+e}],S.bBoxRel={left:e[0].x,top:e[0].y,right:e[1].x,bottom:e[1].y,width:e[1].x-e[0].x,height:e[1].y-e[0].y}}v.pathListRel=v.bBoxRel=!0}return(v.pathListRel||v.elementLeft||v.elementTop)&&(S.pathData=Be(S.pathListRel,function(e){e.x+=n.left,e.y+=n.top})),Xe(t,g,"strokeWidth",a=S.strokeWidth)&&(t.path.style.strokeWidth=a+"px"),Fe(a=S.pathData,g.pathData)&&(t.path.setPathData(a),g.pathData=a,v.pathData=!0),t.dash&&(!v.pathData&&(!v.strokeWidth||t.dashLen&&t.dashGap)||(S.dashLen=t.dashLen||2*S.strokeWidth,S.dashGap=t.dashGap||S.strokeWidth),v.dash=Xe(t,g,"dashLen",S.dashLen)||v.dash,v.dash=Xe(t,g,"dashGap",S.dashGap)||v.dash,v.dash&&(t.path.style.strokeDasharray=g.dashLen+","+g.dashGap)),d=S.viewBoxBBox,f=g.viewBoxBBox,y=t.svg.viewBox.baseVal,m=t.svg.style,d.x=S.bBoxRel.left+n.left,d.y=S.bBoxRel.top+n.top,d.width=S.bBoxRel.width,d.height=S.bBoxRel.height,["x","y","width","height"].forEach(function(e){(a=d[e])!==f[e]&&(y[e]=f[e]=a,m[Q[e]]=a+("x"===e||"y"===e?t.bodyOffset[e]:0)+"px")}),v.strokeWidth||v.pathListRel||v.bBoxRel}},mouseHoverAnchor:{type:"anchor",argOptions:[{optionName:"element",type:Me},{optionName:"showEffectName",type:"string"}],style:{backgroundImage:"url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cG9seWdvbiBwb2ludHM9IjI0LDAgMCw4IDgsMTEgMCwxOSA1LDI0IDEzLDE2IDE2LDI0IiBmaWxsPSJjb3JhbCIvPjwvc3ZnPg==')",backgroundSize:"",backgroundRepeat:"no-repeat",backgroundColor:"#f8f881",cursor:"default"},hoverStyle:{backgroundImage:"none",backgroundColor:"#fadf8f"},padding:{top:1,right:15,bottom:1,left:2},minHeight:15,backgroundPosition:{right:2,top:2},backgroundSize:{width:12,height:12},dirKeys:[["top","Top"],["right","Right"],["bottom","Bottom"],["left","Left"]],init:function(a,i){var n,t,e,o,l,r,s,u,h,p=O.mouseHoverAnchor,c={};if(a.element=O.pointAnchor.checkElement(i.element),s=a.element,!((u=s.ownerDocument)&&(h=u.defaultView)&&h.HTMLElement&&s instanceof h.HTMLElement))throw new Error("`element` must be HTML element");return p.style.backgroundSize=p.backgroundSize.width+"px "+p.backgroundSize.height+"px",["style","hoverStyle"].forEach(function(e){var n=p[e];a[e]=Object.keys(n).reduce(function(e,t){return e[t]=n[t],e},{})}),"inline"===(n=a.element.ownerDocument.defaultView.getComputedStyle(a.element,"")).display?a.style.display="inline-block":"none"===n.display&&(a.style.display="block"),O.mouseHoverAnchor.dirKeys.forEach(function(e){var t=e[0],e="padding"+e[1];parseFloat(n[e])e.x2&&(e.x2=n.x2),n.y2>e.y2&&(e.y2=n.y2)},newText:function(e,t,n,a,i){var o,l,r=t.createElementNS(ae,"text");return r.textContent=e,[r.x,r.y].forEach(function(e){var t=n.createSVGLength();t.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX,0),e.baseVal.initialize(t)}),"boolean"!=typeof h&&(h="paintOrder"in r.style),i&&!h?(o=t.createElementNS(ae,"defs"),r.id=a,o.appendChild(r),(l=(e=t.createElementNS(ae,"g")).appendChild(t.createElementNS(ae,"use"))).href.baseVal="#"+a,(t=e.appendChild(t.createElementNS(ae,"use"))).href.baseVal="#"+a,(l=l.style).strokeLinejoin="round",{elmPosition:r,styleText:r.style,styleFill:t.style,styleStroke:l,styleShow:e.style,elmsAppend:[o,e]}):(l=r.style,i&&(l.strokeLinejoin="round",l.paintOrder="stroke"),{elmPosition:r,styleText:l,styleFill:l,styleStroke:i?l:null,styleShow:l,elmsAppend:[r]})},getMidPoint:function(e,t){var n,a,i=Re(e),o=i.segsLen,i=i.lenAll,l=-1,r=i/2+(t||0);if(r<=0)return 2===(n=e[0]).length?Ve(n[0],n[1],0):Ne(n[0],n[1],n[2],n[3],0);if(i<=r)return 2===(n=e[e.length-1]).length?Ve(n[0],n[1],1):Ne(n[0],n[1],n[2],n[3],1);for(a=[];r>o[++l];)a.push(e[l]),r-=o[l];return 2===(n=e[l]).length?Ve(n[0],n[1],r/o[l]):Ne(n[0],n[1],n[2],n[3],We(n[0],n[1],n[2],n[3],r))},initSvg:function(t,n){var e,a,i=O.captionLabel.newText(t.text,n.baseWindow.document,n.svg,C+"-captionLabel-"+t._id,t.outlineColor);["elmPosition","styleFill","styleShow","elmsAppend"].forEach(function(e){t[e]=i[e]}),t.isShown=!1,t.styleShow.visibility="hidden",O.captionLabel.textStyleProps.forEach(function(e){null!=t[e]&&(i.styleText[e]=t[e])}),i.elmsAppend.forEach(function(e){n.svg.appendChild(e)}),e=i.elmPosition.getBBox(),t.width=e.width,t.height=e.height,t.outlineColor&&(a=e.height/9,i.styleStroke.strokeWidth=(a=10c?((t=d.points)[1]=Pe(t[0],t[1],-c),d.len=Ae(t[0],t[1])):(d.points=null,d.len=0),e.len>c+n?((t=e.points)[0]=Pe(t[1],t[0],-(c+n)),e.len=Ae(t[0],t[1])):(e.points=null,e.len=0)),e):null}),f.reduce(function(t,e){var n=e.points;return n&&(a&&y(n[0],a)||t.push({type:"M",values:[n[0].x,n[0].y]}),"line"===e.type?t.push({type:"L",values:[n[1].x,n[1].y]}):(n.shift(),n.forEach(function(e){t.push({type:"L",values:[e.x,e.y]})})),a=n[n.length-1]),t},[])},newText:function(e,t,n,a){var i,o,l,r,s=t.createElementNS(ae,"defs"),u=s.appendChild(t.createElementNS(ae,"path"));return u.id=i=n+"-path",(l=(o=t.createElementNS(ae,"text")).appendChild(t.createElementNS(ae,"textPath"))).href.baseVal="#"+i,l.startOffset.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX,0),l.textContent=e,"boolean"!=typeof h&&(h="paintOrder"in o.style),a&&!h?(o.id=e=n+"-text",s.appendChild(o),(r=(n=t.createElementNS(ae,"g")).appendChild(t.createElementNS(ae,"use"))).href.baseVal="#"+e,(t=n.appendChild(t.createElementNS(ae,"use"))).href.baseVal="#"+e,(r=r.style).strokeLinejoin="round",{elmPosition:o,elmPath:u,elmOffset:l,styleText:o.style,styleFill:t.style,styleStroke:r,styleShow:n.style,elmsAppend:[s,n]}):(r=o.style,a&&(r.strokeLinejoin="round",r.paintOrder="stroke"),{elmPosition:o,elmPath:u,elmOffset:l,styleText:r,styleFill:r,styleStroke:a?r:null,styleShow:r,elmsAppend:[s,o]})},initSvg:function(t,n){var e,a,i,o=O.pathLabel.newText(t.text,n.baseWindow.document,C+"-pathLabel-"+t._id,t.outlineColor);["elmPosition","elmPath","elmOffset","styleFill","styleShow","elmsAppend"].forEach(function(e){t[e]=o[e]}),t.isShown=!1,t.styleShow.visibility="hidden",O.captionLabel.textStyleProps.forEach(function(e){null!=t[e]&&(o.styleText[e]=t[e])}),o.elmsAppend.forEach(function(e){n.svg.appendChild(e)}),o.elmPath.setPathData([{type:"M",values:[0,100]},{type:"h",values:[100]}]),le&&(i=o.elmOffset.href.baseVal,o.elmOffset.href.baseVal=""),e=o.elmPosition.getBBox(),le&&(o.elmOffset.href.baseVal=i),o.styleText.textAnchor=["start","end","middle"][t.semIndex],2!==t.semIndex||t.lineOffset||o.elmOffset.startOffset.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE,50),t.height=e.height,t.outlineColor&&(a=e.height/9,o.styleStroke.strokeWidth=(a=10 - - - - BCW-1 Recommandations générales — Le beau code web - - - + + + + + + + + BCW-1 Recommandations générales — Le beau code web + + + +

BCW-1 Recommandations générales pour le codage web

- -
-

- Noms de fichiers - -

+ + +
+

+ + Noms de fichiers + + +

+

Les noms des fichiers et dossiers utilisés sur le web doivent respecter les règles suivantes.

@@ -66,7 +75,10 @@

-
Justification + +
+ Justification +
  1. @@ -121,8 +133,12 @@

-
-

+ + +
+ + +

@@ -136,9 +152,9 @@

- - - - + + + + \ No newline at end of file diff --git a/docs/guide-html.html b/docs/guide-html.html new file mode 100644 index 0000000..e0fa8e7 --- /dev/null +++ b/docs/guide-html.html @@ -0,0 +1,234 @@ + + + + + + + BCW-2 Recommandations pour le codage en HTML — Le beau code web + + + + + +
+

BCW-2 Recommandations pour le codage en HTML

+
+
+
+

+ Validité du code + +

+
    +
  1. +

    + L’encodage doit être précisé + [Opquast Règle 225]. + Recommandé : UTF-8, + sans BOM + [Opquast Règle 226]. +

    + +
  2. +
  3. +

    + Le balisage doit être valide. + En particulier, les éléments doivent être correctement imbriqués + et les caractères spéciaux doivent toujours être correctement échappés par des entités, en particulier les & dans les adresses. +

    + +
  4. +
  5. +

    + Le document devrait être + conforme à une version donnée du format choisi. + Format recommandé : + HTML5 en syntaxe HTML. +

    + +
  6. +
  7. +

    + Les éléments devraient + toujours avoir une balise de fermeture, + sauf éventuellement pour les éléments toujours vides + (link, + img, + br). +

    +

    + De même, les valeurs d’attribut devraient toujours être entre guillemets + (simples ' + ou doubles "), + sauf peut-être pour les attributs booléens (p. ex. + required, + disabled ou + open). +

    + +
  8. +
+
+ Justification +
    +
  1. +

    + Service, + sécurité : + Les éditeurs de code devinent souvent l’encodage d’une page. + En revanche, les navigateurs utilisent un encodage par défaut, + quand celui-ci n’est pas spécifié. + Pour obtenir un affichage correct, en particulier quand des données + doivent être échangées, il est donc nécessaire d’expliciter + l’encodage + [Opquast Règle 225]. +

    +

    + Respect des standards, + cohérence : + Les documents XML imposent un encodage Unicode. + Ceci permet une communication dans toutes les langues et sur toutes + les plateformes, Unicode décrivant de façon universelle tous les + glyphes en usage. +

    +

    + Performance : + L’encodage le plus souvent le plus économe en quantité d’information + est UTF-8. + Sécurité : + De plus, UTF-8 permet de ne pas utiliser de BOM, lequel est parfois + mal pris en charge ou mal signalé par certains logiciels auteur. +

    +
  2. +
  3. +

    + La validité est un simple respect des standards. + De plus, il s’agit de la dimension la plus immédiatement visible de + la qualité d’un code et cela est également utile pédagogiquement. +

    +

    + Pour des raisons de maintenabilité et de + lisibilité, + il est important de coder par des entités les caractères + invisibles (mais pas les caractères affichables). +

    +
  4. +
  5. +

    + Ne pas confondre validité du balisage et conformité du document : + les différentes version du format HTML imposent un certain nombre de + contraintes supplémentaires, + en particulier l’unicité de l’id. +

    +

    + La conformité des documents HTML est, là aussi, + un simple respect des standards. +

    +
  6. +
  7. +

    + Respect des standards, + sécurité : + Si ce code doit être utilisé dans du XML, + par exemple dans un document HTML utilisant la syntaxe XHTML, + il est impératif de scrupuleusement respecter celle-ci. + En effet, la moindre erreur fait basculer les lecteurs en syntaxe + HTML, dont la sémantique est différentes pour certains éléments. +

    +

    + En syntaxe XHTML (XML), tout élément, même vide doit être fermé. + En syntaxe HTML, cela n’est pas imposé, mais il est utile pour + la lisibilité et + la compréhension de certains codes, donc pour leur + maintenabilité, + de toujours indiquer les balises de fin facultatives (p. ex. + </p>), + sauf peut-être pour les balises toujours vides, + pour lesquelles il n’y a aucune ambiguïté. +

    +

    + Le même raisonnement s’applique aux attributs. + Cela réduit également les risques d’erreur de lecture ou d’oubli + d’une fermeture. +

    +
  8. +
+
+
+ +
+ + + + + + + + diff --git a/docs/guide-javascript.html b/docs/guide-javascript.html new file mode 100644 index 0000000..99aae47 --- /dev/null +++ b/docs/guide-javascript.html @@ -0,0 +1,38 @@ + + + + + + + BCW-3 Recommandations pour le codage en JavaScript — Le beau code web + + + + + +
+

BCW-3 Recommandations pour le codage en JavaScript

+
+
+

+ Il n’y a pas de recommandation pour l’instant. + N’hésitez pas à consulter notre dépôt Github pour faire des propositions. +

+
+ + + + + + + \ No newline at end of file diff --git a/docs/guide-php.html b/docs/guide-php.html new file mode 100644 index 0000000..eeff571 --- /dev/null +++ b/docs/guide-php.html @@ -0,0 +1,38 @@ + + + + + + + BCW-5 Recommandations pour le codage en PHP — Le beau code web + + + + + +
+

BCW-5 Recommandations pour le codage en PHP

+
+
+

+ Il n’y a pas de recommandation pour l’instant. + N’hésitez pas à consulter notre dépôt Github pour faire des propositions. +

+
+ + + + + + + \ No newline at end of file diff --git a/docs/guide-style.html b/docs/guide-style.html new file mode 100644 index 0000000..37e435a --- /dev/null +++ b/docs/guide-style.html @@ -0,0 +1,230 @@ + + + + + + + BCW-3 Recommandations le codage CSS — Le beau code web + + + + + +
+

BCW-3 Recommandations le codage des feuilles de style

+
+
+
+

Introduction

+

+ Les feuilles de style CSS sont principalement constituées de règles de style. + Chaque règle comporte un sélecteur ou une liste de sélecteurs + 1, + suivi d’une liste de déclarations (p.ex. 2). + Chaque déclaration est constituée d’une propriété 3 + suivie d’une valeur 4, + laquelle peut avoir plusieurs composantes 5. + Certaines propriétés peuvent admettre des déclarations comportant une + liste de valeurs 6. +

+
h1,
+h2 {
+	margin: 0 auto;
+	color: green;
+	border: 1px solid black;
+	font-family: Arial, Helvetica, sans-serif;
+}
+ +
+
+

+ Mise en forme des règles + +

+
    +
  1. + Dans une liste de sélecteurs, il est recommandé + de ne mettre qu’un sélecteur par ligne. +
  2. +
  3. + De même, il est recommandé + de ne mettre qu’une déclaration par ligne. +
  4. +
  5. + Chaque déclaration doit se terminer par un point-virgule ;, même quand celui-ci est facultatif. +
  6. +
  7. + Les espacements doivent être utilisés de façon cohérente sur l’ensemble d’un site. +
  8. +
  9. + Il est recommandé de ne pas mettre d’espace + entre une propriété et le séparateur :, + mais d’en mettre un systématiquement après ce séparateur. + De même, il est recommandé + de mettre un espace après chaque virgule , + dans une liste de valeurs, mais pas devant. + Il est également recommandé de faire précéder + les accolades ouvrantes { d’un espace. +
  10. +
+ +
Justification +
    +
  1. + La même logique préside aux trois premiers points : + un changement doit pouvoir être localisé sur une ou plusieurs lignes, + mais pas au sein d’une ligne. + La principale raison est la maintenabilité. + Ceci permet aux systèmes de versionnement, Git ou autre, de suivre + individuellement chaque modification, limitant ainsi les risques + de conflits au moment des fusions merge. + Accessoirement, cela permet aussi de faire des tests en commentant plus + aisément tel ou telle déclaration. + En effet, à titre de contre-exemple, si l’on plaçait des déclarations de + position, + top, + left et + right + sur une même ligne, il ne serait pas facile d’agir sur la seule déclaration + de top. +
  2. +
  3. + La raison la plus souvent invoquée pour la règle précédente, + « un changement par ligne », est la + lisibilité, + mais il semble que celle-ci dépende surtout des habitudes de chaque codeur. + C’est donc la principale raison du point n°4. +
  4. +
  5. + Le point n°5 est également motivé par des raisons + de lisibilité. + Les espaces recommandés permettent une séparation visuelle suffisante. + L’absence d’espace devant les séparateurs permet de respecter la + typographie de l’anglais, langue de référence du CSS, et donc d’assurer + une meilleure + cohérence + à un niveau international. +
  6. + +
+
+ +
+ + + + + + + + + \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..5cf0b8e --- /dev/null +++ b/docs/index.html @@ -0,0 +1,46 @@ + + + + + + + Le beau code web + + + +
+

Le beau code web

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/principes.html b/docs/principes.html new file mode 100644 index 0000000..2d37809 --- /dev/null +++ b/docs/principes.html @@ -0,0 +1,313 @@ + + + + + + + + + + + Principes — Le beau code web + + + + + + +
+

BCW-0 Principes du « Beau code web »

+
+
+ +
+

+ À qui s’adresse ce guide + +

+

+ Ce guide a été créé par des enseignants et professionnels du web de la communauté du master Web éditorial et stratégie UX. + Il s’adresse aux étudiants et aux professionnels de la communication au moyen + de sites web ou, plus généralement, d’applications web. +

+
+
+

+ Objet de ce guide + +

+

+ Ce guide a pour objet la conception technique d’applications web, dans son sens le plus général. Une application web peut ne proposer que de la consultation de contenu, jusqu’à la manipulation de données et de processus spécifiques (applications métier). + On entendra donc par applications web, notamment : +

+
    +
  • les sites web (statiques, dynamiques, CMS, e-commerce, etc.),
  • +
  • les applications fonctionnant sur le web (dashboards, applications métiers, etc.),
  • +
  • les applications web destinées aux mobiles,
  • +
+

+ dans la mesure où ces applications sont concernées : +

+
    +
  • par les langages abordés,
  • +
  • par le public visé.
  • +
+
+
+

+ Principes et objectifs + +

+ +
+

+ 1. Principe de service de l’utilisateur + +

+

+ Une application web est d’abord au service de ses utilisateurs, de ses lecteurs. + On s’attachera donc à l’expérience utilisateur également dans la façon de coder. +

+
+ +
+

+ 2. Objectif de sécurité + +

+

+ Découle du principe de service : quand plusieurs façons de coder sont possibles, il faut s’efforcer de privilégier la plus sûre. +

+
+ +
+

+ 3. Objectif de performance + +

+

+ Découle du principe de service : quand plusieurs façons de coder sont possibles, il faut s’efforcer de privilégier l’efficience, en temps d’exécution ou de chargement ou en ressources consommées. +

+
+ +
+

+ 4. Principe de maintenabilité + +

+

+ Les applications web ont vocation à durer dans le temps. + Il convient donc de prévoir que leurs professionnels y reviennent régulièrement. + La maintenabilité est le fait de pouvoir comprendre un code aisément, + s’y repérer, y modifier ce qu’il est nécessaire de modifier, pas plus. +

+
+ +
+

+ 5. Objectif de respect des standards + +

+

+ Découle du principe de maintenabilité : on ne devrait pas avoir à revenir sur un document quand il n’y a pas besoin de modifier son contenu. + Le respect des standards permet une plus grande durabilité du code. +

+

+ Ce principe facilite aussi la collaboration entre plusieurs acteurs, simultanément ou au cours de la durée de vie d’un code. +

+

+ Parmi les standards reconnus, on s’attachera en particulier à respecter l’esprit des Principes de conception du HTML [HTMLDP], notamment : + la compatibilité, + l’utilité, dont la priorité au terrain, + la modularité (separation of concerns), + l’interopérabilité et + l’accès universel. + La priorité au terrain impose, notamment, de s’attacher autant que possible aux usages déjà répandus, quand ils ne sont pas contraires aux grands principes retenus ici. +

+
+ +
+

+ 6. Objectif de lisibilité + +

+

+ Découle du principe de maintenabilité : + le code doit minimiser la charge cognitive de sa lecture. + En particulier, il convient d’être régulier, d’éviter les formulations ambiguës ou techniquement ou conceptuellement complexes quand elles ne sont pas nécessaires. +

+
+ +
+

+ 7. Objectif de cohérence + +

+

+ Découle du principe de Lisibilité : + la cohérence est le fait d’appliquer des choix de façon homogène au sein d’un projet ou d’un collectif de travail. + Elle permet ainsi d’alléger la charge cognitive pour lire, créer ou modifier un code. +

+
+ +
+ +
+

+ Glossaire + +

+
+

Typographie

+
+
alphanumérique
+
+ Un caractère alphanumérique est un chiffre ou lettre latine, minuscule ou majuscule, sans accent ni diacritique. Certains langages ajoutent également le souligné (_). +
+
casse
+
La casse est la différence entre minuscules et majuscules.
+
+ Du temps des presses mécaniques, la casse était le casier dans lequel on rangeait les caractères. Ainsi bas de casse, en anglais lower case, est synonyme de minuscule et haut de casse, en anglais upper case, de majuscule. + [Wikipedia] +
+
kebab-case
+
+ Mots écrits en minuscules, joints par des tirets. +
+
+ Le terme kebab désigne de la viande rôtie, en particulier à la broche. Dans le -kebab-case⊸, les mots sont comme embrochés. +
+
camelCase
+
+ Mots collés entre eux, les initiales en majuscules sauf la première, les autres lettres en minuscules. +
+
+ Le langage de programmation Camel a popularisé cette notation. + On dit parfois que les bosses sont au milieu comme pour un chameau. + En anglais, le mot camel désigne aussi bien un chameau 🐫 qu’un dromadaire 🐪. +
+
PascalCase
+
StudlyCase
+
+ Mots collés entre eux, les initiales en majuscules, les autres lettres en minuscules. +
+
+ Le langage de programmation Pascal a popularisé cette notation. + Le terme PascalCase est univoque. + Le terme StudlyCase, parfois employé, peut, lui, désigner d’autres écritures. +
+
+
+
+

Modalités aux termes de la [RFC2119]

+
+
doit
+
devra
+
obligatoire
+
Ce(s) terme(s) désigne(nt) une exigence absolue de ce guide [RFC2119, §1].
+
ne doit pas
+
ne devra pas
+
Ce(s) terme(s) désigne(nt) une interdiction absolue de ce guide [RFC2119, §2].
+
devrait
+
recommandé
+
Ce(s) terme(s) signifie(nt) qu’il peut exister des raisons valables dans des circonstances particulières pour ignorer un élément précis, mais toutes les implications doivent être comprises et soigneusement pesées avant de choisir une voie différente [RFC2119, §3].
+
ne devrait pas
+
non recommandé
+
Ce(s) terme(s) signifie(nt) qu’il peut exister des raisons valides dans des circonstances particulières quand le comportement spécifique est acceptable ou même utile, mais les répercussions complètent devraient être comprise et le cas soigneusement évalué avant d’implémenter [ceci] [RFC2119, §4].
+
peut
+
facultatif
+
Ce(s) terme(s) signifie(nt) que ce choix est vraiment facultatif [RFC2119, §5].
+
Un fabricant peut choisir d’inclure l’élément parce que un secteur particulier du marché le réclame ou parce que le fabricant pense que cela améliore le produit tandis qu’un autre fabricant peut omettre le même élément. Une mise en œuvre qui n’inclut pas une option particulière doit pouvoir interopérer avec une autre mise en œuvre qui n’inclut pas l’option, peut-être au prix de fonctionnalités réduites. Dans la même veine, une mise en œuvre qui n’inclut pas une option particulière doit être préparée à interopérer avec une autre mise en œuvre qui n’inclut pas l’option (excepté, bien sûr, pour la caractéristique fournie par l’option).
+
+
+
+ +
+

+ Références + +

+
    +
  • + [HTMLDP] + van Kesteren, Anne (éd.), + Stachowiak, Maciej (éd.). + (). + HTML Design Principles. + W3C. + W3C working draft. +
  • +
  • + [RFC2119] + Bradner, Scott. + (). + Key words for use in RFCs to Indicate Requirement Levels. + IETF. + RFC 2119 / BCP 14. +
  • +
  • + [TechSEO] + Martin, Alexandra, + Chartier, Mathieu. + (). + Techniques de référencement web, Audit et suivi SEO. + Eyrolles. + 4e édition. +
  • +
+
+ +
+

+ Mentions légales + +

+

+ Le beau code web est distribué sous licence libre + GNU GPL, version 3. +

+

+ Le beau code web ne conserve pas de données personnelles, + ne dépose pas de cookies + et ne comporte pas de publicité ni de contenu sponsorisé, + mais son hébergeur peut avoir recours à l’un de ces moyens. +

+

+ Le beau code web est hébergé par + Github à partir du dépôt Git + github.com/YannisDelmas/beau-code-web. + Il s’agit d’une œuvre collective dont les contributeurs sont listés sur ce dépôt. + Le directeur de la publication est + Yannis Delmas. + Il peut être contacté via les coordonnées indiquées sur + son site personnel. +

+

+ Le thème utilisé emploie comme image de fond + « Rice Paper » + de Alte Mo [Subtle patterns]. + Certains exemples peuvent utiliser des images publiées par le site + LoremPixel.com. +

+
+ + +
+ + + + + + + + \ No newline at end of file diff --git a/guide-generalites-010-fichiers.twig b/guide-generalites-010-fichiers.twig new file mode 100644 index 0000000..357ff90 --- /dev/null +++ b/guide-generalites-010-fichiers.twig @@ -0,0 +1,110 @@ +{% embed '_recommandation.twig' %} + {% set recId = 'nom-fichiers' %} + {% block recTitle %} + Noms de fichiers + {% endblock %} + {% block recContent %} +

+ Les noms des fichiers et dossiers utilisés sur le web doivent respecter les règles suivantes. +

+
    +
  1. + Écriture recommandée en kebab-case, sans espace, ni accent (ée), ni diacritique (çc), ni caractère spécial, ni ponctuation. +

  2. +
  3. +

    + Il est recommandé de ne pas dépasser 32 caractères, extension comprise. +

    + +
  4. +
  5. +

    + Les mots employés devraient refléter de façon claire et compréhensible le contenu ou la fonction dans le site du fichier ou dossier. + Il convient donc d’éviter des mots très génériques, tels que page ou article, ou trop ambigus. + On devrait également éviter les stop words (articles, conjonctions…), qui allongent l’URL sans apporter de contenu sémantique. +

    + +
  6. +
  7. +

    Une ou plusieurs extensions doivent indiquer le format d'un document.

    + +
  8. +
+ {% endblock recContent %} + {% block recRationale %} +
    +
  1. +

    + respect des standards + Les adresses web sont définies par le document Uniform Resource Identifier (URI): Generic Syntax [RFC 3986]. + Le chemin est sensible à la casse. + Comme certains systèmes d’exploitation n’y sont pas sensibles, pour éviter des liens brisés et des erreurs dans l’arborescence, il est habituel de se limiter à des minuscules, même si on pourrait contourner ces difficultés en formulant une règle plus précise. + Les caractères autres qu’alphanumériques, -, ., _ et ~ sont recodés. + Les caractères . et ~ ayant une signification particulière dans certains contextes et le souligné _ n’étant pas traité comme un séparateur par les moteurs de recherche + (cf. Web Rank Info : Référencement naturel : dans les URL, le tiret meilleur que l’underscore), les seuls caractères toujours sûrs pour un nom de fichier ou dossier, hors extension, sont les lettres, les chiffres et le tiret -. +

    +

    + lisibilité + Pour gagner en lisibilité des adresses, l’habitude est de remplacer tout caractère susceptible d’être encodé dans les bares d’adresse et dans la transcription des URL, par exemple pour des bibliographies. + Ceci inclut dont les espaces, les accents et certains caractères spéciaux. +

    +
  2. +
  3. +

    + maintenabilité + Plusieurs des systèmes de fichiers et ou explorateurs de fichiers ont une limitation d'environ 250 caractères Unicode (les URL ont une limite supérieure). + Toutefois, pour permettre un archivage sur disque optique, il faut adopter la limite du système de fichiers UDF, qui limite les chemins à à 127 caractères Unicode [Wikipedia UDF].

    +

    + lisibilité + Nombre d’explorateurs de fichiers des OS ont, par défaut, une configuration ni n’affiche qu’une vingtaine à une trentaine de caractères. +

    +
  4. +
  5. +

    + respect des standards + Cette règle découle du respect des méthodes d’indexation des moteurs de recherche. + Sur le référencement naturel (SEO) et sa dimension technique, cf. [TechSEO]. + On notera que les stop words sont purement et simplement ignorés par l’indexation des moteurs de recherche web. +

    +

    + service + Ceci rend également les URL plus simple à retenir et, le cas échéant, à transcrire, pour les utilisateurs. +

    +

    + maintenabilité + La persistance des chemins aide à maintenir l’arborescence d’un site. +

    +
  6. +
  7. +

    + lisibilité + Mettre une extension et l’afficher limite les risques d’erreurs de format. +

    +

    + respect des standards + Nombre de serveurs sont paramétrés pour inférer le format des documents à partir de leurs extensions [Apache Mod_mime]. +

    +
  8. +
+ {% endblock recRationale %} +{% endembed %} \ No newline at end of file diff --git a/guide-generalites.twig b/guide-generalites.twig new file mode 100644 index 0000000..95283fd --- /dev/null +++ b/guide-generalites.twig @@ -0,0 +1,4 @@ +{% extends '_page.twig' %} +{% block pageTitle %}BCW-1 Recommandations générales — Le beau code web{% endblock %} +{% block docTitle %}BCW-1 Recommandations générales pour le codage web{% endblock %} +{% set components = 'guide-generalites-*.twig'|glob %} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..920e445 --- /dev/null +++ b/package.json @@ -0,0 +1,9 @@ +{ + "name": "beau-code-web", + "devDependencies": { + "grunt": "^1.4.1", + "grunt-contrib-copy": "^1.0.0", + "grunt-twig-render": "^1.8.3", + "merge": "^2.1.1" + } +} diff --git a/principes.html b/principes.twig similarity index 90% rename from principes.html rename to principes.twig index 1e55475..09174fa 100644 --- a/principes.html +++ b/principes.twig @@ -1,19 +1,7 @@ - - - - - - - Principes — Le beau code web - - - - -
-

BCW-0 Principes du « Beau code web »

-
-
- +{% extends '_page.twig' %} +{% block pageTitle %}Principes — Le beau code web{% endblock %} +{% block docTitle %}BCW-0 Principes du « Beau code web »{% endblock %} +{% block docContent %}

À qui s’adresse ce guide @@ -284,19 +272,4 @@

LoremPixel.com.

-
- - - - - \ No newline at end of file +{% endblock %} From 9b02bb5d10e39441bcd5d9f441a5ac0f9dd7c87a Mon Sep 17 00:00:00 2001 From: Yannis Delmas Date: Sun, 30 Jan 2022 09:56:53 +0100 Subject: [PATCH 02/14] =?UTF-8?q?am=C3=A9lioration=20de=20la=20gestion=20d?= =?UTF-8?q?es=20assets?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gruntfile.js | 17 +- README.md | 2 +- _page.twig | 4 +- assets/js/leader-line.min.js | 2 - docs/principes.html | 500 +++++++++++++++++------------------ package.json | 3 +- 6 files changed, 269 insertions(+), 259 deletions(-) delete mode 100644 assets/js/leader-line.min.js diff --git a/Gruntfile.js b/Gruntfile.js index c80bf66..1ca1b6e 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -2,7 +2,9 @@ module.exports = function(grunt) { let chalk = require('chalk'); let traceFile = function(f) { - if ( grunt.file.isFile(f) ) console.log(chalk.cyan(f)); + if ( grunt.file.isFile(f) ) { + console.log(chalk.cyan(f), '→', chalk.cyan(grunt.task.current.data.dest)); + } return true; } @@ -14,16 +16,25 @@ module.exports = function(grunt) { dest: 'docs/', filter: traceFile, }, + JSLibs: { + expand: true, + flatten: true, + src: 'node_modules/leader-line/leader-line.min.js', + dest: 'docs/assets/js/', + filter: traceFile, + }, licence: { src: 'LICENSE', dest: 'docs/LICENSE.txt', filter: traceFile, - } + }, }, twigRender: { options: { functions: { - asset: function(arg) { return 'assets/' + arg; }, + asset: function(arg) { + return grunt.file.expand({cwd: 'docs'}, 'assets/**/'+ arg)[0]; + }, templateName: function() { return grunt.task.current.files[0].template; }, }, filters: { diff --git a/README.md b/README.md index af0414d..bef5341 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,6 @@ La commande `npm install` permet d’installer et mettre à jour les éléments - [Grunt](https://gruntjs.com/) pour la gestion et la mise en œuvre des mises à jour. - Plugin [grunt-contrib-copy](https://www.npmjs.com/package/grunt-contrib-copy) de Grunt pour la copie en l’état de fichiers. -- Plugin [grunt-twig-render](https://www.npmjs.com/package/grunt-twig-render) de Grunt, utilisant la bibliothèque [Twig.js](https://github.com/twigjs/twig.js), pour le rendu des modèles TWIG. +- Plugin [grunt-twig-render](https://www.npmjs.com/package/grunt-twig-render) de Grunt, utilisant la bibliothèque [Twig.js](https://github.com/twigjs/twig.js), pour le rendu des modèles TWIG ([Wiki](https://github.com/twigjs/twig.js/wiki)). Pour fabriquer les fichiers publiables, entrer la commande `grunt`. diff --git a/_page.twig b/_page.twig index 67ea092..6d63d41 100644 --- a/_page.twig +++ b/_page.twig @@ -11,7 +11,7 @@ {% block pageTitle %}Le beau code web{% endblock %} - + {% endblock %} @@ -42,7 +42,7 @@ mentions légales

- + diff --git a/assets/js/leader-line.min.js b/assets/js/leader-line.min.js deleted file mode 100644 index b3f2430..0000000 --- a/assets/js/leader-line.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! LeaderLine v1.0.7 (c) anseki https://anseki.github.io/leader-line/ */ -var LeaderLine=function(){"use strict";var Z,w,O,M,I,o,t,s,h,u,n,a,e,_,v,l,r,i,E,x,p,c,d,C="leader-line",b=1,k=2,L=3,A=4,V={top:b,right:k,bottom:L,left:A},P=1,N=2,T=3,W=4,B=5,R={straight:P,arc:N,fluid:T,magnet:W,grid:B},Y="behind",f=C+"-defs",y='',X={disc:{elmId:"leader-line-disc",noRotate:!0,bBox:{left:-5,top:-5,width:10,height:10,right:5,bottom:5},widthR:2.5,heightR:2.5,bCircle:5,sideLen:5,backLen:5,overhead:0,outlineBase:1,outlineMax:4},square:{elmId:"leader-line-square",noRotate:!0,bBox:{left:-5,top:-5,width:10,height:10,right:5,bottom:5},widthR:2.5,heightR:2.5,bCircle:5,sideLen:5,backLen:5,overhead:0,outlineBase:1,outlineMax:4},arrow1:{elmId:"leader-line-arrow1",bBox:{left:-8,top:-8,width:16,height:16,right:8,bottom:8},widthR:4,heightR:4,bCircle:8,sideLen:8,backLen:8,overhead:8,outlineBase:2,outlineMax:1.5},arrow2:{elmId:"leader-line-arrow2",bBox:{left:-7,top:-8,width:11,height:16,right:4,bottom:8},widthR:2.75,heightR:4,bCircle:8,sideLen:8,backLen:7,overhead:4,outlineBase:1,outlineMax:1.75},arrow3:{elmId:"leader-line-arrow3",bBox:{left:-4,top:-5,width:12,height:10,right:8,bottom:5},widthR:3,heightR:2.5,bCircle:8,sideLen:5,backLen:4,overhead:8,outlineBase:1,outlineMax:2.5},hand:{elmId:"leader-line-hand",bBox:{left:-3,top:-12,width:40,height:24,right:37,bottom:12},widthR:10,heightR:6,bCircle:37,sideLen:12,backLen:3,overhead:37},crosshair:{elmId:"leader-line-crosshair",noRotate:!0,bBox:{left:-96,top:-96,width:192,height:192,right:96,bottom:96},widthR:48,heightR:48,bCircle:96,sideLen:96,backLen:96,overhead:0}},F={behind:Y,disc:"disc",square:"square",arrow1:"arrow1",arrow2:"arrow2",arrow3:"arrow3",hand:"hand",crosshair:"crosshair"},q={disc:"disc",square:"square",arrow1:"arrow1",arrow2:"arrow2",arrow3:"arrow3",hand:"hand",crosshair:"crosshair"},G=[b,k,L,A],D="auto",Q={x:"left",y:"top",width:"width",height:"height"},z=80,j=4,H=5,U=120,K=8,J=3.75,$=10,ee=30,te=.5522847,ne=.25*Math.PI,m=/^\s*(\-?[\d\.]+)\s*(\%)?\s*$/,ae="http://www.w3.org/2000/svg",S="-ms-scroll-limit"in document.documentElement.style&&"-ms-ime-align"in document.documentElement.style&&!window.navigator.msPointerEnabled,ie=!S&&!!document.uniqueID,oe="MozAppearance"in document.documentElement.style,le=!(S||oe||!window.chrome||!window.CSS),re=!S&&!ie&&!oe&&!le&&!window.chrome&&"WebkitAppearance"in document.documentElement.style,se=ie||S?.2:.1,ue={path:T,lineColor:"coral",lineSize:4,plugSE:[Y,"arrow1"],plugSizeSE:[1,1],lineOutlineEnabled:!1,lineOutlineColor:"indianred",lineOutlineSize:.25,plugOutlineEnabledSE:[!1,!1],plugOutlineSizeSE:[1,1]},he=(p={}.toString,c={}.hasOwnProperty.toString,d=c.call(Object),function(e){return e&&"[object Object]"===p.call(e)&&(!(e=Object.getPrototypeOf(e))||(e=e.hasOwnProperty("constructor")&&e.constructor)&&"function"==typeof e&&c.call(e)===d)}),pe=Number.isFinite||function(e){return"number"==typeof e&&window.isFinite(e)},g=(_={ease:[.25,.1,.25,1],linear:[0,0,1,1],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1]},v=1e3/60/2,l=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||function(e){setTimeout(e,v)},r=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame||function(e){clearTimeout(e)},i=Number.isFinite||function(e){return"number"==typeof e&&window.isFinite(e)},E=[],x=0,{add:function(n,e,t,a,i,o,l){var r,s,u,h,p,c,d,f,y,m,S=++x;function g(e,t){return{value:n(t),timeRatio:e,outputRatio:t}}if("string"==typeof i&&(i=_[i]),n=n||function(){},t=this._endIndex||this._string[this._currentIndex]<"0"||"9"=this._endIndex||this._string[this._currentIndex]<"0"||"9"=this._endIndex)return null;var e=null,t=this._string[this._currentIndex];if(this._currentIndex+=1,"0"===t)e=0;else{if("1"!==t)return null;e=1}return this._skipOptionalSpacesOrDelimiter(),e}};function n(e){if(!e||0===e.length)return[];var t=new i(e),n=[];if(t.initialCommandIsMoveTo())for(;t.hasMoreData();){var a=t.parseSegment();if(null===a)break;n.push(a)}return n}function l(e){return e.map(function(e){return{type:e.type,values:Array.prototype.slice.call(e.values)}})}function r(e){var u=[],h=null,p=null,c=null,d=null,f=null,y=null,m=null;return e.forEach(function(e){var t,n,a,i,o,l,r,s;"M"===e.type?(r=e.values[0],s=e.values[1],u.push({type:"M",values:[r,s]}),d=y=r,f=m=s):"C"===e.type?(o=e.values[0],l=e.values[1],t=e.values[2],n=e.values[3],r=e.values[4],s=e.values[5],u.push({type:"C",values:[o,l,t,n,r,s]}),p=t,c=n,d=r,f=s):"L"===e.type?(r=e.values[0],s=e.values[1],u.push({type:"L",values:[r,s]}),d=r,f=s):"H"===e.type?(r=e.values[0],u.push({type:"L",values:[r,f]}),d=r):"V"===e.type?(s=e.values[0],u.push({type:"L",values:[d,s]}),f=s):"S"===e.type?(t=e.values[0],n=e.values[1],r=e.values[2],s=e.values[3],i="C"===h||"S"===h?(a=d+(d-p),f+(f-c)):(a=d,f),u.push({type:"C",values:[a,i,t,n,r,s]}),p=t,c=n,d=r,f=s):"T"===e.type?(r=e.values[0],s=e.values[1],l="Q"===h||"T"===h?(o=d+(d-p),f+(f-c)):(o=d,f),u.push({type:"C",values:[a=d+2*(o-d)/3,i=f+2*(l-f)/3,r+2*(o-r)/3,s+2*(l-s)/3,r,s]}),p=o,c=l,d=r,f=s):"Q"===e.type?(o=e.values[0],l=e.values[1],r=e.values[2],s=e.values[3],u.push({type:"C",values:[a=d+2*(o-d)/3,i=f+2*(l-f)/3,r+2*(o-r)/3,s+2*(l-s)/3,r,s]}),p=o,c=l,d=r,f=s):"A"===e.type?(n=e.values[0],a=e.values[1],i=e.values[2],o=e.values[3],l=e.values[4],r=e.values[5],s=e.values[6],0===n||0===a?(u.push({type:"C",values:[d,f,r,s,r,s]}),d=r,f=s):d===r&&f===s||b(d,f,r,s,n,a,i,o,l).forEach(function(e){u.push({type:"C",values:e}),d=r,f=s})):"Z"===e.type&&(u.push(e),d=y,f=m),h=e.type}),u}var s=e.SVGPathElement.prototype.setAttribute,u=e.SVGPathElement.prototype.removeAttribute,d=e.Symbol?e.Symbol():"__cachedPathData",f=e.Symbol?e.Symbol():"__cachedNormalizedPathData",b=function(e,t,n,a,i,o,l,r,s,u){function h(e,t,n){return{x:e*Math.cos(n)-t*Math.sin(n),y:e*Math.sin(n)+t*Math.cos(n)}}var p=Math.PI*l/180,c=[];u?(_=u[0],v=u[1],S=u[2],g=u[3]):(e=(m=h(e,t,-p)).x,t=m.y,1<(m=(y=(e-(n=(f=h(n,a,-p)).x))/2)*y/(i*i)+(d=(t-(a=f.y))/2)*d/(o*o))&&(i*=m=Math.sqrt(m),o*=m),f=i*i,m=o*o,S=(f=(r===s?-1:1)*Math.sqrt(Math.abs((f*m-f*d*d-m*y*y)/(f*d*d+m*y*y))))*i*d/o+(e+n)/2,g=f*-o*y/i+(t+a)/2,_=Math.asin(parseFloat(((t-g)/o).toFixed(9))),v=Math.asin(parseFloat(((a-g)/o).toFixed(9))),e120*Math.PI/180&&(d=v,f=n,y=a,v=s&&_=e.duration&&e.count&&e.loopsLeft<=1)return a=e.frames[e.lastFrame=e.reverse?0:e.frames.length-1],e.frameCallback(a.value,!0,a.timeRatio,a.outputRatio),void(e.framesStart=null);if(t>e.duration){if(n=Math.floor(t/e.duration),e.count){if(n>=e.loopsLeft)return a=e.frames[e.lastFrame=e.reverse?0:e.frames.length-1],e.frameCallback(a.value,!0,a.timeRatio,a.outputRatio),void(e.framesStart=null);e.loopsLeft-=n}e.framesStart+=e.duration*n,t=i-e.framesStart}e.reverse&&(t=e.duration-t),a=e.frames[e.lastFrame=Math.round(t/v)],!1!==e.frameCallback(a.value,!1,a.timeRatio,a.outputRatio)?o=!0:e.framesStart=null}}),o&&(e=l.call(window,xe))}function be(e,t){e.framesStart=Date.now(),null!=t&&(e.framesStart-=e.duration*(e.reverse?1-t:t)),e.loopsLeft=e.count,e.lastFrame=null,xe()}function ke(t,n){var e,a;return typeof t!=typeof n||(e=he(t)?"obj":Array.isArray(t)?"array":"")!=(he(n)?"obj":Array.isArray(n)?"array":"")||("obj"===e?ke(a=Object.keys(t).sort(),Object.keys(n).sort())||a.some(function(e){return ke(t[e],n[e])}):"array"===e?t.length!==n.length||t.some(function(e,t){return ke(e,n[t])}):t!==n)}function we(n){return n&&(he(n)?Object.keys(n).reduce(function(e,t){return e[t]=we(n[t]),e},{}):Array.isArray(n)?n.map(we):n)}function Oe(e){var t,n,a,i=1,o=e=(e+"").trim();function l(e){var t=1,e=m.exec(e);return e&&(t=parseFloat(e[1]),e[2]?t=0<=t&&t<=100?t/100:1:(t<0||1=Math.abs(n)?0<=t?k:A:0<=n?L:b))})),f.position_path!==y.position_path||f.position_lineStrokeWidth!==y.position_lineStrokeWidth||[0,1].some(function(e){return f.position_plugOverheadSE[e]!==y.position_plugOverheadSE[e]||(t=v[e],n=y.position_socketXYSE[e],t.x!==n.x||t.y!==n.y||t.socketId!==n.socketId)||(t=g[e],n=y.position_socketGravitySE[e],(e=null==t?"auto":Array.isArray(t)?"array":"number")!=(null==n?"auto":Array.isArray(n)?"array":"number")||("array"==e?t[0]!==n[0]||t[1]!==n[1]:t!==n));var t,n})){switch(l.pathList.baseVal=_=[],l.pathList.animVal=null,f.position_path){case P:_.push([E(v[0]),E(v[1])]);break;case N:t="number"==typeof g[0]&&0j?(f.position_lineStrokeWidth-j)*H:0),e.socketId===b?{x:0,y:-(i=(i=(e.y-n.y)/2)=t.x:t.dirId===r?e.y>=t.y:e.x<=t.x}function f(e,t){return t.dirId===i||t.dirId===r?e.x===t.x:e.y===t.y}function y(e){return e[0]?{contain:0,notContain:1}:{contain:1,notContain:0}}function m(e,t,n){return Math.abs(t[n]-e[n])}function S(e,t,n){return"x"===n?e.x=ee?S(u[t.notContain],u[t.contain],o[t.contain]):u[t.contain].dirId)):(i=[{x:u[0].x,y:u[0].y},{x:u[1].x,y:u[1].y}],s.forEach(function(e,t){var n=0===t?1:0,a=m(i[t],i[n],o[t]);a$&&(d[a]-e<$&&(e=d[a]-$),s=Ve(n[0],n[1],(p?e:d[a]-e)/d[a]),_[a]=p?[s,n[1]]:[n[0],s],d[a]-=e)):(d[a]=d[a]||Te.apply(null,n),d[a]>$&&(d[a]-e<$&&(e=d[a]-$),s=Ne(n[0],n[1],n[2],n[3],We(n[0],n[1],n[2],n[3],p?e:d[a]-e)),o=p?(i=n[0],s.toP1):(i=n[3],s.fromP2),l=Math.atan2(i.y-s.y,s.x-i.x),r=Ae(s,o),s.x=i.x+Math.cos(l)*e,s.y=i.y+Math.sin(l)*e*-1,o.x=s.x+Math.cos(l)*r,o.y=s.y+Math.sin(l)*r*-1,_[a]=p?[s,s.toP1,s.toP2,n[3]]:[n[0],s.fromP1,s.fromP2,s],d[a]=null)):e<0&&(n=_[a=p?0:_.length-1],s=v[t].socketId,t=-c[t]["x"==(u=s===A||s===k?"x":"y")?"width":"height"],h=(e=en.outlineMax&&(t=n.outlineMax),t*=2*n.outlineBase,y=Xe(r,u.plugOutline_strokeWidthSE,e,t)||y,y=Xe(r,u.plugOutline_inStrokeWidthSE,e,u.plugOutline_colorTraSE[e]?t-se/(u.line_strokeWidth/ue.lineSize)/s.plugSizeSE[e]*2:t/2)||y)}),y)),(t.faces||U.line||U.plug||U.lineOutline||U.plugOutline)&&(U.faces=(g=(m=e).curStats,_=m.aplStats,v=m.events,E=!1,!g.line_altColor&&Xe(m,_,"line_color",S=g.line_color,v.apl_line_color)&&(m.lineFace.style.stroke=S,E=!0),Xe(m,_,"line_strokeWidth",S=g.line_strokeWidth,v.apl_line_strokeWidth)&&(m.lineShape.style.strokeWidth=S+"px",E=!0,(oe||ie)&&(je(m,m.lineShape),ie&&(je(m,m.lineFace),je(m,m.lineMaskCaps)))),Xe(m,_,"lineOutline_enabled",S=g.lineOutline_enabled,v.apl_lineOutline_enabled)&&(m.lineOutlineFace.style.display=S?"inline":"none",E=!0),g.lineOutline_enabled&&(Xe(m,_,"lineOutline_color",S=g.lineOutline_color,v.apl_lineOutline_color)&&(m.lineOutlineFace.style.stroke=S,E=!0),Xe(m,_,"lineOutline_strokeWidth",S=g.lineOutline_strokeWidth,v.apl_lineOutline_strokeWidth)&&(m.lineOutlineMaskShape.style.strokeWidth=S+"px",E=!0,ie&&(je(m,m.lineOutlineMaskCaps),je(m,m.lineOutlineFace))),Xe(m,_,"lineOutline_inStrokeWidth",S=g.lineOutline_inStrokeWidth,v.apl_lineOutline_inStrokeWidth)&&(m.lineMaskShape.style.strokeWidth=S+"px",E=!0,ie&&(je(m,m.lineOutlineMaskCaps),je(m,m.lineOutlineFace)))),Xe(m,_,"plug_enabled",S=g.plug_enabled,v.apl_plug_enabled)&&(m.plugsFace.style.display=S?"inline":"none",E=!0),g.plug_enabled&&[0,1].forEach(function(n){var e=g.plug_plugSE[n],t=e!==Y?X[q[e]]:null,a=Ze(n,t);Xe(m,_.plug_enabledSE,n,S=g.plug_enabledSE[n],v.apl_plug_enabledSE)&&(m.plugsFace.style[a.prop]=S?"url(#"+m.plugMarkerIdSE[n]+")":"none",E=!0),g.plug_enabledSE[n]&&(Xe(m,_.plug_plugSE,n,e,v.apl_plug_plugSE)&&(m.plugFaceSE[n].href.baseVal="#"+t.elmId,Ue(m,m.plugMarkerSE[n],a.orient,t.bBox,m.svg,m.plugMarkerShapeSE[n],m.plugsFace),E=!0,oe&&je(m,m.plugsFace)),Xe(m,_.plug_colorSE,n,S=g.plug_colorSE[n],v.apl_plug_colorSE)&&(m.plugFaceSE[n].style.fill=S,E=!0,(le||re||ie)&&!g.line_colorTra&&je(m,ie?m.lineMaskCaps:m.capsMaskLine)),["markerWidth","markerHeight"].forEach(function(e){var t="plug_"+e+"SE";Xe(m,_[t],n,S=g[t][n],v["apl_"+t])&&(m.plugMarkerSE[n][e].baseVal.value=S,E=!0)}),Xe(m,_.plugOutline_enabledSE,n,S=g.plugOutline_enabledSE[n],v.apl_plugOutline_enabledSE)&&(S?(m.plugFaceSE[n].style.mask="url(#"+m.plugMaskIdSE[n]+")",m.plugOutlineFaceSE[n].style.display="inline"):(m.plugFaceSE[n].style.mask="none",m.plugOutlineFaceSE[n].style.display="none"),E=!0),g.plugOutline_enabledSE[n]&&(Xe(m,_.plugOutline_plugSE,n,e,v.apl_plugOutline_plugSE)&&(m.plugOutlineFaceSE[n].href.baseVal=m.plugMaskShapeSE[n].href.baseVal=m.plugOutlineMaskShapeSE[n].href.baseVal="#"+t.elmId,[m.plugMaskSE[n],m.plugOutlineMaskSE[n]].forEach(function(e){e.x.baseVal.value=t.bBox.left,e.y.baseVal.value=t.bBox.top,e.width.baseVal.value=t.bBox.width,e.height.baseVal.value=t.bBox.height}),E=!0),Xe(m,_.plugOutline_colorSE,n,S=g.plugOutline_colorSE[n],v.apl_plugOutline_colorSE)&&(m.plugOutlineFaceSE[n].style.fill=S,E=!0,ie&&(je(m,m.lineMaskCaps),je(m,m.lineOutlineMaskCaps))),Xe(m,_.plugOutline_strokeWidthSE,n,S=g.plugOutline_strokeWidthSE[n],v.apl_plugOutline_strokeWidthSE)&&(m.plugOutlineMaskShapeSE[n].style.strokeWidth=S+"px",E=!0),Xe(m,_.plugOutline_inStrokeWidthSE,n,S=g.plugOutline_inStrokeWidthSE[n],v.apl_plugOutline_inStrokeWidthSE)&&(m.plugMaskShapeSE[n].style.strokeWidth=S+"px",E=!0)))}),E)),(t.position||U.line||U.plug)&&(U.position=Ke(e)),(t.path||U.position)&&(U.path=(k=(x=e).curStats,I=x.aplStats,M=x.pathList.animVal||x.pathList.baseVal,w=k.path_edge,C=!1,M&&(w.x1=w.x2=M[0][0].x,w.y1=w.y2=M[0][0].y,k.path_pathData=b=Be(M,function(e){e.xw.x2&&(w.x2=e.x),e.y>w.y2&&(w.y2=e.y)}),Fe(b,I.path_pathData)&&(x.linePath.setPathData(b),I.path_pathData=b,C=!0,ie?(je(x,x.plugsFace),je(x,x.lineMaskCaps)):oe&&je(x,x.linePath),x.events.apl_path&&x.events.apl_path.forEach(function(e){e(x,b)}))),C)),U.viewBox=(M=(O=e).curStats,I=O.aplStats,C=M.path_edge,L=M.viewBox_bBox,A=I.viewBox_bBox,V=O.svg.viewBox.baseVal,P=O.svg.style,N=!1,I=Math.max(M.line_strokeWidth/2,M.viewBox_plugBCircleSE[0]||0,M.viewBox_plugBCircleSE[1]||0),T={x1:C.x1-I,y1:C.y1-I,x2:C.x2+I,y2:C.y2+I},O.events.new_edge4viewBox&&O.events.new_edge4viewBox.forEach(function(e){e(O,T)}),L.x=M.lineMask_x=M.lineOutlineMask_x=M.maskBGRect_x=T.x1,L.y=M.lineMask_y=M.lineOutlineMask_y=M.maskBGRect_y=T.y1,L.width=T.x2-T.x1,L.height=T.y2-T.y1,["x","y","width","height"].forEach(function(e){var t;(t=L[e])!==A[e]&&(V[e]=A[e]=t,P[Q[e]]=t+("x"===e||"y"===e?O.bodyOffset[e]:0)+"px",N=!0)}),N),U.mask=(R=(W=e).curStats,F=W.aplStats,G=!1,R.plug_enabled?[0,1].forEach(function(e){R.capsMaskMarker_enabledSE[e]=R.plug_enabledSE[e]&&R.plug_colorTraSE[e]||R.plugOutline_enabledSE[e]&&R.plugOutline_colorTraSE[e]}):R.capsMaskMarker_enabledSE[0]=R.capsMaskMarker_enabledSE[1]=!1,R.capsMaskMarker_enabled=R.capsMaskMarker_enabledSE[0]||R.capsMaskMarker_enabledSE[1],R.lineMask_outlineMode=R.lineOutline_enabled,R.caps_enabled=R.capsMaskMarker_enabled||R.capsMaskAnchor_enabledSE[0]||R.capsMaskAnchor_enabledSE[1],R.lineMask_enabled=R.caps_enabled||R.lineMask_outlineMode,(R.lineMask_enabled&&!R.lineMask_outlineMode||R.lineOutline_enabled)&&["x","y"].forEach(function(e){var t="maskBGRect_"+e;Xe(W,F,t,B=R[t])&&(W.maskBGRect[e].baseVal.value=B,G=!0)}),Xe(W,F,"lineMask_enabled",B=R.lineMask_enabled)&&(W.lineFace.style.mask=B?"url(#"+W.lineMaskId+")":"none",G=!0,re&&je(W,W.lineMask)),R.lineMask_enabled&&(Xe(W,F,"lineMask_outlineMode",B=R.lineMask_outlineMode)&&(B?(W.lineMaskBG.style.display="none",W.lineMaskShape.style.display="inline"):(W.lineMaskBG.style.display="inline",W.lineMaskShape.style.display="none"),G=!0),["x","y"].forEach(function(e){var t="lineMask_"+e;Xe(W,F,t,B=R[t])&&(W.lineMask[e].baseVal.value=B,G=!0)}),Xe(W,F,"caps_enabled",B=R.caps_enabled)&&(W.lineMaskCaps.style.display=W.lineOutlineMaskCaps.style.display=B?"inline":"none",G=!0,re&&je(W,W.capsMaskLine)),R.caps_enabled&&([0,1].forEach(function(e){var t;Xe(W,F.capsMaskAnchor_enabledSE,e,B=R.capsMaskAnchor_enabledSE[e])&&(W.capsMaskAnchorSE[e].style.display=B?"inline":"none",G=!0,re&&je(W,W.lineMask)),R.capsMaskAnchor_enabledSE[e]&&(Fe(t=R.capsMaskAnchor_pathDataSE[e],F.capsMaskAnchor_pathDataSE[e])&&(W.capsMaskAnchorSE[e].setPathData(t),F.capsMaskAnchor_pathDataSE[e]=t,G=!0),Xe(W,F.capsMaskAnchor_strokeWidthSE,e,B=R.capsMaskAnchor_strokeWidthSE[e])&&(W.capsMaskAnchorSE[e].style.strokeWidth=B+"px",G=!0))}),Xe(W,F,"capsMaskMarker_enabled",B=R.capsMaskMarker_enabled)&&(W.capsMaskLine.style.display=B?"inline":"none",G=!0),R.capsMaskMarker_enabled&&[0,1].forEach(function(n){var e=R.capsMaskMarker_plugSE[n],t=e!==Y?X[q[e]]:null,a=Ze(n,t);Xe(W,F.capsMaskMarker_enabledSE,n,B=R.capsMaskMarker_enabledSE[n])&&(W.capsMaskLine.style[a.prop]=B?"url(#"+W.lineMaskMarkerIdSE[n]+")":"none",G=!0),R.capsMaskMarker_enabledSE[n]&&(Xe(W,F.capsMaskMarker_plugSE,n,e)&&(W.capsMaskMarkerShapeSE[n].href.baseVal="#"+t.elmId,Ue(W,W.capsMaskMarkerSE[n],a.orient,t.bBox,W.svg,W.capsMaskMarkerShapeSE[n],W.capsMaskLine),G=!0,oe&&(je(W,W.capsMaskLine),je(W,W.lineFace))),["markerWidth","markerHeight"].forEach(function(e){var t="capsMaskMarker_"+e+"SE";Xe(W,F[t],n,B=R[t][n])&&(W.capsMaskMarkerSE[n][e].baseVal.value=B,G=!0)}))}))),R.lineOutline_enabled&&["x","y"].forEach(function(e){var t="lineOutlineMask_"+e;Xe(W,F,t,B=R[t])&&(W.lineOutlineMask[e].baseVal.value=B,G=!0)}),G),t.effect&&(j=(D=e).curStats,H=D.aplStats,Object.keys(Z).forEach(function(e){var t=Z[e],n=e+"_enabled",a=e+"_options",e=j[a];Xe(D,H,n,z=j[n])?(z&&(H[a]=we(e)),t[z?"init":"remove"](D)):z&&ke(e,H[a])&&(t.remove(D),H[n]=!0,H[a]=we(e),t.init(D))})),(le||re)&&U.line&&!U.path&&je(e,e.lineShape),le&&U.plug&&!U.line&&je(e,e.plugsFace),He(e)}function et(e,t){return{duration:(pe(e.duration)&&0i.x2&&(i.x2=e.x2),e.y2>i.y2&&(i.y2=e.y2),["x","y"].forEach(function(e){var t,n="dropShadow_"+e;o[n]=t=i[e+"1"],Xe(a,l,n,t)&&(a.efc_dropShadow_elmFilter[e].baseVal.value=t)}))}}},Object.keys(Z).forEach(function(e){var t=Z[e],n=t.stats;n[e+"_enabled"]={iniValue:!1},n[e+"_options"]={hasProps:!0},t.anim&&(n[e+"_animOptions"]={},n[e+"_animId"]={})}),w={none:{defaultAnimOptions:{},init:function(e,t){var n=e.curStats;n.show_animId&&(g.remove(n.show_animId),n.show_animId=null),w.none.start(e,t)},start:function(e,t){w.none.stop(e,!0)},stop:function(e,t,n){var a=e.curStats;return n=null!=n?n:e.aplStats.show_on,a.show_inAnim=!1,t&&Je(e,n),n?1:0}},fade:{defaultAnimOptions:{duration:300,timing:"linear"},init:function(n,e){var t=n.curStats,a=n.aplStats;t.show_animId&&g.remove(t.show_animId),t.show_animId=g.add(function(e){return e},function(e,t){t?w.fade.stop(n,!0):(n.svg.style.opacity=e+"",ie&&(je(n,n.svg),He(n)))},a.show_animOptions.duration,1,a.show_animOptions.timing,null,!1),w.fade.start(n,e)},start:function(e,t){var n,a=e.curStats;a.show_inAnim&&(n=g.stop(a.show_animId)),Je(e,1),a.show_inAnim=!0,g.start(a.show_animId,!e.aplStats.show_on,null!=t?t:n)},stop:function(e,t,n){var a,i=e.curStats;return n=null!=n?n:e.aplStats.show_on,a=i.show_inAnim?g.stop(i.show_animId):n?1:0,i.show_inAnim=!1,t&&(e.svg.style.opacity=n?"":"0",Je(e,n)),a}},draw:{defaultAnimOptions:{duration:500,timing:[.58,0,.42,1]},init:function(n,e){var t=n.curStats,a=n.aplStats,o=n.pathList.baseVal,i=Re(o),l=i.segsLen,r=i.lenAll;t.show_animId&&g.remove(t.show_animId),t.show_animId=g.add(function(e){var t,n,a,i=-1;if(0===e)n=[[o[0][0],o[0][0]]];else if(1===e)n=o;else{for(t=r*e,n=[];t>=l[++i];)n.push(o[i]),t-=l[i];t&&(2===(a=o[i]).length?n.push([a[0],Ve(a[0],a[1],t/l[i])]):(e=Ne(a[0],a[1],a[2],a[3],We(a[0],a[1],a[2],a[3],t)),n.push([a[0],e.fromP1,e.fromP2,e])))}return n},function(e,t){t?w.draw.stop(n,!0):(n.pathList.animVal=e,$e(n,{path:!0}))},a.show_animOptions.duration,1,a.show_animOptions.timing,null,!1),w.draw.start(n,e)},start:function(e,t){var n,a=e.curStats;a.show_inAnim&&(n=g.stop(a.show_animId)),Je(e,1),a.show_inAnim=!0,Ge(e,"apl_position",w.draw.update),g.start(a.show_animId,!e.aplStats.show_on,null!=t?t:n)},stop:function(e,t,n){var a,i=e.curStats;return n=null!=n?n:e.aplStats.show_on,a=i.show_inAnim?g.stop(i.show_animId):n?1:0,i.show_inAnim=!1,t&&(e.pathList.animVal=n?null:[[e.pathList.baseVal[0][0],e.pathList.baseVal[0][0]]],$e(e,{path:!0}),Je(e,n)),a},update:function(e){De(e,"apl_position",w.draw.update),e.curStats.show_inAnim?w.draw.init(e,w.draw.stop(e)):e.aplStats.show_animOptions={}}}},[["start","anchorSE",0],["end","anchorSE",1],["color","lineColor"],["size","lineSize"],["startSocketGravity","socketGravitySE",0],["endSocketGravity","socketGravitySE",1],["startPlugColor","plugColorSE",0],["endPlugColor","plugColorSE",1],["startPlugSize","plugSizeSE",0],["endPlugSize","plugSizeSE",1],["outline","lineOutlineEnabled"],["outlineColor","lineOutlineColor"],["outlineSize","lineOutlineSize"],["startPlugOutline","plugOutlineEnabledSE",0],["endPlugOutline","plugOutlineEnabledSE",1],["startPlugOutlineColor","plugOutlineColorSE",0],["endPlugOutlineColor","plugOutlineColorSE",1],["startPlugOutlineSize","plugOutlineSizeSE",0],["endPlugOutlineSize","plugOutlineSizeSE",1]].forEach(function(e){var t=e[0],n=e[1],a=e[2];Object.defineProperty(ot.prototype,t,{get:function(){var e=null!=a?Se[this._id].options[n][a]:n?Se[this._id].options[n]:Se[this._id].options[t];return null==e?D:we(e)},set:lt(t),enumerable:!0})}),[["path",R],["startSocket",V,"socketSE",0],["endSocket",V,"socketSE",1],["startPlug",F,"plugSE",0],["endPlug",F,"plugSE",1]].forEach(function(e){var a=e[0],i=e[1],o=e[2],l=e[3];Object.defineProperty(ot.prototype,a,{get:function(){var t,n=null!=l?Se[this._id].options[o][l]:o?Se[this._id].options[o]:Se[this._id].options[a];return n?Object.keys(i).some(function(e){return i[e]===n&&(t=e,!0)})?t:new Error("It's broken"):D},set:lt(a),enumerable:!0})}),Object.keys(Z).forEach(function(n){var a=Z[n];Object.defineProperty(ot.prototype,n,{get:function(){var s,e,t=Se[this._id].options[n];return he(t)?(s=t,e=a.optionsConf.reduce(function(e,t){var n,a=t[0],i=t[1],o=t[2],l=t[3],t=t[4],r=null!=t?s[l][t]:l?s[l]:s[i];return e[i]="id"===a?r?Object.keys(o).some(function(e){return o[e]===r&&(n=e,!0)})?n:new Error("It's broken"):D:null==r?D:we(r),e},{}),a.anim&&(e.animation=we(s.animation)),e):t},set:lt(n),enumerable:!0})}),["startLabel","endLabel","middleLabel"].forEach(function(e,n){Object.defineProperty(ot.prototype,e,{get:function(){var e=Se[this._id],t=e.options;return t.labelSEM[n]&&!e.optionIsAttach.labelSEM[n]?_e[t.labelSEM[n]._id].text:t.labelSEM[n]||""},set:lt(e),enumerable:!0})}),ot.prototype.setOptions=function(e){return it(Se[this._id],e),this},ot.prototype.position=function(){return $e(Se[this._id],{position:!0}),this},ot.prototype.remove=function(){var t=Se[this._id],n=t.curStats;Object.keys(Z).forEach(function(e){e+="_animId";n[e]&&g.remove(n[e])}),n.show_animId&&g.remove(n.show_animId),t.attachments.slice().forEach(function(e){at(t,e)}),t.baseWindow&&t.svg&&t.baseWindow.document.body.removeChild(t.svg),delete Se[this._id]},ot.prototype.show=function(e,t){return tt(Se[this._id],!0,e,t),this},ot.prototype.hide=function(e,t){return tt(Se[this._id],!1,e,t),this},o=function(t){t&&_e[t._id]&&(t.boundTargets.slice().forEach(function(e){at(e.props,t,!0)}),t.conf.remove&&t.conf.remove(t),delete _e[t._id])},rt.prototype.remove=function(){var t=this,n=_e[t._id];n&&(n.boundTargets.slice().forEach(function(e){n.conf.removeOption(n,e)}),ze(function(){var e=_e[t._id];e&&(console.error("LeaderLineAttachment was not removed by removeOption"),o(e))}))},M=rt,window.LeaderLineAttachment=M,I=function(e,t){return e instanceof M&&(!(e.isRemoved||t&&_e[e._id].conf.type!==t)||null)},O={pointAnchor:{type:"anchor",argOptions:[{optionName:"element",type:Me}],init:function(e,t){return e.element=O.pointAnchor.checkElement(t.element),e.x=O.pointAnchor.parsePercent(t.x,!0)||[.5,!0],e.y=O.pointAnchor.parsePercent(t.y,!0)||[.5,!0],!0},removeOption:function(e,t){var n=t.props,a={},i=e.element,e=n.options.anchorSE["start"===t.optionName?1:0];i===e&&(i=e===document.body?new M(O.pointAnchor,[i]):document.body),a[t.optionName]=i,it(n,a)},getBBoxNest:function(e,t){var n=Le(e.element,t.baseWindow),a=n.width,t=n.height;return n.width=n.height=0,n.left=n.right=n.left+e.x[0]*(e.x[1]?a:1),n.top=n.bottom=n.top+e.y[0]*(e.y[1]?t:1),n},parsePercent:function(e,t){var n,a,i=!1;return pe(e)?a=e:"string"==typeof e&&(n=m.exec(e))&&n[2]&&(i=0!==(a=parseFloat(n[1])/100)),null!=a&&(t||0<=a)?[a,i]:null},checkElement:function(e){if(null==e)e=document.body;else if(!Me(e))throw new Error("`element` must be Element");return e}},areaAnchor:{type:"anchor",argOptions:[{optionName:"element",type:Me},{optionName:"shape",type:"string"}],stats:{color:{},strokeWidth:{},elementWidth:{},elementHeight:{},elementLeft:{},elementTop:{},pathListRel:{},bBoxRel:{},pathData:{},viewBoxBBox:{hasProps:!0},dashLen:{},dashGap:{}},init:function(a,e){var t,n=[];return a.element=O.pointAnchor.checkElement(e.element),"string"==typeof e.color&&(a.color=e.color.trim()),"string"==typeof e.fillColor&&(a.fill=e.fillColor.trim()),pe(e.size)&&0<=e.size&&(a.size=e.size),e.dash&&(a.dash=!0,pe(e.dash.len)&&0i.right&&(i.right=t),ei.bottom&&(i.bottom=e)):i={left:t,right:t,top:e,bottom:e},o?S.pathListRel.push([o,{x:t,y:e}]):S.pathListRel=[],o={x:t,y:e}}),S.pathListRel.push([]),e=S.strokeWidth/2,e=[{x:i.left-e,y:i.top-e},{x:i.right+e,y:i.bottom+e}],S.bBoxRel={left:e[0].x,top:e[0].y,right:e[1].x,bottom:e[1].y,width:e[1].x-e[0].x,height:e[1].y-e[0].y}}v.pathListRel=v.bBoxRel=!0}return(v.pathListRel||v.elementLeft||v.elementTop)&&(S.pathData=Be(S.pathListRel,function(e){e.x+=n.left,e.y+=n.top})),Xe(t,g,"strokeWidth",a=S.strokeWidth)&&(t.path.style.strokeWidth=a+"px"),Fe(a=S.pathData,g.pathData)&&(t.path.setPathData(a),g.pathData=a,v.pathData=!0),t.dash&&(!v.pathData&&(!v.strokeWidth||t.dashLen&&t.dashGap)||(S.dashLen=t.dashLen||2*S.strokeWidth,S.dashGap=t.dashGap||S.strokeWidth),v.dash=Xe(t,g,"dashLen",S.dashLen)||v.dash,v.dash=Xe(t,g,"dashGap",S.dashGap)||v.dash,v.dash&&(t.path.style.strokeDasharray=g.dashLen+","+g.dashGap)),d=S.viewBoxBBox,f=g.viewBoxBBox,y=t.svg.viewBox.baseVal,m=t.svg.style,d.x=S.bBoxRel.left+n.left,d.y=S.bBoxRel.top+n.top,d.width=S.bBoxRel.width,d.height=S.bBoxRel.height,["x","y","width","height"].forEach(function(e){(a=d[e])!==f[e]&&(y[e]=f[e]=a,m[Q[e]]=a+("x"===e||"y"===e?t.bodyOffset[e]:0)+"px")}),v.strokeWidth||v.pathListRel||v.bBoxRel}},mouseHoverAnchor:{type:"anchor",argOptions:[{optionName:"element",type:Me},{optionName:"showEffectName",type:"string"}],style:{backgroundImage:"url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cG9seWdvbiBwb2ludHM9IjI0LDAgMCw4IDgsMTEgMCwxOSA1LDI0IDEzLDE2IDE2LDI0IiBmaWxsPSJjb3JhbCIvPjwvc3ZnPg==')",backgroundSize:"",backgroundRepeat:"no-repeat",backgroundColor:"#f8f881",cursor:"default"},hoverStyle:{backgroundImage:"none",backgroundColor:"#fadf8f"},padding:{top:1,right:15,bottom:1,left:2},minHeight:15,backgroundPosition:{right:2,top:2},backgroundSize:{width:12,height:12},dirKeys:[["top","Top"],["right","Right"],["bottom","Bottom"],["left","Left"]],init:function(a,i){var n,t,e,o,l,r,s,u,h,p=O.mouseHoverAnchor,c={};if(a.element=O.pointAnchor.checkElement(i.element),s=a.element,!((u=s.ownerDocument)&&(h=u.defaultView)&&h.HTMLElement&&s instanceof h.HTMLElement))throw new Error("`element` must be HTML element");return p.style.backgroundSize=p.backgroundSize.width+"px "+p.backgroundSize.height+"px",["style","hoverStyle"].forEach(function(e){var n=p[e];a[e]=Object.keys(n).reduce(function(e,t){return e[t]=n[t],e},{})}),"inline"===(n=a.element.ownerDocument.defaultView.getComputedStyle(a.element,"")).display?a.style.display="inline-block":"none"===n.display&&(a.style.display="block"),O.mouseHoverAnchor.dirKeys.forEach(function(e){var t=e[0],e="padding"+e[1];parseFloat(n[e])e.x2&&(e.x2=n.x2),n.y2>e.y2&&(e.y2=n.y2)},newText:function(e,t,n,a,i){var o,l,r=t.createElementNS(ae,"text");return r.textContent=e,[r.x,r.y].forEach(function(e){var t=n.createSVGLength();t.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX,0),e.baseVal.initialize(t)}),"boolean"!=typeof h&&(h="paintOrder"in r.style),i&&!h?(o=t.createElementNS(ae,"defs"),r.id=a,o.appendChild(r),(l=(e=t.createElementNS(ae,"g")).appendChild(t.createElementNS(ae,"use"))).href.baseVal="#"+a,(t=e.appendChild(t.createElementNS(ae,"use"))).href.baseVal="#"+a,(l=l.style).strokeLinejoin="round",{elmPosition:r,styleText:r.style,styleFill:t.style,styleStroke:l,styleShow:e.style,elmsAppend:[o,e]}):(l=r.style,i&&(l.strokeLinejoin="round",l.paintOrder="stroke"),{elmPosition:r,styleText:l,styleFill:l,styleStroke:i?l:null,styleShow:l,elmsAppend:[r]})},getMidPoint:function(e,t){var n,a,i=Re(e),o=i.segsLen,i=i.lenAll,l=-1,r=i/2+(t||0);if(r<=0)return 2===(n=e[0]).length?Ve(n[0],n[1],0):Ne(n[0],n[1],n[2],n[3],0);if(i<=r)return 2===(n=e[e.length-1]).length?Ve(n[0],n[1],1):Ne(n[0],n[1],n[2],n[3],1);for(a=[];r>o[++l];)a.push(e[l]),r-=o[l];return 2===(n=e[l]).length?Ve(n[0],n[1],r/o[l]):Ne(n[0],n[1],n[2],n[3],We(n[0],n[1],n[2],n[3],r))},initSvg:function(t,n){var e,a,i=O.captionLabel.newText(t.text,n.baseWindow.document,n.svg,C+"-captionLabel-"+t._id,t.outlineColor);["elmPosition","styleFill","styleShow","elmsAppend"].forEach(function(e){t[e]=i[e]}),t.isShown=!1,t.styleShow.visibility="hidden",O.captionLabel.textStyleProps.forEach(function(e){null!=t[e]&&(i.styleText[e]=t[e])}),i.elmsAppend.forEach(function(e){n.svg.appendChild(e)}),e=i.elmPosition.getBBox(),t.width=e.width,t.height=e.height,t.outlineColor&&(a=e.height/9,i.styleStroke.strokeWidth=(a=10c?((t=d.points)[1]=Pe(t[0],t[1],-c),d.len=Ae(t[0],t[1])):(d.points=null,d.len=0),e.len>c+n?((t=e.points)[0]=Pe(t[1],t[0],-(c+n)),e.len=Ae(t[0],t[1])):(e.points=null,e.len=0)),e):null}),f.reduce(function(t,e){var n=e.points;return n&&(a&&y(n[0],a)||t.push({type:"M",values:[n[0].x,n[0].y]}),"line"===e.type?t.push({type:"L",values:[n[1].x,n[1].y]}):(n.shift(),n.forEach(function(e){t.push({type:"L",values:[e.x,e.y]})})),a=n[n.length-1]),t},[])},newText:function(e,t,n,a){var i,o,l,r,s=t.createElementNS(ae,"defs"),u=s.appendChild(t.createElementNS(ae,"path"));return u.id=i=n+"-path",(l=(o=t.createElementNS(ae,"text")).appendChild(t.createElementNS(ae,"textPath"))).href.baseVal="#"+i,l.startOffset.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX,0),l.textContent=e,"boolean"!=typeof h&&(h="paintOrder"in o.style),a&&!h?(o.id=e=n+"-text",s.appendChild(o),(r=(n=t.createElementNS(ae,"g")).appendChild(t.createElementNS(ae,"use"))).href.baseVal="#"+e,(t=n.appendChild(t.createElementNS(ae,"use"))).href.baseVal="#"+e,(r=r.style).strokeLinejoin="round",{elmPosition:o,elmPath:u,elmOffset:l,styleText:o.style,styleFill:t.style,styleStroke:r,styleShow:n.style,elmsAppend:[s,n]}):(r=o.style,a&&(r.strokeLinejoin="round",r.paintOrder="stroke"),{elmPosition:o,elmPath:u,elmOffset:l,styleText:r,styleFill:r,styleStroke:a?r:null,styleShow:r,elmsAppend:[s,o]})},initSvg:function(t,n){var e,a,i,o=O.pathLabel.newText(t.text,n.baseWindow.document,C+"-pathLabel-"+t._id,t.outlineColor);["elmPosition","elmPath","elmOffset","styleFill","styleShow","elmsAppend"].forEach(function(e){t[e]=o[e]}),t.isShown=!1,t.styleShow.visibility="hidden",O.captionLabel.textStyleProps.forEach(function(e){null!=t[e]&&(o.styleText[e]=t[e])}),o.elmsAppend.forEach(function(e){n.svg.appendChild(e)}),o.elmPath.setPathData([{type:"M",values:[0,100]},{type:"h",values:[100]}]),le&&(i=o.elmOffset.href.baseVal,o.elmOffset.href.baseVal=""),e=o.elmPosition.getBBox(),le&&(o.elmOffset.href.baseVal=i),o.styleText.textAnchor=["start","end","middle"][t.semIndex],2!==t.semIndex||t.lineOffset||o.elmOffset.startOffset.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE,50),t.height=e.height,t.outlineColor&&(a=e.height/9,o.styleStroke.strokeWidth=(a=10BCW-0 Principes du « Beau code web »
-
-

- À qui s’adresse ce guide - -

-

- Ce guide a été créé par des enseignants et professionnels du web de la communauté du master Web éditorial et stratégie UX. - Il s’adresse aux étudiants et aux professionnels de la communication au moyen - de sites web ou, plus généralement, d’applications web. -

-
-
-

- Objet de ce guide - -

-

- Ce guide a pour objet la conception technique d’applications web, dans son sens le plus général. Une application web peut ne proposer que de la consultation de contenu, jusqu’à la manipulation de données et de processus spécifiques (applications métier). - On entendra donc par applications web, notamment : -

-
    -
  • les sites web (statiques, dynamiques, CMS, e-commerce, etc.),
  • -
  • les applications fonctionnant sur le web (dashboards, applications métiers, etc.),
  • -
  • les applications web destinées aux mobiles,
  • -
-

- dans la mesure où ces applications sont concernées : -

-
    -
  • par les langages abordés,
  • -
  • par le public visé.
  • -
-
-
-

- Principes et objectifs - -

- -
-

- 1. Principe de service de l’utilisateur - -

+
+

+ À qui s’adresse ce guide + +

- Une application web est d’abord au service de ses utilisateurs, de ses lecteurs. - On s’attachera donc à l’expérience utilisateur également dans la façon de coder. + Ce guide a été créé par des enseignants et professionnels du web de la communauté du master Web éditorial et stratégie UX. + Il s’adresse aux étudiants et aux professionnels de la communication au moyen + de sites web ou, plus généralement, d’applications web.

- -
-

- 2. Objectif de sécurité - -

+
+

+ Objet de ce guide + +

- Découle du principe de service : quand plusieurs façons de coder sont possibles, il faut s’efforcer de privilégier la plus sûre. + Ce guide a pour objet la conception technique d’applications web, dans son sens le plus général. Une application web peut ne proposer que de la consultation de contenu, jusqu’à la manipulation de données et de processus spécifiques (applications métier). + On entendra donc par applications web, notamment :

-
- -
-

- 3. Objectif de performance - -

+
    +
  • les sites web (statiques, dynamiques, CMS, e-commerce, etc.),
  • +
  • les applications fonctionnant sur le web (dashboards, applications métiers, etc.),
  • +
  • les applications web destinées aux mobiles,
  • +

- Découle du principe de service : quand plusieurs façons de coder sont possibles, il faut s’efforcer de privilégier l’efficience, en temps d’exécution ou de chargement ou en ressources consommées. + dans la mesure où ces applications sont concernées :

+
    +
  • par les langages abordés,
  • +
  • par le public visé.
  • +
+
+

+ Principes et objectifs + +

-
-

- 4. Principe de maintenabilité - -

-

- Les applications web ont vocation à durer dans le temps. - Il convient donc de prévoir que leurs professionnels y reviennent régulièrement. - La maintenabilité est le fait de pouvoir comprendre un code aisément, - s’y repérer, y modifier ce qu’il est nécessaire de modifier, pas plus. -

-
+
+

+ 1. Principe de service de l’utilisateur + +

+

+ Une application web est d’abord au service de ses utilisateurs, de ses lecteurs. + On s’attachera donc à l’expérience utilisateur également dans la façon de coder. +

+
+ +
+

+ 2. Objectif de sécurité + +

+

+ Découle du principe de service : quand plusieurs façons de coder sont possibles, il faut s’efforcer de privilégier la plus sûre. +

+
+ +
+

+ 3. Objectif de performance + +

+

+ Découle du principe de service : quand plusieurs façons de coder sont possibles, il faut s’efforcer de privilégier l’efficience, en temps d’exécution ou de chargement ou en ressources consommées. +

+
+ +
+

+ 4. Principe de maintenabilité + +

+

+ Les applications web ont vocation à durer dans le temps. + Il convient donc de prévoir que leurs professionnels y reviennent régulièrement. + La maintenabilité est le fait de pouvoir comprendre un code aisément, + s’y repérer, y modifier ce qu’il est nécessaire de modifier, pas plus. +

+
+ +
+

+ 5. Objectif de respect des standards + +

+

+ Découle du principe de maintenabilité : on ne devrait pas avoir à revenir sur un document quand il n’y a pas besoin de modifier son contenu. + Le respect des standards permet une plus grande durabilité du code. +

+

+ Ce principe facilite aussi la collaboration entre plusieurs acteurs, simultanément ou au cours de la durée de vie d’un code. +

+

+ Parmi les standards reconnus, on s’attachera en particulier à respecter l’esprit des Principes de conception du HTML [HTMLDP], notamment : + la compatibilité, + l’utilité, dont la priorité au terrain, + la modularité (separation of concerns), + l’interopérabilité et + l’accès universel. + La priorité au terrain impose, notamment, de s’attacher autant que possible aux usages déjà répandus, quand ils ne sont pas contraires aux grands principes retenus ici. +

+
+ +
+

+ 6. Objectif de lisibilité + +

+

+ Découle du principe de maintenabilité : + le code doit minimiser la charge cognitive de sa lecture. + En particulier, il convient d’être régulier, d’éviter les formulations ambiguës ou techniquement ou conceptuellement complexes quand elles ne sont pas nécessaires. +

+
+ +
+

+ 7. Objectif de cohérence + +

+

+ Découle du principe de Lisibilité : + la cohérence est le fait d’appliquer des choix de façon homogène au sein d’un projet ou d’un collectif de travail. + Elle permet ainsi d’alléger la charge cognitive pour lire, créer ou modifier un code. +

+
+ +
-
+
+

+ Glossaire + +

+
+

Typographie

+
+
alphanumérique
+
+ Un caractère alphanumérique est un chiffre ou lettre latine, minuscule ou majuscule, sans accent ni diacritique. Certains langages ajoutent également le souligné (_). +
+
casse
+
La casse est la différence entre minuscules et majuscules.
+
+ Du temps des presses mécaniques, la casse était le casier dans lequel on rangeait les caractères. Ainsi bas de casse, en anglais lower case, est synonyme de minuscule et haut de casse, en anglais upper case, de majuscule. + [Wikipedia] +
+
kebab-case
+
+ Mots écrits en minuscules, joints par des tirets. +
+
+ Le terme kebab désigne de la viande rôtie, en particulier à la broche. Dans le -kebab-case⊸, les mots sont comme embrochés. +
+
camelCase
+
+ Mots collés entre eux, les initiales en majuscules sauf la première, les autres lettres en minuscules. +
+
+ Le langage de programmation Camel a popularisé cette notation. + On dit parfois que les bosses sont au milieu comme pour un chameau. + En anglais, le mot camel désigne aussi bien un chameau 🐫 qu’un dromadaire 🐪. +
+
PascalCase
+
StudlyCase
+
+ Mots collés entre eux, les initiales en majuscules, les autres lettres en minuscules. +
+
+ Le langage de programmation Pascal a popularisé cette notation. + Le terme PascalCase est univoque. + Le terme StudlyCase, parfois employé, peut, lui, désigner d’autres écritures. +
+
+
+
+

Modalités aux termes de la [RFC2119]

+
+
doit
+
devra
+
obligatoire
+
Ce(s) terme(s) désigne(nt) une exigence absolue de ce guide [RFC2119, §1].
+
ne doit pas
+
ne devra pas
+
Ce(s) terme(s) désigne(nt) une interdiction absolue de ce guide [RFC2119, §2].
+
devrait
+
recommandé
+
Ce(s) terme(s) signifie(nt) qu’il peut exister des raisons valables dans des circonstances particulières pour ignorer un élément précis, mais toutes les implications doivent être comprises et soigneusement pesées avant de choisir une voie différente [RFC2119, §3].
+
ne devrait pas
+
non recommandé
+
Ce(s) terme(s) signifie(nt) qu’il peut exister des raisons valides dans des circonstances particulières quand le comportement spécifique est acceptable ou même utile, mais les répercussions complètent devraient être comprise et le cas soigneusement évalué avant d’implémenter [ceci] [RFC2119, §4].
+
peut
+
facultatif
+
Ce(s) terme(s) signifie(nt) que ce choix est vraiment facultatif [RFC2119, §5].
+
Un fabricant peut choisir d’inclure l’élément parce que un secteur particulier du marché le réclame ou parce que le fabricant pense que cela améliore le produit tandis qu’un autre fabricant peut omettre le même élément. Une mise en œuvre qui n’inclut pas une option particulière doit pouvoir interopérer avec une autre mise en œuvre qui n’inclut pas l’option, peut-être au prix de fonctionnalités réduites. Dans la même veine, une mise en œuvre qui n’inclut pas une option particulière doit être préparée à interopérer avec une autre mise en œuvre qui n’inclut pas l’option (excepté, bien sûr, pour la caractéristique fournie par l’option).
+
+
+
+ +
+

+ Références + +

+
    +
  • + [HTMLDP] + van Kesteren, Anne (éd.), + Stachowiak, Maciej (éd.). + (). + HTML Design Principles. + W3C. + W3C working draft. +
  • +
  • + [RFC2119] + Bradner, Scott. + (). + Key words for use in RFCs to Indicate Requirement Levels. + IETF. + RFC 2119 / BCP 14. +
  • +
  • + [TechSEO] + Martin, Alexandra, + Chartier, Mathieu. + (). + Techniques de référencement web, Audit et suivi SEO. + Eyrolles. + 4e édition. +
  • +
+
+ +

- 5. Objectif de respect des standards - + Mentions légales +

- Découle du principe de maintenabilité : on ne devrait pas avoir à revenir sur un document quand il n’y a pas besoin de modifier son contenu. - Le respect des standards permet une plus grande durabilité du code. -

-

- Ce principe facilite aussi la collaboration entre plusieurs acteurs, simultanément ou au cours de la durée de vie d’un code. + Le beau code web est distribué sous licence libre + GNU GPL, version 3.

- Parmi les standards reconnus, on s’attachera en particulier à respecter l’esprit des Principes de conception du HTML [HTMLDP], notamment : - la compatibilité, - l’utilité, dont la priorité au terrain, - la modularité (separation of concerns), - l’interopérabilité et - l’accès universel. - La priorité au terrain impose, notamment, de s’attacher autant que possible aux usages déjà répandus, quand ils ne sont pas contraires aux grands principes retenus ici. + Le beau code web ne conserve pas de données personnelles, + ne dépose pas de cookies + et ne comporte pas de publicité ni de contenu sponsorisé, + mais son hébergeur peut avoir recours à l’un de ces moyens.

-
- -
-

- 6. Objectif de lisibilité - -

- Découle du principe de maintenabilité : - le code doit minimiser la charge cognitive de sa lecture. - En particulier, il convient d’être régulier, d’éviter les formulations ambiguës ou techniquement ou conceptuellement complexes quand elles ne sont pas nécessaires. + Le beau code web est hébergé par + Github à partir du dépôt Git + github.com/YannisDelmas/beau-code-web. + Il s’agit d’une œuvre collective dont les contributeurs sont listés sur ce dépôt. + Le directeur de la publication est + Yannis Delmas. + Il peut être contacté via les coordonnées indiquées sur + son site personnel.

-
- -
-

- 7. Objectif de cohérence - -

- Découle du principe de Lisibilité : - la cohérence est le fait d’appliquer des choix de façon homogène au sein d’un projet ou d’un collectif de travail. - Elle permet ainsi d’alléger la charge cognitive pour lire, créer ou modifier un code. + Le thème utilisé emploie comme image de fond + « Rice Paper » + de Alte Mo [Subtle patterns]. + Certains exemples peuvent utiliser des images publiées par le site + LoremPixel.com.

-
- -
- -
-

- Glossaire - -

-
-

Typographie

-
-
alphanumérique
-
- Un caractère alphanumérique est un chiffre ou lettre latine, minuscule ou majuscule, sans accent ni diacritique. Certains langages ajoutent également le souligné (_). -
-
casse
-
La casse est la différence entre minuscules et majuscules.
-
- Du temps des presses mécaniques, la casse était le casier dans lequel on rangeait les caractères. Ainsi bas de casse, en anglais lower case, est synonyme de minuscule et haut de casse, en anglais upper case, de majuscule. - [Wikipedia] -
-
kebab-case
-
- Mots écrits en minuscules, joints par des tirets. -
-
- Le terme kebab désigne de la viande rôtie, en particulier à la broche. Dans le -kebab-case⊸, les mots sont comme embrochés. -
-
camelCase
-
- Mots collés entre eux, les initiales en majuscules sauf la première, les autres lettres en minuscules. -
-
- Le langage de programmation Camel a popularisé cette notation. - On dit parfois que les bosses sont au milieu comme pour un chameau. - En anglais, le mot camel désigne aussi bien un chameau 🐫 qu’un dromadaire 🐪. -
-
PascalCase
-
StudlyCase
-
- Mots collés entre eux, les initiales en majuscules, les autres lettres en minuscules. -
-
- Le langage de programmation Pascal a popularisé cette notation. - Le terme PascalCase est univoque. - Le terme StudlyCase, parfois employé, peut, lui, désigner d’autres écritures. -
-
-
-
-

Modalités aux termes de la [RFC2119]

-
-
doit
-
devra
-
obligatoire
-
Ce(s) terme(s) désigne(nt) une exigence absolue de ce guide [RFC2119, §1].
-
ne doit pas
-
ne devra pas
-
Ce(s) terme(s) désigne(nt) une interdiction absolue de ce guide [RFC2119, §2].
-
devrait
-
recommandé
-
Ce(s) terme(s) signifie(nt) qu’il peut exister des raisons valables dans des circonstances particulières pour ignorer un élément précis, mais toutes les implications doivent être comprises et soigneusement pesées avant de choisir une voie différente [RFC2119, §3].
-
ne devrait pas
-
non recommandé
-
Ce(s) terme(s) signifie(nt) qu’il peut exister des raisons valides dans des circonstances particulières quand le comportement spécifique est acceptable ou même utile, mais les répercussions complètent devraient être comprise et le cas soigneusement évalué avant d’implémenter [ceci] [RFC2119, §4].
-
peut
-
facultatif
-
Ce(s) terme(s) signifie(nt) que ce choix est vraiment facultatif [RFC2119, §5].
-
Un fabricant peut choisir d’inclure l’élément parce que un secteur particulier du marché le réclame ou parce que le fabricant pense que cela améliore le produit tandis qu’un autre fabricant peut omettre le même élément. Une mise en œuvre qui n’inclut pas une option particulière doit pouvoir interopérer avec une autre mise en œuvre qui n’inclut pas l’option, peut-être au prix de fonctionnalités réduites. Dans la même veine, une mise en œuvre qui n’inclut pas une option particulière doit être préparée à interopérer avec une autre mise en œuvre qui n’inclut pas l’option (excepté, bien sûr, pour la caractéristique fournie par l’option).
-
-
-
- -
-

- Références - -

-
    -
  • - [HTMLDP] - van Kesteren, Anne (éd.), - Stachowiak, Maciej (éd.). - (). - HTML Design Principles. - W3C. - W3C working draft. -
  • -
  • - [RFC2119] - Bradner, Scott. - (). - Key words for use in RFCs to Indicate Requirement Levels. - IETF. - RFC 2119 / BCP 14. -
  • -
  • - [TechSEO] - Martin, Alexandra, - Chartier, Mathieu. - (). - Techniques de référencement web, Audit et suivi SEO. - Eyrolles. - 4e édition. -
  • -
-
- -
-

- Mentions légales - -

-

- Le beau code web est distribué sous licence libre - GNU GPL, version 3. -

-

- Le beau code web ne conserve pas de données personnelles, - ne dépose pas de cookies - et ne comporte pas de publicité ni de contenu sponsorisé, - mais son hébergeur peut avoir recours à l’un de ces moyens. -

-

- Le beau code web est hébergé par - Github à partir du dépôt Git - github.com/YannisDelmas/beau-code-web. - Il s’agit d’une œuvre collective dont les contributeurs sont listés sur ce dépôt. - Le directeur de la publication est - Yannis Delmas. - Il peut être contacté via les coordonnées indiquées sur - son site personnel. -

-

- Le thème utilisé emploie comme image de fond - « Rice Paper » - de Alte Mo [Subtle patterns]. - Certains exemples peuvent utiliser des images publiées par le site - LoremPixel.com. -

-
+
diff --git a/package.json b/package.json index 920e445..0ab4d72 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "grunt": "^1.4.1", "grunt-contrib-copy": "^1.0.0", "grunt-twig-render": "^1.8.3", - "merge": "^2.1.1" + "merge": "^2.1.1", + "leader-line": "^1.0.7" } } From f3587a381c75e612ae965162d016f69863cdb65a Mon Sep 17 00:00:00 2001 From: Yannis Delmas Date: Tue, 1 Feb 2022 08:34:55 +0100 Subject: [PATCH 03/14] =?UTF-8?q?d=C3=A9finition=20de=20la=20t=C3=A2che=20?= =?UTF-8?q?de=20build=20par=20d=C3=A9faut=20pour=20VScode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/tasks.json | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .vscode/tasks.json diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..2f5976a --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,17 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "type": "shell", + "command": "grunt", + "problemMatcher": [], + "group": { + "kind": "build", + "isDefault": true + } + } + ] +} \ No newline at end of file From ec09c39f5aa0be732f63d507d6127da3b066a387 Mon Sep 17 00:00:00 2001 From: Yannis Delmas Date: Tue, 1 Feb 2022 11:36:04 +0100 Subject: [PATCH 04/14] scripts nom: build et watch --- .gitignore | 1 + README.md | 2 +- package.json | 14 ++++++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index beadb7f..f310876 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ vendor node_modules package-lock.json +.vscode diff --git a/README.md b/README.md index bef5341..35b2ed7 100644 --- a/README.md +++ b/README.md @@ -22,4 +22,4 @@ La commande `npm install` permet d’installer et mettre à jour les éléments - Plugin [grunt-contrib-copy](https://www.npmjs.com/package/grunt-contrib-copy) de Grunt pour la copie en l’état de fichiers. - Plugin [grunt-twig-render](https://www.npmjs.com/package/grunt-twig-render) de Grunt, utilisant la bibliothèque [Twig.js](https://github.com/twigjs/twig.js), pour le rendu des modèles TWIG ([Wiki](https://github.com/twigjs/twig.js/wiki)). -Pour fabriquer les fichiers publiables, entrer la commande `grunt`. +Pour fabriquer les fichiers publiables, entrer la commande `grunt` ou `npm run build`. Pour que les fichiers soient automatiquement fabriqués à chaque enregistrement de fichiers sources, utiliser la commande `npm run watch`. diff --git a/package.json b/package.json index 0ab4d72..66d27df 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,24 @@ { "name": "beau-code-web", "devDependencies": { + "npm-watch": "^0.11.0", "grunt": "^1.4.1", "grunt-contrib-copy": "^1.0.0", "grunt-twig-render": "^1.8.3", "merge": "^2.1.1", "leader-line": "^1.0.7" + }, + "watchGlobalConfig": { }, + "watch": { + "build": { + "patterns": ".", + "extensions": "twig,html,js,css", + "ignore": ["node_modules", "vendor", "docs"], + "delay": 1000 + } + }, + "scripts": { + "build": "grunt", + "watch": "npm-watch build" } } From 323e17535207512e49305ba5bd47bd58ab21dc19 Mon Sep 17 00:00:00 2001 From: Yannis Delmas Date: Tue, 1 Feb 2022 11:38:14 +0100 Subject: [PATCH 05/14] =?UTF-8?q?.vscode=20doit=20rester=20propre=20=C3=A0?= =?UTF-8?q?=20chaque=20contributeur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/tasks.json | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 .vscode/tasks.json diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100644 index 2f5976a..0000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=733558 - // for the documentation about the tasks.json format - "version": "2.0.0", - "tasks": [ - { - "label": "build", - "type": "shell", - "command": "grunt", - "problemMatcher": [], - "group": { - "kind": "build", - "isDefault": true - } - } - ] -} \ No newline at end of file From aedb33e11d26c2523f0d3662a9c2a0c68a390655 Mon Sep 17 00:00:00 2001 From: Yannis Delmas Date: Tue, 1 Feb 2022 16:15:54 +0100 Subject: [PATCH 06/14] =?UTF-8?q?d=C3=A9but=20de=20modularisation=20guides?= =?UTF-8?q?=20HTML=20et=20CSS=20#14=20#19?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- guide-html.html => guide-html-010-valide.twig | 0 ...e-style.html => guide-style-010-forme.twig | 0 guide-style.twig | 230 ++++++++++++++++++ 3 files changed, 230 insertions(+) rename guide-html.html => guide-html-010-valide.twig (100%) rename guide-style.html => guide-style-010-forme.twig (100%) create mode 100644 guide-style.twig diff --git a/guide-html.html b/guide-html-010-valide.twig similarity index 100% rename from guide-html.html rename to guide-html-010-valide.twig diff --git a/guide-style.html b/guide-style-010-forme.twig similarity index 100% rename from guide-style.html rename to guide-style-010-forme.twig diff --git a/guide-style.twig b/guide-style.twig new file mode 100644 index 0000000..37e435a --- /dev/null +++ b/guide-style.twig @@ -0,0 +1,230 @@ + + + + + + + BCW-3 Recommandations le codage CSS — Le beau code web + + + + + +
+

BCW-3 Recommandations le codage des feuilles de style

+
+
+
+

Introduction

+

+ Les feuilles de style CSS sont principalement constituées de règles de style. + Chaque règle comporte un sélecteur ou une liste de sélecteurs + 1, + suivi d’une liste de déclarations (p.ex. 2). + Chaque déclaration est constituée d’une propriété 3 + suivie d’une valeur 4, + laquelle peut avoir plusieurs composantes 5. + Certaines propriétés peuvent admettre des déclarations comportant une + liste de valeurs 6. +

+
h1,
+h2 {
+	margin: 0 auto;
+	color: green;
+	border: 1px solid black;
+	font-family: Arial, Helvetica, sans-serif;
+}
+ +
+
+

+ Mise en forme des règles + +

+
    +
  1. + Dans une liste de sélecteurs, il est recommandé + de ne mettre qu’un sélecteur par ligne. +
  2. +
  3. + De même, il est recommandé + de ne mettre qu’une déclaration par ligne. +
  4. +
  5. + Chaque déclaration doit se terminer par un point-virgule ;, même quand celui-ci est facultatif. +
  6. +
  7. + Les espacements doivent être utilisés de façon cohérente sur l’ensemble d’un site. +
  8. +
  9. + Il est recommandé de ne pas mettre d’espace + entre une propriété et le séparateur :, + mais d’en mettre un systématiquement après ce séparateur. + De même, il est recommandé + de mettre un espace après chaque virgule , + dans une liste de valeurs, mais pas devant. + Il est également recommandé de faire précéder + les accolades ouvrantes { d’un espace. +
  10. +
+ +
Justification +
    +
  1. + La même logique préside aux trois premiers points : + un changement doit pouvoir être localisé sur une ou plusieurs lignes, + mais pas au sein d’une ligne. + La principale raison est la maintenabilité. + Ceci permet aux systèmes de versionnement, Git ou autre, de suivre + individuellement chaque modification, limitant ainsi les risques + de conflits au moment des fusions merge. + Accessoirement, cela permet aussi de faire des tests en commentant plus + aisément tel ou telle déclaration. + En effet, à titre de contre-exemple, si l’on plaçait des déclarations de + position, + top, + left et + right + sur une même ligne, il ne serait pas facile d’agir sur la seule déclaration + de top. +
  2. +
  3. + La raison la plus souvent invoquée pour la règle précédente, + « un changement par ligne », est la + lisibilité, + mais il semble que celle-ci dépende surtout des habitudes de chaque codeur. + C’est donc la principale raison du point n°4. +
  4. +
  5. + Le point n°5 est également motivé par des raisons + de lisibilité. + Les espaces recommandés permettent une séparation visuelle suffisante. + L’absence d’espace devant les séparateurs permet de respecter la + typographie de l’anglais, langue de référence du CSS, et donc d’assurer + une meilleure + cohérence + à un niveau international. +
  6. + +
+
+ +
+ + + + + + + + + \ No newline at end of file From 057e724e9fb9aa9a9c04911e2ae205073ad8de72 Mon Sep 17 00:00:00 2001 From: Yannis Delmas Date: Tue, 1 Feb 2022 16:42:22 +0100 Subject: [PATCH 07/14] templating #19 HTML et CSS, modularisation #14 JS et PHP --- _page.twig | 1 + docs/guide-generalites.html | 1 + docs/guide-html.html | 64 ++--- docs/guide-style.html | 202 ++++++++-------- docs/principes.html | 3 +- guide-html-010-valide.twig | 59 +---- guide-html.twig | 4 + ...e-javascript.html => guide-javascript.twig | 0 guide-php.html => guide-php.twig | 0 guide-style-010-forme.twig | 228 ++++++------------ guide-style.twig | 202 +--------------- index.html => index.twig | 0 12 files changed, 246 insertions(+), 518 deletions(-) create mode 100644 guide-html.twig rename guide-javascript.html => guide-javascript.twig (100%) rename guide-php.html => guide-php.twig (100%) rename index.html => index.twig (100%) diff --git a/_page.twig b/_page.twig index 6d63d41..efd27ed 100644 --- a/_page.twig +++ b/_page.twig @@ -19,6 +19,7 @@

{% block docTitle %}Le beau code web{% endblock %}

+ {% block docIntroduction %}{% endblock %} {% block docContent %} {% for component in components %} {% include component %} diff --git a/docs/guide-generalites.html b/docs/guide-generalites.html index 666d93f..5ccb5f3 100644 --- a/docs/guide-generalites.html +++ b/docs/guide-generalites.html @@ -20,6 +20,7 @@

BCW-1 Recommandations générales pour le codage web

+

diff --git a/docs/guide-html.html b/docs/guide-html.html index e0fa8e7..64df309 100644 --- a/docs/guide-html.html +++ b/docs/guide-html.html @@ -1,24 +1,35 @@ - - - - BCW-2 Recommandations pour le codage en HTML — Le beau code web - - - + + + + + + + + BCW-2 Recommandations pour le codage en HTML — Le beau code web + + + +

BCW-2 Recommandations pour le codage en HTML

-
-

+ + + +
+

+ Validité du code - -

+ + +

+
  1. @@ -119,8 +130,10 @@

-
- Justification + +
+ Justification +
  1. @@ -204,15 +217,12 @@

-
-
- + + +

+ + +

@@ -226,9 +236,9 @@

Autres recommandations

- - - - + + + + - + \ No newline at end of file diff --git a/docs/guide-style.html b/docs/guide-style.html index 37e435a..7900017 100644 --- a/docs/guide-style.html +++ b/docs/guide-style.html @@ -1,19 +1,25 @@ - - - - BCW-3 Recommandations le codage CSS — Le beau code web - - - + + + + + + + + BCW-3 Recommandations le codage CSS — Le beau code web + + + + - +

BCW-3 Recommandations le codage des feuilles de style

+

Introduction

@@ -48,11 +54,17 @@

Introduction

-
-

+ + + +
+

+ Mise en forme des règles - -

+ + +

+
  1. Dans une liste de sélecteurs, il est recommandé @@ -95,7 +107,10 @@

    font-family: Arial, Helvetica, sans-serif; } -
    Justification + +
    + Justification +
    1. La même logique préside aux trois premiers points : @@ -133,14 +148,81 @@

      à un niveau international.

    2. -
    -

- + + + + + + + +
- - - - - - + + + + + \ No newline at end of file diff --git a/docs/principes.html b/docs/principes.html index e97a4f0..ba12bfe 100644 --- a/docs/principes.html +++ b/docs/principes.html @@ -2,7 +2,7 @@ - + @@ -20,6 +20,7 @@

BCW-0 Principes du « Beau code web »

+

À qui s’adresse ce guide diff --git a/guide-html-010-valide.twig b/guide-html-010-valide.twig index e0fa8e7..bf30a50 100644 --- a/guide-html-010-valide.twig +++ b/guide-html-010-valide.twig @@ -1,24 +1,9 @@ - - - - - - - BCW-2 Recommandations pour le codage en HTML — Le beau code web - - - - - -
-

BCW-2 Recommandations pour le codage en HTML

-
-
-
-

+{% embed '_recommandation.twig' %} + {% set recId = 'validite' %} + {% block recTitle %} Validité du code - -

+ {% endblock %} + {% block recContent %}
  1. @@ -119,8 +104,8 @@

-
- Justification + {% endblock recContent %} + {% block recRationale %}
  1. @@ -204,31 +189,5 @@

-
-
- -
- - - - - - - - + {% endblock recRationale %} +{% endembed %} \ No newline at end of file diff --git a/guide-html.twig b/guide-html.twig new file mode 100644 index 0000000..e0799d2 --- /dev/null +++ b/guide-html.twig @@ -0,0 +1,4 @@ +{% extends '_page.twig' %} +{% block pageTitle %}BCW-2 Recommandations pour le codage en HTML — Le beau code web{% endblock %} +{% block docTitle %}BCW-2 Recommandations pour le codage en HTML{% endblock %} +{% set components = 'guide-html-*.twig'|glob %} \ No newline at end of file diff --git a/guide-javascript.html b/guide-javascript.twig similarity index 100% rename from guide-javascript.html rename to guide-javascript.twig diff --git a/guide-php.html b/guide-php.twig similarity index 100% rename from guide-php.html rename to guide-php.twig diff --git a/guide-style-010-forme.twig b/guide-style-010-forme.twig index 37e435a..c23820e 100644 --- a/guide-style-010-forme.twig +++ b/guide-style-010-forme.twig @@ -1,58 +1,9 @@ - - - - - - - BCW-3 Recommandations le codage CSS — Le beau code web - - - - - -
-

BCW-3 Recommandations le codage des feuilles de style

-
-
-
-

Introduction

-

- Les feuilles de style CSS sont principalement constituées de règles de style. - Chaque règle comporte un sélecteur ou une liste de sélecteurs - 1, - suivi d’une liste de déclarations (p.ex. 2). - Chaque déclaration est constituée d’une propriété 3 - suivie d’une valeur 4, - laquelle peut avoir plusieurs composantes 5. - Certaines propriétés peuvent admettre des déclarations comportant une - liste de valeurs 6. -

-
h1,
-h2 {
-	margin: 0 auto;
-	color: green;
-	border: 1px solid black;
-	font-family: Arial, Helvetica, sans-serif;
-}
- -
-
-

+{% embed '_recommandation.twig' %} + {% set recId = 'forme' %} + {% block recTitle %} Mise en forme des règles - -

+ {% endblock %} + {% block recContent %}
  1. Dans une liste de sélecteurs, il est recommandé @@ -95,7 +46,8 @@ h2 { font-family: Arial, Helvetica, sans-serif; } -
    Justification + {% endblock recContent %} + {% block recRationale %}
    1. La même logique préside aux trois premiers points : @@ -133,98 +85,74 @@ h2 { à un niveau international.
    2. -
    -
- -
- - - - - - - - - \ No newline at end of file + + + {% endblock recRationale %} +{% endembed %} \ No newline at end of file diff --git a/guide-style.twig b/guide-style.twig index 37e435a..92fa116 100644 --- a/guide-style.twig +++ b/guide-style.twig @@ -1,19 +1,8 @@ - - - - - - - BCW-3 Recommandations le codage CSS — Le beau code web - - - - - -
-

BCW-3 Recommandations le codage des feuilles de style

-
-
+{% extends '_page.twig' %} +{% set components = 'guide-style-*.twig'|glob %} +{% block pageTitle %}BCW-3 Recommandations le codage CSS — Le beau code web{% endblock %} +{% block docTitle %}BCW-3 Recommandations le codage des feuilles de style{% endblock %} +{% block docIntroduction %}

Introduction

@@ -48,183 +37,4 @@ h2 {

-
-

- Mise en forme des règles - -

-
    -
  1. - Dans une liste de sélecteurs, il est recommandé - de ne mettre qu’un sélecteur par ligne. -
  2. -
  3. - De même, il est recommandé - de ne mettre qu’une déclaration par ligne. -
  4. -
  5. - Chaque déclaration doit se terminer par un point-virgule ;, même quand celui-ci est facultatif. -
  6. -
  7. - Les espacements doivent être utilisés de façon cohérente sur l’ensemble d’un site. -
  8. -
  9. - Il est recommandé de ne pas mettre d’espace - entre une propriété et le séparateur :, - mais d’en mettre un systématiquement après ce séparateur. - De même, il est recommandé - de mettre un espace après chaque virgule , - dans une liste de valeurs, mais pas devant. - Il est également recommandé de faire précéder - les accolades ouvrantes { d’un espace. -
  10. -
- -
Justification -
    -
  1. - La même logique préside aux trois premiers points : - un changement doit pouvoir être localisé sur une ou plusieurs lignes, - mais pas au sein d’une ligne. - La principale raison est la maintenabilité. - Ceci permet aux systèmes de versionnement, Git ou autre, de suivre - individuellement chaque modification, limitant ainsi les risques - de conflits au moment des fusions merge. - Accessoirement, cela permet aussi de faire des tests en commentant plus - aisément tel ou telle déclaration. - En effet, à titre de contre-exemple, si l’on plaçait des déclarations de - position, - top, - left et - right - sur une même ligne, il ne serait pas facile d’agir sur la seule déclaration - de top. -
  2. -
  3. - La raison la plus souvent invoquée pour la règle précédente, - « un changement par ligne », est la - lisibilité, - mais il semble que celle-ci dépende surtout des habitudes de chaque codeur. - C’est donc la principale raison du point n°4. -
  4. -
  5. - Le point n°5 est également motivé par des raisons - de lisibilité. - Les espaces recommandés permettent une séparation visuelle suffisante. - L’absence d’espace devant les séparateurs permet de respecter la - typographie de l’anglais, langue de référence du CSS, et donc d’assurer - une meilleure - cohérence - à un niveau international. -
  6. - -
-
- -
- - - - - - - - - \ No newline at end of file +{% endblock %} diff --git a/index.html b/index.twig similarity index 100% rename from index.html rename to index.twig From 3ee7e562409c0f1037dabd4d8a8130299504decc Mon Sep 17 00:00:00 2001 From: Yannis Delmas Date: Tue, 1 Feb 2022 16:57:36 +0100 Subject: [PATCH 08/14] templating des pages restantes #19 --- Gruntfile.js | 1 - _page.twig | 2 +- _toc.twig | 17 ++++++++++ docs/guide-generalites.html | 2 +- docs/guide-html.html | 2 +- docs/guide-javascript.html | 46 ++++++++++++++++---------- docs/guide-php.html | 44 ++++++++++++++++--------- docs/guide-style.html | 2 +- docs/index.html | 66 +++++++++++++++++++++++-------------- docs/principes.html | 2 +- guide-html.twig | 2 +- guide-javascript.twig | 42 +++-------------------- guide-php.twig | 42 +++-------------------- index.twig | 54 +++++------------------------- 14 files changed, 138 insertions(+), 186 deletions(-) create mode 100644 _toc.twig diff --git a/Gruntfile.js b/Gruntfile.js index 1ca1b6e..12d5a87 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -35,7 +35,6 @@ module.exports = function(grunt) { asset: function(arg) { return grunt.file.expand({cwd: 'docs'}, 'assets/**/'+ arg)[0]; }, - templateName: function() { return grunt.task.current.files[0].template; }, }, filters: { glob: function(arg) { return grunt.file.expand(arg); }, diff --git a/_page.twig b/_page.twig index efd27ed..fd4629b 100644 --- a/_page.twig +++ b/_page.twig @@ -2,7 +2,7 @@ {# Ne pas retirer la ligne suivante, qui ne s'applique pas à ce document. #} - + {% set prismjs = 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.25.0' %} {% block head %} diff --git a/_toc.twig b/_toc.twig new file mode 100644 index 0000000..2fa424c --- /dev/null +++ b/_toc.twig @@ -0,0 +1,17 @@ +{# Table des matières #} + diff --git a/docs/guide-generalites.html b/docs/guide-generalites.html index 5ccb5f3..367d81d 100644 --- a/docs/guide-generalites.html +++ b/docs/guide-generalites.html @@ -2,7 +2,7 @@ - + diff --git a/docs/guide-html.html b/docs/guide-html.html index 64df309..2313709 100644 --- a/docs/guide-html.html +++ b/docs/guide-html.html @@ -2,7 +2,7 @@ - + diff --git a/docs/guide-javascript.html b/docs/guide-javascript.html index 99aae47..6ef1230 100644 --- a/docs/guide-javascript.html +++ b/docs/guide-javascript.html @@ -1,23 +1,34 @@ - - - - BCW-3 Recommandations pour le codage en JavaScript — Le beau code web - - - + + + + + + + + BCW-4 Recommandations pour le codage en JavaScript — Le beau code web + + + + - +
-

BCW-3 Recommandations pour le codage en JavaScript

+

BCW-4 Recommandations pour le codage en JavaScript

-

- Il n’y a pas de recommandation pour l’instant. - N’hésitez pas à consulter notre dépôt Github pour faire des propositions. -

+ + + + + +

+ Il n’y a pas de recommandation validée pour l’instant. + N’hésitez pas à consulter notre dépôt Github pour faire des propositions. +

+
- - - - + + + + + \ No newline at end of file diff --git a/docs/guide-php.html b/docs/guide-php.html index eeff571..bdd9801 100644 --- a/docs/guide-php.html +++ b/docs/guide-php.html @@ -1,23 +1,34 @@ - - - - BCW-5 Recommandations pour le codage en PHP — Le beau code web - - - + + + + + + + + BCW-5 Recommandations pour le codage en PHP — Le beau code web + + + + - +

BCW-5 Recommandations pour le codage en PHP

-

- Il n’y a pas de recommandation pour l’instant. - N’hésitez pas à consulter notre dépôt Github pour faire des propositions. -

+ + + + + +

+ Il n’y a pas de recommandation validée pour l’instant. + N’hésitez pas à consulter notre dépôt Github pour faire des propositions. +

+
- - - - + + + + + \ No newline at end of file diff --git a/docs/guide-style.html b/docs/guide-style.html index 7900017..b097b34 100644 --- a/docs/guide-style.html +++ b/docs/guide-style.html @@ -2,7 +2,7 @@ - + diff --git a/docs/index.html b/docs/index.html index 5cf0b8e..3dd7413 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,35 +1,48 @@ - - - - Le beau code web - + + + + + + + + Le beau code web + + + + - +

Le beau code web

- + + + + +
+ + + + + \ No newline at end of file diff --git a/docs/principes.html b/docs/principes.html index ba12bfe..6c2896c 100644 --- a/docs/principes.html +++ b/docs/principes.html @@ -2,7 +2,7 @@ - + diff --git a/guide-html.twig b/guide-html.twig index e0799d2..de77944 100644 --- a/guide-html.twig +++ b/guide-html.twig @@ -1,4 +1,4 @@ {% extends '_page.twig' %} +{% set components = 'guide-html-*.twig'|glob %} {% block pageTitle %}BCW-2 Recommandations pour le codage en HTML — Le beau code web{% endblock %} {% block docTitle %}BCW-2 Recommandations pour le codage en HTML{% endblock %} -{% set components = 'guide-html-*.twig'|glob %} \ No newline at end of file diff --git a/guide-javascript.twig b/guide-javascript.twig index 99aae47..e9e394a 100644 --- a/guide-javascript.twig +++ b/guide-javascript.twig @@ -1,38 +1,4 @@ - - - - - - - BCW-3 Recommandations pour le codage en JavaScript — Le beau code web - - - - - -
-

BCW-3 Recommandations pour le codage en JavaScript

-
-
-

- Il n’y a pas de recommandation pour l’instant. - N’hésitez pas à consulter notre dépôt Github pour faire des propositions. -

-
- - - - - - - \ No newline at end of file +{% extends '_page.twig' %} +{% set components = 'guide-javascript-*.twig'|glob %} +{% block pageTitle %}BCW-4 Recommandations pour le codage en JavaScript — Le beau code web{% endblock %} +{% block docTitle %}BCW-4 Recommandations pour le codage en JavaScript{% endblock %} diff --git a/guide-php.twig b/guide-php.twig index eeff571..284d090 100644 --- a/guide-php.twig +++ b/guide-php.twig @@ -1,38 +1,4 @@ - - - - - - - BCW-5 Recommandations pour le codage en PHP — Le beau code web - - - - - -
-

BCW-5 Recommandations pour le codage en PHP

-
-
-

- Il n’y a pas de recommandation pour l’instant. - N’hésitez pas à consulter notre dépôt Github pour faire des propositions. -

-
- - - - - - - \ No newline at end of file +{% extends '_page.twig' %} +{% set components = 'guide-php-*.twig'|glob %} +{% block pageTitle %}BCW-5 Recommandations pour le codage en PHP — Le beau code web{% endblock %} +{% block docTitle %}BCW-5 Recommandations pour le codage en PHP{% endblock %} diff --git a/index.twig b/index.twig index 5cf0b8e..a5566dd 100644 --- a/index.twig +++ b/index.twig @@ -1,46 +1,8 @@ - - - - - - - Le beau code web - - - -
-

Le beau code web

-
-
- -
- - - \ No newline at end of file +{% extends '_page.twig' %} +{% block pageTitle %}Le beau code web{% endblock %} +{% block docTitle %}Le beau code web{% endblock %} +{% block docContent %} + +{% endblock %} \ No newline at end of file From 320d42816bc9baea26e69c459889f6c6564c6800 Mon Sep 17 00:00:00 2001 From: Enguerran Weiss Date: Mon, 28 Mar 2022 09:59:54 +0200 Subject: [PATCH 09/14] test structure --- public/LICENSE.txt | 674 ++++++++++++++++++ public/assets/css/default.css | 147 ++++ public/assets/css/mint-and-grapes.css | 350 +++++++++ public/assets/images/ecailles.png | Bin 0 -> 206 bytes public/assets/images/github-mark-32px.png | Bin 0 -> 1714 bytes public/assets/images/ricepaper.png | Bin 0 -> 133494 bytes public/assets/js/glossary.js | 57 ++ public/assets/js/leader-line.min.js | 2 + views/layout/_page.twig | 52 ++ .../pages/guide-generalites-010-fichiers.twig | 110 +++ views/pages/guide-generalites.twig | 4 + views/pages/guide-html-010-valide.twig | 193 +++++ views/pages/guide-html.twig | 4 + views/pages/guide-javascript.twig | 4 + views/pages/guide-php.twig | 4 + views/pages/guide-style-010-forme.twig | 158 ++++ views/pages/guide-style.twig | 40 ++ views/pages/index.twig | 8 + views/pages/principes.twig | 275 +++++++ views/partials/_recommandation.twig | 11 + views/partials/_toc.twig | 17 + 21 files changed, 2110 insertions(+) create mode 100644 public/LICENSE.txt create mode 100644 public/assets/css/default.css create mode 100644 public/assets/css/mint-and-grapes.css create mode 100644 public/assets/images/ecailles.png create mode 100644 public/assets/images/github-mark-32px.png create mode 100644 public/assets/images/ricepaper.png create mode 100644 public/assets/js/glossary.js create mode 100644 public/assets/js/leader-line.min.js create mode 100644 views/layout/_page.twig create mode 100644 views/pages/guide-generalites-010-fichiers.twig create mode 100644 views/pages/guide-generalites.twig create mode 100644 views/pages/guide-html-010-valide.twig create mode 100644 views/pages/guide-html.twig create mode 100644 views/pages/guide-javascript.twig create mode 100644 views/pages/guide-php.twig create mode 100644 views/pages/guide-style-010-forme.twig create mode 100644 views/pages/guide-style.twig create mode 100644 views/pages/index.twig create mode 100644 views/pages/principes.twig create mode 100644 views/partials/_recommandation.twig create mode 100644 views/partials/_toc.twig diff --git a/public/LICENSE.txt b/public/LICENSE.txt new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/public/LICENSE.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/public/assets/css/default.css b/public/assets/css/default.css new file mode 100644 index 0000000..e30e77d --- /dev/null +++ b/public/assets/css/default.css @@ -0,0 +1,147 @@ +@charset "utf-8"; + +@import url(https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,700;1,400;1,700&display=swap); +@import url(https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap); +@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta2/css/all.min.css); + + +/* Paramètres généraux */ + +:root { + --famille-titre: 'EB Garamond', 'Times New Roman', Times, serif; + --famille-texte: 'Open Sans', 'Lucida Sans', 'Lucida Sans Unicode', Arial, Helvetica, sans-serif; + --rapport-titre-texte: 1.2; /* rapport de hauteur d'x entre les deux familles précédentes */ + --famille-tags: var(--famille-texte); + --teinte-tags: 90, 50%; + --teinte-complements: 0, 0%; + --teinte-justifications: 200, 50%; + --line-height: 1.45; + --inc-typo: 1.189207115; /* = √√2 : incrément typographique standard simple */ + --inc-typo-x2: 1.414213562; /* = √2 : incrément typographique double */ + --inc-typo-x3: 1.681792831; /* = √2√√2 : incrément typographique triple */ + --inc-typo-x4: 2; /* incrément typographique quadruple */ + --inc-typo-x6: 2.828427124; /* = 2√2 : incrément typographique sextuple */ +} + + +/* Typographie générale */ + +body { + font-family: var(--famille-texte); + line-height: var(--line-height); +} + +h1, h2, h3, h4, h5, h6, .bcw { + font-family: var(--famille-titre); + font-style: italic; + font-feature-settings: "liga", "hlig", "clig"; /* TODO ne fonctionne pas avec Google fonts */ + text-shadow: 1px 1px 2px #999999; + text-rendering: optimizeLegibility; +} + +h1, h2, h3, h4, h5, h6 { + text-align: left; page-break-after: avoid; +} + +h1 { font-size: calc(var(--inc-typo-x4) * var(--rapport-titre-texte) * 1rem); } +h2 { font-size: calc(var(--inc-typo-x3) * var(--rapport-titre-texte) * 1rem); } +h3 { font-size: calc(var(--inc-typo-x2) * var(--rapport-titre-texte) * 1rem); } +h4 { font-size: calc(var(--inc-typo) * var(--rapport-titre-texte) * 1rem); } +.bcw { font-size: calc(var(--rapport-titre-texte) * 100%); } + + +/* Typographie linguistique */ + +:lang(fr) > * { quotes: "«\202F" "\202F»" "‹\202F" "\202F›"; } +:lang(en) > * { quotes: "“" "”" "‘" "’"; } +/* cf. https://drafts.csswg.org/css-content/#quotes */ +/* Unicode : U+202F Narrow No-Break Space (NNBSP) */ + +:lang(fr) > :lang(en) { font-style: italic; } +:lang(fr) > q:lang(en)::before, :lang(fr) > q:lang(en)::after { font-style: normal; } + + +/* Mise en page */ + +body { + max-width: 960px; margin: 0 auto; padding: 0 2.5rem; + background-image: url(../images/ricepaper.png); +} + +h1 { margin: 4rem 0 1rem; } +h2 { margin: 3rem 0 1rem; } +h3 { margin: 2rem 0 1rem; } +p { margin: 0.5rem 0; } +ul, ol, dd { margin: 0; padding: 0 0 0 4rem; } + +footer { margin: 2rem 0 0; } + + +/* Auto-liens dans des titres */ + +h2, h3, h4, h5, h6 { position: relative; } +a.self-link { + position: absolute; left: -1.5em; width: 1em; height: calc(var(--line-height) * 1em); + text-align: center; + color: inherit; + transition: opacity 0.25s; opacity: 0.25; text-decoration: none; +} +a.self-link:hover { opacity: 1; text-decoration: none; } +h2 > a.self-link::before, h3 > a.self-link::before, h4 > a.self-link::before, +h5 > a.self-link::before, h6 > a.self-link::before { + content: "⚓"; /* TODO ⚓ ou § ? */ + font-size: calc(100% / var(--inc-typo)); +} + + +/* Principes de référence et modalités RFC-2119 */ + +.principle { + font-family: var(--famille-tags); + background-color: hsl(var(--teinte-tags), 75%); + color: hsl(var(--teinte-tags), 25%); + border: 1px solid hsl(var(--teinte-tags), 50%); + padding: 0 0.25rem; border-radius: 0.25rem; + text-decoration: none; font-weight: normal; +} +h2 .principle, h3 .principle, h4 .principle { + font-size: calc(100% / var(--rapport-titre-texte)); +} + +.rfc2119 { font-variant: small-caps; } + + +/* Compléments */ + +aside, details.rationale { + margin: 1rem 4rem; padding: 0 1rem; border-radius: 1rem; + font-size: calc(100% / var(--inc-typo)); +} + +aside { + border: 1px solid hsl(var(--teinte-complements), 40%); + background-color: hsla(var(--teinte-complements), 75%, 0.2); +} + +aside.bonus::before { + content: "+"; + display: block; + font-size: calc(var(--inc-typo-x2) * 100%); font-weight: bold; + width: 1rem; height: 1rem; line-height: 1rem; margin: -0.5rem 0; border-radius: 0.5rem; + text-align: center; + background-color: hsl(var(--teinte-complements), 40%); +} + +details.rationale { + border: 1px solid hsl(var(--teinte-justifications), 40%); + background-color: hsla(var(--teinte-justifications), 75%, 0.2); +} +details.rationale > summary { + color: hsl(var(--teinte-justifications), 20%); + font-weight: bold; +} + + +/* Affichage des codes */ + +.no-wrap, :not(pre) > code.no-wrap { white-space: nowrap; } diff --git a/public/assets/css/mint-and-grapes.css b/public/assets/css/mint-and-grapes.css new file mode 100644 index 0000000..d2b49d9 --- /dev/null +++ b/public/assets/css/mint-and-grapes.css @@ -0,0 +1,350 @@ +@charset "utf-8"; + +@import url(https://fonts.googleapis.com/css2?family=Merriweather:ital,wght@0,400;0,700;1,400;1,700&display=swap); +@import url(https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap); +@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css); + + +/* Paramètres généraux */ + +:root { + --famille-titre: 'Merriweather', 'Times', serif; + --famille-texte: 'Open Sans', 'Lucida Sans', 'Lucida Sans Unicode', Arial, Helvetica, sans-serif; + --rapport-titre-texte: 1; /* rapport de hauteur d'x entre les deux familles précédentes */ + --famille-tags: var(--famille-texte); + --teinte-primaire: 165, 88%; + --teinte-secondaire: 288, 30%; + --teinte-complements: 0, 0%; + --teinte-justifications: 200, 50%; + --couleur-corps-texte: #555; + --couleur-titre: #333; + --couleur-mark-text: var(--couleur-titre); + --couleur-mark1: hsl(50, 60%, 80%); + --couleur-mark2: hsl(110, 60%, 80%); + --couleur-mark3: hsl(170, 60%, 80%); + --couleur-mark4: hsl(230, 60%, 80%); + --couleur-mark5: hsl(290, 60%, 80%); + --couleur-mark6: hsl(350, 60%, 80%); + --line-height: 1.55; + --inc-typo: 1.189207115; /* = √√2 : incrément typographique standard simple */ + --inc-typo-x2: 1.414213562; /* = √2 : incrément typographique double */ + --inc-typo-x3: 1.681792831; /* = √2√√2 : incrément typographique triple */ + --inc-typo-x4: 2; /* incrément typographique quadruple */ + --inc-typo-x6: 2.828427124; /* = 2√2 : incrément typographique sextuple */ +} + + +/* Typographie générale */ + +::selection { + color: #fff; + background-color: hsl(var(--teinte-secondaire), 60%); +} + +body { + font-family: var(--famille-texte); + line-height: var(--line-height); + color: var(--couleur-corps-texte); + background-image: url(../images/ecailles.png); +} +body:before { + content: ''; + position: fixed; + top: 0; + left: 0; + right: 0; + height: 8px; + background-color: hsl(var(--teinte-secondaire), 41%); + z-index: 1; +} + +h1, +h2, +h3, +h4, +h5, +h6, +.bcw { + font-family: var(--famille-titre); + color: var(--couleur-titre); + font-feature-settings: "liga", "hlig", "clig"; /* TODO ne fonctionne pas avec Google fonts */ + text-rendering: optimizeLegibility; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + text-align: left; + page-break-after: avoid; +} + +h1 { + font-size: calc(var(--inc-typo-x4) * var(--rapport-titre-texte) * 1rem); + color: hsl(var(--teinte-secondaire), 41%); +} + +h2 { + font-size: calc(var(--inc-typo-x3) * var(--rapport-titre-texte) * 1rem); +} + +h3 { + font-size: calc(var(--inc-typo-x2) * var(--rapport-titre-texte) * 1rem); +} + +h4 { + font-size: calc(var(--inc-typo) * var(--rapport-titre-texte) * 1rem); +} + +.bcw { + font-size: calc(var(--rapport-titre-texte) * 100%); +} + + +/* Typographie linguistique */ + +:lang(fr)>* { + quotes: "«\202F""\202F»""‹\202F""\202F›"; +} + +:lang(en)>* { + quotes: "“""”""‘""’"; +} + +/* cf. https://drafts.csswg.org/css-content/#quotes */ +/* Unicode : U+202F Narrow No-Break Space (NNBSP) */ + +:lang(fr)> :lang(en) { + font-style: italic; +} + +:lang(fr)>q:lang(en)::before, +:lang(fr)>q:lang(en)::after { + font-style: normal; +} + + +/* Mise en page */ + +body { + max-width: 960px; + margin: 0 auto; + padding: 0 2.5rem; +} + +h1 { + margin: 4rem 0 1rem; +} + +h2 { + margin: 3rem 0 1rem; +} + +h3 { + margin: 2rem 0 1rem; +} + +p { + margin: 0.5rem 0; +} + +ul, +ol, +dd { + margin: 0; + padding: 0 0 0 4rem; +} + +footer { + margin: 2rem 0 0; +} + + +/* Auto-liens dans des titres */ + +h2, +h3, +h4, +h5, +h6 { + position: relative; +} + +a.self-link { + position: absolute; + left: -1.5em; + width: 1em; + height: calc(var(--line-height) * 1em); + text-align: center; + color: inherit; + transition: opacity 0.25s; + opacity: 0.3; + text-decoration: none; +} + +a.self-link:hover { + opacity: 1; + text-decoration: none; +} + +h2>a.self-link::before, +h3>a.self-link::before, +h4>a.self-link::before, +h5>a.self-link::before, +h6>a.self-link::before { + content: "💬"; + font-size: calc(100% / var(--inc-typo)); +} + + +/* Autres règles de mise en forme */ + +a { + color: hsl(var(--teinte-primaire), 41%); +} +a:visited { + color: hsl(var(--teinte-secondaire), 60%); +} +a:hover { + opacity: .7; +} + +.sr-only { /* only for screen readers */ + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + + +/* Principes de référence et modalités RFC-2119 */ + +.principle { + font-family: var(--famille-tags); + background-color: hsl(var(--teinte-primaire), 85%); + color: hsl(var(--teinte-primaire), 35%); + border: 1px solid hsl(var(--teinte-primaire), 60%); + padding: 0 0.25rem; + border-radius: 0.25rem; + text-decoration: none; + font-weight: normal; +} +.principle:visited { + background-color: hsl(var(--teinte-primaire), 85%); + color: hsl(var(--teinte-primaire), 35%); + border: 1px solid hsl(var(--teinte-primaire), 60%); +} + +h2 .principle, +h3 .principle, +h4 .principle { + font-size: calc(100% / var(--rapport-titre-texte)); +} + +.rfc2119 { + font-variant: small-caps; +} + + +/* Compléments */ + +aside, +details.rationale { + margin: 1rem 4rem; + padding: 0 1rem; + border-radius: 1rem; + font-size: calc(100% / var(--inc-typo)); +} + +aside { + border: 1px solid hsl(var(--teinte-complements), 40%); + background-color: hsla(var(--teinte-complements), 75%, 0.2); +} + +aside.bonus::before { + content: "+"; + display: block; + font-size: calc(var(--inc-typo-x2) * 100%); + font-weight: bold; + width: 1rem; + height: 1rem; + line-height: 1rem; + margin: -0.5rem 0; + border-radius: 0.5rem; + text-align: center; + background-color: hsl(var(--teinte-complements), 40%); + color: hsl(var(--teinte-complements), 75%); +} + +details.rationale { + border: 1px solid hsl(var(--teinte-justifications), 40%); + background-color: hsla(var(--teinte-justifications), 75%, 0.2); +} + +details.rationale>summary { + color: hsl(var(--teinte-justifications), 20%); + font-weight: bold; +} + + +/* Affichage des codes */ + +.no-wrap, +:not(pre)>code.no-wrap { + white-space: nowrap; +} + +mark[title="1"].label, +code mark[title="1"] { + background-color: var(--couleur-mark1); +} +mark[title="2"].label, +code mark[title="2"] { + background-color: var(--couleur-mark2); +} +mark[title="3"].label, +code mark[title="3"] { + background-color: var(--couleur-mark3); +} +mark[title="4"].label, +code mark[title="4"] { + background-color: var(--couleur-mark4); +} +mark[title="5"].label, +code mark[title="5"] { + background-color: var(--couleur-mark5); +} +mark[title="6"].label, +code mark[title="6"] { + background-color: var(--couleur-mark6); +} +code mark[title] { + position: relative; +} +code mark[title]::before { + content: attr(title); + font-size: calc(100% / var(--inc-typo-x2)); + position: absolute; + top: -0.5em; + left: -0.75em; + background-color: inherit; +} +mark.label, +code mark[title]::before { + display: inline-block; + height: 1em; + width: 1em; + line-height: 1em; + border-radius: 0.5em; + text-align: center; + color: var(--couleur-mark-text); + font-family: var(--famille-texte); + font-style: normal; +} diff --git a/public/assets/images/ecailles.png b/public/assets/images/ecailles.png new file mode 100644 index 0000000000000000000000000000000000000000..a1177a9562460691b2c784f1163153ca56a9fe22 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^20$#r!3HEx+wWTrq^5ehIEHu}e>>HXi&c@w<+s?&I@6nyIlL zpHD4)*01@x$$r_I{6CUFfvhCcjk6+r*QkXFukN&e^8eY9edjjvCWHVT$l&Sf=d#Wz Gp$P!U@K!GX literal 0 HcmV?d00001 diff --git a/public/assets/images/github-mark-32px.png b/public/assets/images/github-mark-32px.png new file mode 100644 index 0000000000000000000000000000000000000000..8b25551a97921681334176ee143b41510a117d86 GIT binary patch literal 1714 zcmaJ?X;2eq7*4oFu!ne{XxAht2qc?8LXr|_LPCfTpaBK7K$c{I0Ld=NLIOeuC;@2) zZ$K%a)k+m-s0>xHmKxL%0V&0TRzzznhgyqrIC$F)0{WwLXLrBvd*^wc_uSc%h%m9E z{W5z3f#4_!7RvAyFh6!S_*<8qJ%KOIm?#E|L=rJQq=gB5C6WLG5;c?r%V0>EmEH#X z5eSwPRa6WXBMs#$5H%GtW2go-in9p>zW@UYDNNWc^XOXZQ? z1QjEV00I#$3^1wQUJ8&-2UsjB-G|9y(LDhMNN3PM{APL4eYi{(m*ERcUnJa{R+-3^ z34^A6;U^v`8N*O6ji%S@sd{fJqD`XFIUJ5zgTe5^5nj414F(y!G&=H(f)Lgzv?>%+ zAsWD}2qhpH7>|TU`X&W6IxDNuO_vET7|j5oG&&VDr!)hUO8+0KR?nh!m<)a!?|%yG zqOwq!CWCcIhE{<$E|F|@g>nP6FoYr6C<8>D?ID9%&5J(4oSbR1I^byW*g@__U z4QsF&uJSEcFeleM3~ChjEQGbHOjsGDMbyAl(p=Ttv9RaVo8~I#js@@Y9C^_2U})yn zzSHU%6FxuY?d;&65MyR({^lU*3$z$ZllDb(o&<7d;A_`h2U+3~BJ2Hv`{W}KEU801#cv_B|9Cm!ynR{S`AMsSn z;7E=B;mb!wx$L;S>yGXG^6=&WlQn9$s?&L%Y1D8TI^MlKB1DqsEng$>f4=xYWBoPI z_S1p!sJ#d2?YI4kPA{k}Eby?F=f-J9zIc`YDl^pzjVm~9ebE?Hn?t0Nx+la|D0MB; z9)2xv1G>a1|A9kQ>~DV<=X3-4yC&n!m8-3K#P z{X@0zRuQsy$+N ziSCoLJU{Z$nQy4A4Y5UJ07$5FA~qL2%Q+cLaqDU?Lz3?=BC5;Nk6BbTmmceEaM>-Z zi>O&-dSE=%ex;vcvCOk{*JQ5^_4M z4lW7%l9IqY(z7pV(?I@@8=KPFO82)O{VDI18-*d-k$YmI^XiuPs_LuFw<^ZcD}yP5 c*NrbeloN*74g`U%%F6r~k%+>C^#XapzmV0H-2eap literal 0 HcmV?d00001 diff --git a/public/assets/images/ricepaper.png b/public/assets/images/ricepaper.png new file mode 100644 index 0000000000000000000000000000000000000000..acaf07ebe49891586f5a37cb951462d7ec9bcbf2 GIT binary patch literal 133494 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%0DZo+z=uAL`8sSf^@{WYf~dmiWyhFs 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 qsD4!x(xwa25cCD?WRK(i{_}q`L1yE=cO',X={disc:{elmId:"leader-line-disc",noRotate:!0,bBox:{left:-5,top:-5,width:10,height:10,right:5,bottom:5},widthR:2.5,heightR:2.5,bCircle:5,sideLen:5,backLen:5,overhead:0,outlineBase:1,outlineMax:4},square:{elmId:"leader-line-square",noRotate:!0,bBox:{left:-5,top:-5,width:10,height:10,right:5,bottom:5},widthR:2.5,heightR:2.5,bCircle:5,sideLen:5,backLen:5,overhead:0,outlineBase:1,outlineMax:4},arrow1:{elmId:"leader-line-arrow1",bBox:{left:-8,top:-8,width:16,height:16,right:8,bottom:8},widthR:4,heightR:4,bCircle:8,sideLen:8,backLen:8,overhead:8,outlineBase:2,outlineMax:1.5},arrow2:{elmId:"leader-line-arrow2",bBox:{left:-7,top:-8,width:11,height:16,right:4,bottom:8},widthR:2.75,heightR:4,bCircle:8,sideLen:8,backLen:7,overhead:4,outlineBase:1,outlineMax:1.75},arrow3:{elmId:"leader-line-arrow3",bBox:{left:-4,top:-5,width:12,height:10,right:8,bottom:5},widthR:3,heightR:2.5,bCircle:8,sideLen:5,backLen:4,overhead:8,outlineBase:1,outlineMax:2.5},hand:{elmId:"leader-line-hand",bBox:{left:-3,top:-12,width:40,height:24,right:37,bottom:12},widthR:10,heightR:6,bCircle:37,sideLen:12,backLen:3,overhead:37},crosshair:{elmId:"leader-line-crosshair",noRotate:!0,bBox:{left:-96,top:-96,width:192,height:192,right:96,bottom:96},widthR:48,heightR:48,bCircle:96,sideLen:96,backLen:96,overhead:0}},F={behind:Y,disc:"disc",square:"square",arrow1:"arrow1",arrow2:"arrow2",arrow3:"arrow3",hand:"hand",crosshair:"crosshair"},q={disc:"disc",square:"square",arrow1:"arrow1",arrow2:"arrow2",arrow3:"arrow3",hand:"hand",crosshair:"crosshair"},G=[b,k,L,A],D="auto",Q={x:"left",y:"top",width:"width",height:"height"},z=80,j=4,H=5,U=120,K=8,J=3.75,$=10,ee=30,te=.5522847,ne=.25*Math.PI,m=/^\s*(\-?[\d\.]+)\s*(\%)?\s*$/,ae="http://www.w3.org/2000/svg",S="-ms-scroll-limit"in document.documentElement.style&&"-ms-ime-align"in document.documentElement.style&&!window.navigator.msPointerEnabled,ie=!S&&!!document.uniqueID,oe="MozAppearance"in document.documentElement.style,le=!(S||oe||!window.chrome||!window.CSS),re=!S&&!ie&&!oe&&!le&&!window.chrome&&"WebkitAppearance"in document.documentElement.style,se=ie||S?.2:.1,ue={path:T,lineColor:"coral",lineSize:4,plugSE:[Y,"arrow1"],plugSizeSE:[1,1],lineOutlineEnabled:!1,lineOutlineColor:"indianred",lineOutlineSize:.25,plugOutlineEnabledSE:[!1,!1],plugOutlineSizeSE:[1,1]},he=(p={}.toString,c={}.hasOwnProperty.toString,d=c.call(Object),function(e){return e&&"[object Object]"===p.call(e)&&(!(e=Object.getPrototypeOf(e))||(e=e.hasOwnProperty("constructor")&&e.constructor)&&"function"==typeof e&&c.call(e)===d)}),pe=Number.isFinite||function(e){return"number"==typeof e&&window.isFinite(e)},g=(_={ease:[.25,.1,.25,1],linear:[0,0,1,1],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1]},v=1e3/60/2,l=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||function(e){setTimeout(e,v)},r=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame||function(e){clearTimeout(e)},i=Number.isFinite||function(e){return"number"==typeof e&&window.isFinite(e)},E=[],x=0,{add:function(n,e,t,a,i,o,l){var r,s,u,h,p,c,d,f,y,m,S=++x;function g(e,t){return{value:n(t),timeRatio:e,outputRatio:t}}if("string"==typeof i&&(i=_[i]),n=n||function(){},t=this._endIndex||this._string[this._currentIndex]<"0"||"9"=this._endIndex||this._string[this._currentIndex]<"0"||"9"=this._endIndex)return null;var e=null,t=this._string[this._currentIndex];if(this._currentIndex+=1,"0"===t)e=0;else{if("1"!==t)return null;e=1}return this._skipOptionalSpacesOrDelimiter(),e}};function n(e){if(!e||0===e.length)return[];var t=new i(e),n=[];if(t.initialCommandIsMoveTo())for(;t.hasMoreData();){var a=t.parseSegment();if(null===a)break;n.push(a)}return n}function l(e){return e.map(function(e){return{type:e.type,values:Array.prototype.slice.call(e.values)}})}function r(e){var u=[],h=null,p=null,c=null,d=null,f=null,y=null,m=null;return e.forEach(function(e){var t,n,a,i,o,l,r,s;"M"===e.type?(r=e.values[0],s=e.values[1],u.push({type:"M",values:[r,s]}),d=y=r,f=m=s):"C"===e.type?(o=e.values[0],l=e.values[1],t=e.values[2],n=e.values[3],r=e.values[4],s=e.values[5],u.push({type:"C",values:[o,l,t,n,r,s]}),p=t,c=n,d=r,f=s):"L"===e.type?(r=e.values[0],s=e.values[1],u.push({type:"L",values:[r,s]}),d=r,f=s):"H"===e.type?(r=e.values[0],u.push({type:"L",values:[r,f]}),d=r):"V"===e.type?(s=e.values[0],u.push({type:"L",values:[d,s]}),f=s):"S"===e.type?(t=e.values[0],n=e.values[1],r=e.values[2],s=e.values[3],i="C"===h||"S"===h?(a=d+(d-p),f+(f-c)):(a=d,f),u.push({type:"C",values:[a,i,t,n,r,s]}),p=t,c=n,d=r,f=s):"T"===e.type?(r=e.values[0],s=e.values[1],l="Q"===h||"T"===h?(o=d+(d-p),f+(f-c)):(o=d,f),u.push({type:"C",values:[a=d+2*(o-d)/3,i=f+2*(l-f)/3,r+2*(o-r)/3,s+2*(l-s)/3,r,s]}),p=o,c=l,d=r,f=s):"Q"===e.type?(o=e.values[0],l=e.values[1],r=e.values[2],s=e.values[3],u.push({type:"C",values:[a=d+2*(o-d)/3,i=f+2*(l-f)/3,r+2*(o-r)/3,s+2*(l-s)/3,r,s]}),p=o,c=l,d=r,f=s):"A"===e.type?(n=e.values[0],a=e.values[1],i=e.values[2],o=e.values[3],l=e.values[4],r=e.values[5],s=e.values[6],0===n||0===a?(u.push({type:"C",values:[d,f,r,s,r,s]}),d=r,f=s):d===r&&f===s||b(d,f,r,s,n,a,i,o,l).forEach(function(e){u.push({type:"C",values:e}),d=r,f=s})):"Z"===e.type&&(u.push(e),d=y,f=m),h=e.type}),u}var s=e.SVGPathElement.prototype.setAttribute,u=e.SVGPathElement.prototype.removeAttribute,d=e.Symbol?e.Symbol():"__cachedPathData",f=e.Symbol?e.Symbol():"__cachedNormalizedPathData",b=function(e,t,n,a,i,o,l,r,s,u){function h(e,t,n){return{x:e*Math.cos(n)-t*Math.sin(n),y:e*Math.sin(n)+t*Math.cos(n)}}var p=Math.PI*l/180,c=[];u?(_=u[0],v=u[1],S=u[2],g=u[3]):(e=(m=h(e,t,-p)).x,t=m.y,1<(m=(y=(e-(n=(f=h(n,a,-p)).x))/2)*y/(i*i)+(d=(t-(a=f.y))/2)*d/(o*o))&&(i*=m=Math.sqrt(m),o*=m),f=i*i,m=o*o,S=(f=(r===s?-1:1)*Math.sqrt(Math.abs((f*m-f*d*d-m*y*y)/(f*d*d+m*y*y))))*i*d/o+(e+n)/2,g=f*-o*y/i+(t+a)/2,_=Math.asin(parseFloat(((t-g)/o).toFixed(9))),v=Math.asin(parseFloat(((a-g)/o).toFixed(9))),e120*Math.PI/180&&(d=v,f=n,y=a,v=s&&_=e.duration&&e.count&&e.loopsLeft<=1)return a=e.frames[e.lastFrame=e.reverse?0:e.frames.length-1],e.frameCallback(a.value,!0,a.timeRatio,a.outputRatio),void(e.framesStart=null);if(t>e.duration){if(n=Math.floor(t/e.duration),e.count){if(n>=e.loopsLeft)return a=e.frames[e.lastFrame=e.reverse?0:e.frames.length-1],e.frameCallback(a.value,!0,a.timeRatio,a.outputRatio),void(e.framesStart=null);e.loopsLeft-=n}e.framesStart+=e.duration*n,t=i-e.framesStart}e.reverse&&(t=e.duration-t),a=e.frames[e.lastFrame=Math.round(t/v)],!1!==e.frameCallback(a.value,!1,a.timeRatio,a.outputRatio)?o=!0:e.framesStart=null}}),o&&(e=l.call(window,xe))}function be(e,t){e.framesStart=Date.now(),null!=t&&(e.framesStart-=e.duration*(e.reverse?1-t:t)),e.loopsLeft=e.count,e.lastFrame=null,xe()}function ke(t,n){var e,a;return typeof t!=typeof n||(e=he(t)?"obj":Array.isArray(t)?"array":"")!=(he(n)?"obj":Array.isArray(n)?"array":"")||("obj"===e?ke(a=Object.keys(t).sort(),Object.keys(n).sort())||a.some(function(e){return ke(t[e],n[e])}):"array"===e?t.length!==n.length||t.some(function(e,t){return ke(e,n[t])}):t!==n)}function we(n){return n&&(he(n)?Object.keys(n).reduce(function(e,t){return e[t]=we(n[t]),e},{}):Array.isArray(n)?n.map(we):n)}function Oe(e){var t,n,a,i=1,o=e=(e+"").trim();function l(e){var t=1,e=m.exec(e);return e&&(t=parseFloat(e[1]),e[2]?t=0<=t&&t<=100?t/100:1:(t<0||1=Math.abs(n)?0<=t?k:A:0<=n?L:b))})),f.position_path!==y.position_path||f.position_lineStrokeWidth!==y.position_lineStrokeWidth||[0,1].some(function(e){return f.position_plugOverheadSE[e]!==y.position_plugOverheadSE[e]||(t=v[e],n=y.position_socketXYSE[e],t.x!==n.x||t.y!==n.y||t.socketId!==n.socketId)||(t=g[e],n=y.position_socketGravitySE[e],(e=null==t?"auto":Array.isArray(t)?"array":"number")!=(null==n?"auto":Array.isArray(n)?"array":"number")||("array"==e?t[0]!==n[0]||t[1]!==n[1]:t!==n));var t,n})){switch(l.pathList.baseVal=_=[],l.pathList.animVal=null,f.position_path){case P:_.push([E(v[0]),E(v[1])]);break;case N:t="number"==typeof g[0]&&0j?(f.position_lineStrokeWidth-j)*H:0),e.socketId===b?{x:0,y:-(i=(i=(e.y-n.y)/2)=t.x:t.dirId===r?e.y>=t.y:e.x<=t.x}function f(e,t){return t.dirId===i||t.dirId===r?e.x===t.x:e.y===t.y}function y(e){return e[0]?{contain:0,notContain:1}:{contain:1,notContain:0}}function m(e,t,n){return Math.abs(t[n]-e[n])}function S(e,t,n){return"x"===n?e.x=ee?S(u[t.notContain],u[t.contain],o[t.contain]):u[t.contain].dirId)):(i=[{x:u[0].x,y:u[0].y},{x:u[1].x,y:u[1].y}],s.forEach(function(e,t){var n=0===t?1:0,a=m(i[t],i[n],o[t]);a$&&(d[a]-e<$&&(e=d[a]-$),s=Ve(n[0],n[1],(p?e:d[a]-e)/d[a]),_[a]=p?[s,n[1]]:[n[0],s],d[a]-=e)):(d[a]=d[a]||Te.apply(null,n),d[a]>$&&(d[a]-e<$&&(e=d[a]-$),s=Ne(n[0],n[1],n[2],n[3],We(n[0],n[1],n[2],n[3],p?e:d[a]-e)),o=p?(i=n[0],s.toP1):(i=n[3],s.fromP2),l=Math.atan2(i.y-s.y,s.x-i.x),r=Ae(s,o),s.x=i.x+Math.cos(l)*e,s.y=i.y+Math.sin(l)*e*-1,o.x=s.x+Math.cos(l)*r,o.y=s.y+Math.sin(l)*r*-1,_[a]=p?[s,s.toP1,s.toP2,n[3]]:[n[0],s.fromP1,s.fromP2,s],d[a]=null)):e<0&&(n=_[a=p?0:_.length-1],s=v[t].socketId,t=-c[t]["x"==(u=s===A||s===k?"x":"y")?"width":"height"],h=(e=en.outlineMax&&(t=n.outlineMax),t*=2*n.outlineBase,y=Xe(r,u.plugOutline_strokeWidthSE,e,t)||y,y=Xe(r,u.plugOutline_inStrokeWidthSE,e,u.plugOutline_colorTraSE[e]?t-se/(u.line_strokeWidth/ue.lineSize)/s.plugSizeSE[e]*2:t/2)||y)}),y)),(t.faces||U.line||U.plug||U.lineOutline||U.plugOutline)&&(U.faces=(g=(m=e).curStats,_=m.aplStats,v=m.events,E=!1,!g.line_altColor&&Xe(m,_,"line_color",S=g.line_color,v.apl_line_color)&&(m.lineFace.style.stroke=S,E=!0),Xe(m,_,"line_strokeWidth",S=g.line_strokeWidth,v.apl_line_strokeWidth)&&(m.lineShape.style.strokeWidth=S+"px",E=!0,(oe||ie)&&(je(m,m.lineShape),ie&&(je(m,m.lineFace),je(m,m.lineMaskCaps)))),Xe(m,_,"lineOutline_enabled",S=g.lineOutline_enabled,v.apl_lineOutline_enabled)&&(m.lineOutlineFace.style.display=S?"inline":"none",E=!0),g.lineOutline_enabled&&(Xe(m,_,"lineOutline_color",S=g.lineOutline_color,v.apl_lineOutline_color)&&(m.lineOutlineFace.style.stroke=S,E=!0),Xe(m,_,"lineOutline_strokeWidth",S=g.lineOutline_strokeWidth,v.apl_lineOutline_strokeWidth)&&(m.lineOutlineMaskShape.style.strokeWidth=S+"px",E=!0,ie&&(je(m,m.lineOutlineMaskCaps),je(m,m.lineOutlineFace))),Xe(m,_,"lineOutline_inStrokeWidth",S=g.lineOutline_inStrokeWidth,v.apl_lineOutline_inStrokeWidth)&&(m.lineMaskShape.style.strokeWidth=S+"px",E=!0,ie&&(je(m,m.lineOutlineMaskCaps),je(m,m.lineOutlineFace)))),Xe(m,_,"plug_enabled",S=g.plug_enabled,v.apl_plug_enabled)&&(m.plugsFace.style.display=S?"inline":"none",E=!0),g.plug_enabled&&[0,1].forEach(function(n){var e=g.plug_plugSE[n],t=e!==Y?X[q[e]]:null,a=Ze(n,t);Xe(m,_.plug_enabledSE,n,S=g.plug_enabledSE[n],v.apl_plug_enabledSE)&&(m.plugsFace.style[a.prop]=S?"url(#"+m.plugMarkerIdSE[n]+")":"none",E=!0),g.plug_enabledSE[n]&&(Xe(m,_.plug_plugSE,n,e,v.apl_plug_plugSE)&&(m.plugFaceSE[n].href.baseVal="#"+t.elmId,Ue(m,m.plugMarkerSE[n],a.orient,t.bBox,m.svg,m.plugMarkerShapeSE[n],m.plugsFace),E=!0,oe&&je(m,m.plugsFace)),Xe(m,_.plug_colorSE,n,S=g.plug_colorSE[n],v.apl_plug_colorSE)&&(m.plugFaceSE[n].style.fill=S,E=!0,(le||re||ie)&&!g.line_colorTra&&je(m,ie?m.lineMaskCaps:m.capsMaskLine)),["markerWidth","markerHeight"].forEach(function(e){var t="plug_"+e+"SE";Xe(m,_[t],n,S=g[t][n],v["apl_"+t])&&(m.plugMarkerSE[n][e].baseVal.value=S,E=!0)}),Xe(m,_.plugOutline_enabledSE,n,S=g.plugOutline_enabledSE[n],v.apl_plugOutline_enabledSE)&&(S?(m.plugFaceSE[n].style.mask="url(#"+m.plugMaskIdSE[n]+")",m.plugOutlineFaceSE[n].style.display="inline"):(m.plugFaceSE[n].style.mask="none",m.plugOutlineFaceSE[n].style.display="none"),E=!0),g.plugOutline_enabledSE[n]&&(Xe(m,_.plugOutline_plugSE,n,e,v.apl_plugOutline_plugSE)&&(m.plugOutlineFaceSE[n].href.baseVal=m.plugMaskShapeSE[n].href.baseVal=m.plugOutlineMaskShapeSE[n].href.baseVal="#"+t.elmId,[m.plugMaskSE[n],m.plugOutlineMaskSE[n]].forEach(function(e){e.x.baseVal.value=t.bBox.left,e.y.baseVal.value=t.bBox.top,e.width.baseVal.value=t.bBox.width,e.height.baseVal.value=t.bBox.height}),E=!0),Xe(m,_.plugOutline_colorSE,n,S=g.plugOutline_colorSE[n],v.apl_plugOutline_colorSE)&&(m.plugOutlineFaceSE[n].style.fill=S,E=!0,ie&&(je(m,m.lineMaskCaps),je(m,m.lineOutlineMaskCaps))),Xe(m,_.plugOutline_strokeWidthSE,n,S=g.plugOutline_strokeWidthSE[n],v.apl_plugOutline_strokeWidthSE)&&(m.plugOutlineMaskShapeSE[n].style.strokeWidth=S+"px",E=!0),Xe(m,_.plugOutline_inStrokeWidthSE,n,S=g.plugOutline_inStrokeWidthSE[n],v.apl_plugOutline_inStrokeWidthSE)&&(m.plugMaskShapeSE[n].style.strokeWidth=S+"px",E=!0)))}),E)),(t.position||U.line||U.plug)&&(U.position=Ke(e)),(t.path||U.position)&&(U.path=(k=(x=e).curStats,I=x.aplStats,M=x.pathList.animVal||x.pathList.baseVal,w=k.path_edge,C=!1,M&&(w.x1=w.x2=M[0][0].x,w.y1=w.y2=M[0][0].y,k.path_pathData=b=Be(M,function(e){e.xw.x2&&(w.x2=e.x),e.y>w.y2&&(w.y2=e.y)}),Fe(b,I.path_pathData)&&(x.linePath.setPathData(b),I.path_pathData=b,C=!0,ie?(je(x,x.plugsFace),je(x,x.lineMaskCaps)):oe&&je(x,x.linePath),x.events.apl_path&&x.events.apl_path.forEach(function(e){e(x,b)}))),C)),U.viewBox=(M=(O=e).curStats,I=O.aplStats,C=M.path_edge,L=M.viewBox_bBox,A=I.viewBox_bBox,V=O.svg.viewBox.baseVal,P=O.svg.style,N=!1,I=Math.max(M.line_strokeWidth/2,M.viewBox_plugBCircleSE[0]||0,M.viewBox_plugBCircleSE[1]||0),T={x1:C.x1-I,y1:C.y1-I,x2:C.x2+I,y2:C.y2+I},O.events.new_edge4viewBox&&O.events.new_edge4viewBox.forEach(function(e){e(O,T)}),L.x=M.lineMask_x=M.lineOutlineMask_x=M.maskBGRect_x=T.x1,L.y=M.lineMask_y=M.lineOutlineMask_y=M.maskBGRect_y=T.y1,L.width=T.x2-T.x1,L.height=T.y2-T.y1,["x","y","width","height"].forEach(function(e){var t;(t=L[e])!==A[e]&&(V[e]=A[e]=t,P[Q[e]]=t+("x"===e||"y"===e?O.bodyOffset[e]:0)+"px",N=!0)}),N),U.mask=(R=(W=e).curStats,F=W.aplStats,G=!1,R.plug_enabled?[0,1].forEach(function(e){R.capsMaskMarker_enabledSE[e]=R.plug_enabledSE[e]&&R.plug_colorTraSE[e]||R.plugOutline_enabledSE[e]&&R.plugOutline_colorTraSE[e]}):R.capsMaskMarker_enabledSE[0]=R.capsMaskMarker_enabledSE[1]=!1,R.capsMaskMarker_enabled=R.capsMaskMarker_enabledSE[0]||R.capsMaskMarker_enabledSE[1],R.lineMask_outlineMode=R.lineOutline_enabled,R.caps_enabled=R.capsMaskMarker_enabled||R.capsMaskAnchor_enabledSE[0]||R.capsMaskAnchor_enabledSE[1],R.lineMask_enabled=R.caps_enabled||R.lineMask_outlineMode,(R.lineMask_enabled&&!R.lineMask_outlineMode||R.lineOutline_enabled)&&["x","y"].forEach(function(e){var t="maskBGRect_"+e;Xe(W,F,t,B=R[t])&&(W.maskBGRect[e].baseVal.value=B,G=!0)}),Xe(W,F,"lineMask_enabled",B=R.lineMask_enabled)&&(W.lineFace.style.mask=B?"url(#"+W.lineMaskId+")":"none",G=!0,re&&je(W,W.lineMask)),R.lineMask_enabled&&(Xe(W,F,"lineMask_outlineMode",B=R.lineMask_outlineMode)&&(B?(W.lineMaskBG.style.display="none",W.lineMaskShape.style.display="inline"):(W.lineMaskBG.style.display="inline",W.lineMaskShape.style.display="none"),G=!0),["x","y"].forEach(function(e){var t="lineMask_"+e;Xe(W,F,t,B=R[t])&&(W.lineMask[e].baseVal.value=B,G=!0)}),Xe(W,F,"caps_enabled",B=R.caps_enabled)&&(W.lineMaskCaps.style.display=W.lineOutlineMaskCaps.style.display=B?"inline":"none",G=!0,re&&je(W,W.capsMaskLine)),R.caps_enabled&&([0,1].forEach(function(e){var t;Xe(W,F.capsMaskAnchor_enabledSE,e,B=R.capsMaskAnchor_enabledSE[e])&&(W.capsMaskAnchorSE[e].style.display=B?"inline":"none",G=!0,re&&je(W,W.lineMask)),R.capsMaskAnchor_enabledSE[e]&&(Fe(t=R.capsMaskAnchor_pathDataSE[e],F.capsMaskAnchor_pathDataSE[e])&&(W.capsMaskAnchorSE[e].setPathData(t),F.capsMaskAnchor_pathDataSE[e]=t,G=!0),Xe(W,F.capsMaskAnchor_strokeWidthSE,e,B=R.capsMaskAnchor_strokeWidthSE[e])&&(W.capsMaskAnchorSE[e].style.strokeWidth=B+"px",G=!0))}),Xe(W,F,"capsMaskMarker_enabled",B=R.capsMaskMarker_enabled)&&(W.capsMaskLine.style.display=B?"inline":"none",G=!0),R.capsMaskMarker_enabled&&[0,1].forEach(function(n){var e=R.capsMaskMarker_plugSE[n],t=e!==Y?X[q[e]]:null,a=Ze(n,t);Xe(W,F.capsMaskMarker_enabledSE,n,B=R.capsMaskMarker_enabledSE[n])&&(W.capsMaskLine.style[a.prop]=B?"url(#"+W.lineMaskMarkerIdSE[n]+")":"none",G=!0),R.capsMaskMarker_enabledSE[n]&&(Xe(W,F.capsMaskMarker_plugSE,n,e)&&(W.capsMaskMarkerShapeSE[n].href.baseVal="#"+t.elmId,Ue(W,W.capsMaskMarkerSE[n],a.orient,t.bBox,W.svg,W.capsMaskMarkerShapeSE[n],W.capsMaskLine),G=!0,oe&&(je(W,W.capsMaskLine),je(W,W.lineFace))),["markerWidth","markerHeight"].forEach(function(e){var t="capsMaskMarker_"+e+"SE";Xe(W,F[t],n,B=R[t][n])&&(W.capsMaskMarkerSE[n][e].baseVal.value=B,G=!0)}))}))),R.lineOutline_enabled&&["x","y"].forEach(function(e){var t="lineOutlineMask_"+e;Xe(W,F,t,B=R[t])&&(W.lineOutlineMask[e].baseVal.value=B,G=!0)}),G),t.effect&&(j=(D=e).curStats,H=D.aplStats,Object.keys(Z).forEach(function(e){var t=Z[e],n=e+"_enabled",a=e+"_options",e=j[a];Xe(D,H,n,z=j[n])?(z&&(H[a]=we(e)),t[z?"init":"remove"](D)):z&&ke(e,H[a])&&(t.remove(D),H[n]=!0,H[a]=we(e),t.init(D))})),(le||re)&&U.line&&!U.path&&je(e,e.lineShape),le&&U.plug&&!U.line&&je(e,e.plugsFace),He(e)}function et(e,t){return{duration:(pe(e.duration)&&0i.x2&&(i.x2=e.x2),e.y2>i.y2&&(i.y2=e.y2),["x","y"].forEach(function(e){var t,n="dropShadow_"+e;o[n]=t=i[e+"1"],Xe(a,l,n,t)&&(a.efc_dropShadow_elmFilter[e].baseVal.value=t)}))}}},Object.keys(Z).forEach(function(e){var t=Z[e],n=t.stats;n[e+"_enabled"]={iniValue:!1},n[e+"_options"]={hasProps:!0},t.anim&&(n[e+"_animOptions"]={},n[e+"_animId"]={})}),w={none:{defaultAnimOptions:{},init:function(e,t){var n=e.curStats;n.show_animId&&(g.remove(n.show_animId),n.show_animId=null),w.none.start(e,t)},start:function(e,t){w.none.stop(e,!0)},stop:function(e,t,n){var a=e.curStats;return n=null!=n?n:e.aplStats.show_on,a.show_inAnim=!1,t&&Je(e,n),n?1:0}},fade:{defaultAnimOptions:{duration:300,timing:"linear"},init:function(n,e){var t=n.curStats,a=n.aplStats;t.show_animId&&g.remove(t.show_animId),t.show_animId=g.add(function(e){return e},function(e,t){t?w.fade.stop(n,!0):(n.svg.style.opacity=e+"",ie&&(je(n,n.svg),He(n)))},a.show_animOptions.duration,1,a.show_animOptions.timing,null,!1),w.fade.start(n,e)},start:function(e,t){var n,a=e.curStats;a.show_inAnim&&(n=g.stop(a.show_animId)),Je(e,1),a.show_inAnim=!0,g.start(a.show_animId,!e.aplStats.show_on,null!=t?t:n)},stop:function(e,t,n){var a,i=e.curStats;return n=null!=n?n:e.aplStats.show_on,a=i.show_inAnim?g.stop(i.show_animId):n?1:0,i.show_inAnim=!1,t&&(e.svg.style.opacity=n?"":"0",Je(e,n)),a}},draw:{defaultAnimOptions:{duration:500,timing:[.58,0,.42,1]},init:function(n,e){var t=n.curStats,a=n.aplStats,o=n.pathList.baseVal,i=Re(o),l=i.segsLen,r=i.lenAll;t.show_animId&&g.remove(t.show_animId),t.show_animId=g.add(function(e){var t,n,a,i=-1;if(0===e)n=[[o[0][0],o[0][0]]];else if(1===e)n=o;else{for(t=r*e,n=[];t>=l[++i];)n.push(o[i]),t-=l[i];t&&(2===(a=o[i]).length?n.push([a[0],Ve(a[0],a[1],t/l[i])]):(e=Ne(a[0],a[1],a[2],a[3],We(a[0],a[1],a[2],a[3],t)),n.push([a[0],e.fromP1,e.fromP2,e])))}return n},function(e,t){t?w.draw.stop(n,!0):(n.pathList.animVal=e,$e(n,{path:!0}))},a.show_animOptions.duration,1,a.show_animOptions.timing,null,!1),w.draw.start(n,e)},start:function(e,t){var n,a=e.curStats;a.show_inAnim&&(n=g.stop(a.show_animId)),Je(e,1),a.show_inAnim=!0,Ge(e,"apl_position",w.draw.update),g.start(a.show_animId,!e.aplStats.show_on,null!=t?t:n)},stop:function(e,t,n){var a,i=e.curStats;return n=null!=n?n:e.aplStats.show_on,a=i.show_inAnim?g.stop(i.show_animId):n?1:0,i.show_inAnim=!1,t&&(e.pathList.animVal=n?null:[[e.pathList.baseVal[0][0],e.pathList.baseVal[0][0]]],$e(e,{path:!0}),Je(e,n)),a},update:function(e){De(e,"apl_position",w.draw.update),e.curStats.show_inAnim?w.draw.init(e,w.draw.stop(e)):e.aplStats.show_animOptions={}}}},[["start","anchorSE",0],["end","anchorSE",1],["color","lineColor"],["size","lineSize"],["startSocketGravity","socketGravitySE",0],["endSocketGravity","socketGravitySE",1],["startPlugColor","plugColorSE",0],["endPlugColor","plugColorSE",1],["startPlugSize","plugSizeSE",0],["endPlugSize","plugSizeSE",1],["outline","lineOutlineEnabled"],["outlineColor","lineOutlineColor"],["outlineSize","lineOutlineSize"],["startPlugOutline","plugOutlineEnabledSE",0],["endPlugOutline","plugOutlineEnabledSE",1],["startPlugOutlineColor","plugOutlineColorSE",0],["endPlugOutlineColor","plugOutlineColorSE",1],["startPlugOutlineSize","plugOutlineSizeSE",0],["endPlugOutlineSize","plugOutlineSizeSE",1]].forEach(function(e){var t=e[0],n=e[1],a=e[2];Object.defineProperty(ot.prototype,t,{get:function(){var e=null!=a?Se[this._id].options[n][a]:n?Se[this._id].options[n]:Se[this._id].options[t];return null==e?D:we(e)},set:lt(t),enumerable:!0})}),[["path",R],["startSocket",V,"socketSE",0],["endSocket",V,"socketSE",1],["startPlug",F,"plugSE",0],["endPlug",F,"plugSE",1]].forEach(function(e){var a=e[0],i=e[1],o=e[2],l=e[3];Object.defineProperty(ot.prototype,a,{get:function(){var t,n=null!=l?Se[this._id].options[o][l]:o?Se[this._id].options[o]:Se[this._id].options[a];return n?Object.keys(i).some(function(e){return i[e]===n&&(t=e,!0)})?t:new Error("It's broken"):D},set:lt(a),enumerable:!0})}),Object.keys(Z).forEach(function(n){var a=Z[n];Object.defineProperty(ot.prototype,n,{get:function(){var s,e,t=Se[this._id].options[n];return he(t)?(s=t,e=a.optionsConf.reduce(function(e,t){var n,a=t[0],i=t[1],o=t[2],l=t[3],t=t[4],r=null!=t?s[l][t]:l?s[l]:s[i];return e[i]="id"===a?r?Object.keys(o).some(function(e){return o[e]===r&&(n=e,!0)})?n:new Error("It's broken"):D:null==r?D:we(r),e},{}),a.anim&&(e.animation=we(s.animation)),e):t},set:lt(n),enumerable:!0})}),["startLabel","endLabel","middleLabel"].forEach(function(e,n){Object.defineProperty(ot.prototype,e,{get:function(){var e=Se[this._id],t=e.options;return t.labelSEM[n]&&!e.optionIsAttach.labelSEM[n]?_e[t.labelSEM[n]._id].text:t.labelSEM[n]||""},set:lt(e),enumerable:!0})}),ot.prototype.setOptions=function(e){return it(Se[this._id],e),this},ot.prototype.position=function(){return $e(Se[this._id],{position:!0}),this},ot.prototype.remove=function(){var t=Se[this._id],n=t.curStats;Object.keys(Z).forEach(function(e){e+="_animId";n[e]&&g.remove(n[e])}),n.show_animId&&g.remove(n.show_animId),t.attachments.slice().forEach(function(e){at(t,e)}),t.baseWindow&&t.svg&&t.baseWindow.document.body.removeChild(t.svg),delete Se[this._id]},ot.prototype.show=function(e,t){return tt(Se[this._id],!0,e,t),this},ot.prototype.hide=function(e,t){return tt(Se[this._id],!1,e,t),this},o=function(t){t&&_e[t._id]&&(t.boundTargets.slice().forEach(function(e){at(e.props,t,!0)}),t.conf.remove&&t.conf.remove(t),delete _e[t._id])},rt.prototype.remove=function(){var t=this,n=_e[t._id];n&&(n.boundTargets.slice().forEach(function(e){n.conf.removeOption(n,e)}),ze(function(){var e=_e[t._id];e&&(console.error("LeaderLineAttachment was not removed by removeOption"),o(e))}))},M=rt,window.LeaderLineAttachment=M,I=function(e,t){return e instanceof M&&(!(e.isRemoved||t&&_e[e._id].conf.type!==t)||null)},O={pointAnchor:{type:"anchor",argOptions:[{optionName:"element",type:Me}],init:function(e,t){return e.element=O.pointAnchor.checkElement(t.element),e.x=O.pointAnchor.parsePercent(t.x,!0)||[.5,!0],e.y=O.pointAnchor.parsePercent(t.y,!0)||[.5,!0],!0},removeOption:function(e,t){var n=t.props,a={},i=e.element,e=n.options.anchorSE["start"===t.optionName?1:0];i===e&&(i=e===document.body?new M(O.pointAnchor,[i]):document.body),a[t.optionName]=i,it(n,a)},getBBoxNest:function(e,t){var n=Le(e.element,t.baseWindow),a=n.width,t=n.height;return n.width=n.height=0,n.left=n.right=n.left+e.x[0]*(e.x[1]?a:1),n.top=n.bottom=n.top+e.y[0]*(e.y[1]?t:1),n},parsePercent:function(e,t){var n,a,i=!1;return pe(e)?a=e:"string"==typeof e&&(n=m.exec(e))&&n[2]&&(i=0!==(a=parseFloat(n[1])/100)),null!=a&&(t||0<=a)?[a,i]:null},checkElement:function(e){if(null==e)e=document.body;else if(!Me(e))throw new Error("`element` must be Element");return e}},areaAnchor:{type:"anchor",argOptions:[{optionName:"element",type:Me},{optionName:"shape",type:"string"}],stats:{color:{},strokeWidth:{},elementWidth:{},elementHeight:{},elementLeft:{},elementTop:{},pathListRel:{},bBoxRel:{},pathData:{},viewBoxBBox:{hasProps:!0},dashLen:{},dashGap:{}},init:function(a,e){var t,n=[];return a.element=O.pointAnchor.checkElement(e.element),"string"==typeof e.color&&(a.color=e.color.trim()),"string"==typeof e.fillColor&&(a.fill=e.fillColor.trim()),pe(e.size)&&0<=e.size&&(a.size=e.size),e.dash&&(a.dash=!0,pe(e.dash.len)&&0i.right&&(i.right=t),ei.bottom&&(i.bottom=e)):i={left:t,right:t,top:e,bottom:e},o?S.pathListRel.push([o,{x:t,y:e}]):S.pathListRel=[],o={x:t,y:e}}),S.pathListRel.push([]),e=S.strokeWidth/2,e=[{x:i.left-e,y:i.top-e},{x:i.right+e,y:i.bottom+e}],S.bBoxRel={left:e[0].x,top:e[0].y,right:e[1].x,bottom:e[1].y,width:e[1].x-e[0].x,height:e[1].y-e[0].y}}v.pathListRel=v.bBoxRel=!0}return(v.pathListRel||v.elementLeft||v.elementTop)&&(S.pathData=Be(S.pathListRel,function(e){e.x+=n.left,e.y+=n.top})),Xe(t,g,"strokeWidth",a=S.strokeWidth)&&(t.path.style.strokeWidth=a+"px"),Fe(a=S.pathData,g.pathData)&&(t.path.setPathData(a),g.pathData=a,v.pathData=!0),t.dash&&(!v.pathData&&(!v.strokeWidth||t.dashLen&&t.dashGap)||(S.dashLen=t.dashLen||2*S.strokeWidth,S.dashGap=t.dashGap||S.strokeWidth),v.dash=Xe(t,g,"dashLen",S.dashLen)||v.dash,v.dash=Xe(t,g,"dashGap",S.dashGap)||v.dash,v.dash&&(t.path.style.strokeDasharray=g.dashLen+","+g.dashGap)),d=S.viewBoxBBox,f=g.viewBoxBBox,y=t.svg.viewBox.baseVal,m=t.svg.style,d.x=S.bBoxRel.left+n.left,d.y=S.bBoxRel.top+n.top,d.width=S.bBoxRel.width,d.height=S.bBoxRel.height,["x","y","width","height"].forEach(function(e){(a=d[e])!==f[e]&&(y[e]=f[e]=a,m[Q[e]]=a+("x"===e||"y"===e?t.bodyOffset[e]:0)+"px")}),v.strokeWidth||v.pathListRel||v.bBoxRel}},mouseHoverAnchor:{type:"anchor",argOptions:[{optionName:"element",type:Me},{optionName:"showEffectName",type:"string"}],style:{backgroundImage:"url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cG9seWdvbiBwb2ludHM9IjI0LDAgMCw4IDgsMTEgMCwxOSA1LDI0IDEzLDE2IDE2LDI0IiBmaWxsPSJjb3JhbCIvPjwvc3ZnPg==')",backgroundSize:"",backgroundRepeat:"no-repeat",backgroundColor:"#f8f881",cursor:"default"},hoverStyle:{backgroundImage:"none",backgroundColor:"#fadf8f"},padding:{top:1,right:15,bottom:1,left:2},minHeight:15,backgroundPosition:{right:2,top:2},backgroundSize:{width:12,height:12},dirKeys:[["top","Top"],["right","Right"],["bottom","Bottom"],["left","Left"]],init:function(a,i){var n,t,e,o,l,r,s,u,h,p=O.mouseHoverAnchor,c={};if(a.element=O.pointAnchor.checkElement(i.element),s=a.element,!((u=s.ownerDocument)&&(h=u.defaultView)&&h.HTMLElement&&s instanceof h.HTMLElement))throw new Error("`element` must be HTML element");return p.style.backgroundSize=p.backgroundSize.width+"px "+p.backgroundSize.height+"px",["style","hoverStyle"].forEach(function(e){var n=p[e];a[e]=Object.keys(n).reduce(function(e,t){return e[t]=n[t],e},{})}),"inline"===(n=a.element.ownerDocument.defaultView.getComputedStyle(a.element,"")).display?a.style.display="inline-block":"none"===n.display&&(a.style.display="block"),O.mouseHoverAnchor.dirKeys.forEach(function(e){var t=e[0],e="padding"+e[1];parseFloat(n[e])e.x2&&(e.x2=n.x2),n.y2>e.y2&&(e.y2=n.y2)},newText:function(e,t,n,a,i){var o,l,r=t.createElementNS(ae,"text");return r.textContent=e,[r.x,r.y].forEach(function(e){var t=n.createSVGLength();t.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX,0),e.baseVal.initialize(t)}),"boolean"!=typeof h&&(h="paintOrder"in r.style),i&&!h?(o=t.createElementNS(ae,"defs"),r.id=a,o.appendChild(r),(l=(e=t.createElementNS(ae,"g")).appendChild(t.createElementNS(ae,"use"))).href.baseVal="#"+a,(t=e.appendChild(t.createElementNS(ae,"use"))).href.baseVal="#"+a,(l=l.style).strokeLinejoin="round",{elmPosition:r,styleText:r.style,styleFill:t.style,styleStroke:l,styleShow:e.style,elmsAppend:[o,e]}):(l=r.style,i&&(l.strokeLinejoin="round",l.paintOrder="stroke"),{elmPosition:r,styleText:l,styleFill:l,styleStroke:i?l:null,styleShow:l,elmsAppend:[r]})},getMidPoint:function(e,t){var n,a,i=Re(e),o=i.segsLen,i=i.lenAll,l=-1,r=i/2+(t||0);if(r<=0)return 2===(n=e[0]).length?Ve(n[0],n[1],0):Ne(n[0],n[1],n[2],n[3],0);if(i<=r)return 2===(n=e[e.length-1]).length?Ve(n[0],n[1],1):Ne(n[0],n[1],n[2],n[3],1);for(a=[];r>o[++l];)a.push(e[l]),r-=o[l];return 2===(n=e[l]).length?Ve(n[0],n[1],r/o[l]):Ne(n[0],n[1],n[2],n[3],We(n[0],n[1],n[2],n[3],r))},initSvg:function(t,n){var e,a,i=O.captionLabel.newText(t.text,n.baseWindow.document,n.svg,C+"-captionLabel-"+t._id,t.outlineColor);["elmPosition","styleFill","styleShow","elmsAppend"].forEach(function(e){t[e]=i[e]}),t.isShown=!1,t.styleShow.visibility="hidden",O.captionLabel.textStyleProps.forEach(function(e){null!=t[e]&&(i.styleText[e]=t[e])}),i.elmsAppend.forEach(function(e){n.svg.appendChild(e)}),e=i.elmPosition.getBBox(),t.width=e.width,t.height=e.height,t.outlineColor&&(a=e.height/9,i.styleStroke.strokeWidth=(a=10c?((t=d.points)[1]=Pe(t[0],t[1],-c),d.len=Ae(t[0],t[1])):(d.points=null,d.len=0),e.len>c+n?((t=e.points)[0]=Pe(t[1],t[0],-(c+n)),e.len=Ae(t[0],t[1])):(e.points=null,e.len=0)),e):null}),f.reduce(function(t,e){var n=e.points;return n&&(a&&y(n[0],a)||t.push({type:"M",values:[n[0].x,n[0].y]}),"line"===e.type?t.push({type:"L",values:[n[1].x,n[1].y]}):(n.shift(),n.forEach(function(e){t.push({type:"L",values:[e.x,e.y]})})),a=n[n.length-1]),t},[])},newText:function(e,t,n,a){var i,o,l,r,s=t.createElementNS(ae,"defs"),u=s.appendChild(t.createElementNS(ae,"path"));return u.id=i=n+"-path",(l=(o=t.createElementNS(ae,"text")).appendChild(t.createElementNS(ae,"textPath"))).href.baseVal="#"+i,l.startOffset.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX,0),l.textContent=e,"boolean"!=typeof h&&(h="paintOrder"in o.style),a&&!h?(o.id=e=n+"-text",s.appendChild(o),(r=(n=t.createElementNS(ae,"g")).appendChild(t.createElementNS(ae,"use"))).href.baseVal="#"+e,(t=n.appendChild(t.createElementNS(ae,"use"))).href.baseVal="#"+e,(r=r.style).strokeLinejoin="round",{elmPosition:o,elmPath:u,elmOffset:l,styleText:o.style,styleFill:t.style,styleStroke:r,styleShow:n.style,elmsAppend:[s,n]}):(r=o.style,a&&(r.strokeLinejoin="round",r.paintOrder="stroke"),{elmPosition:o,elmPath:u,elmOffset:l,styleText:r,styleFill:r,styleStroke:a?r:null,styleShow:r,elmsAppend:[s,o]})},initSvg:function(t,n){var e,a,i,o=O.pathLabel.newText(t.text,n.baseWindow.document,C+"-pathLabel-"+t._id,t.outlineColor);["elmPosition","elmPath","elmOffset","styleFill","styleShow","elmsAppend"].forEach(function(e){t[e]=o[e]}),t.isShown=!1,t.styleShow.visibility="hidden",O.captionLabel.textStyleProps.forEach(function(e){null!=t[e]&&(o.styleText[e]=t[e])}),o.elmsAppend.forEach(function(e){n.svg.appendChild(e)}),o.elmPath.setPathData([{type:"M",values:[0,100]},{type:"h",values:[100]}]),le&&(i=o.elmOffset.href.baseVal,o.elmOffset.href.baseVal=""),e=o.elmPosition.getBBox(),le&&(o.elmOffset.href.baseVal=i),o.styleText.textAnchor=["start","end","middle"][t.semIndex],2!==t.semIndex||t.lineOffset||o.elmOffset.startOffset.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE,50),t.height=e.height,t.outlineColor&&(a=e.height/9,o.styleStroke.strokeWidth=(a=10 + + + {# Ne pas retirer la ligne suivante, qui ne s'applique pas à ce document. #} + + {% set prismjs = 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.25.0' %} + {% block head %} + + + + {% block pageTitle %}Le beau code web{% endblock %} + + + + {% endblock %} + + +

+

{% block docTitle %}Le beau code web{% endblock %}

+
+
+ {% block docIntroduction %}{% endblock %} + {% block docContent %} + {% for component in components %} + {% include component %} + {% endfor %} + {% endblock %} + {% if block('docContent')|trim is empty %} +

+ Il n’y a pas de recommandation validée pour l’instant. + N’hésitez pas à consulter notre dépôt Github pour faire des propositions. +

+ {% endif %} +
+ + + + + + + + \ No newline at end of file diff --git a/views/pages/guide-generalites-010-fichiers.twig b/views/pages/guide-generalites-010-fichiers.twig new file mode 100644 index 0000000..357ff90 --- /dev/null +++ b/views/pages/guide-generalites-010-fichiers.twig @@ -0,0 +1,110 @@ +{% embed '_recommandation.twig' %} + {% set recId = 'nom-fichiers' %} + {% block recTitle %} + Noms de fichiers + {% endblock %} + {% block recContent %} +

+ Les noms des fichiers et dossiers utilisés sur le web doivent respecter les règles suivantes. +

+
    +
  1. + Écriture recommandée en kebab-case, sans espace, ni accent (ée), ni diacritique (çc), ni caractère spécial, ni ponctuation. +

  2. +
  3. +

    + Il est recommandé de ne pas dépasser 32 caractères, extension comprise. +

    + +
  4. +
  5. +

    + Les mots employés devraient refléter de façon claire et compréhensible le contenu ou la fonction dans le site du fichier ou dossier. + Il convient donc d’éviter des mots très génériques, tels que page ou article, ou trop ambigus. + On devrait également éviter les stop words (articles, conjonctions…), qui allongent l’URL sans apporter de contenu sémantique. +

    + +
  6. +
  7. +

    Une ou plusieurs extensions doivent indiquer le format d'un document.

    + +
  8. +
+ {% endblock recContent %} + {% block recRationale %} +
    +
  1. +

    + respect des standards + Les adresses web sont définies par le document Uniform Resource Identifier (URI): Generic Syntax [RFC 3986]. + Le chemin est sensible à la casse. + Comme certains systèmes d’exploitation n’y sont pas sensibles, pour éviter des liens brisés et des erreurs dans l’arborescence, il est habituel de se limiter à des minuscules, même si on pourrait contourner ces difficultés en formulant une règle plus précise. + Les caractères autres qu’alphanumériques, -, ., _ et ~ sont recodés. + Les caractères . et ~ ayant une signification particulière dans certains contextes et le souligné _ n’étant pas traité comme un séparateur par les moteurs de recherche + (cf. Web Rank Info : Référencement naturel : dans les URL, le tiret meilleur que l’underscore), les seuls caractères toujours sûrs pour un nom de fichier ou dossier, hors extension, sont les lettres, les chiffres et le tiret -. +

    +

    + lisibilité + Pour gagner en lisibilité des adresses, l’habitude est de remplacer tout caractère susceptible d’être encodé dans les bares d’adresse et dans la transcription des URL, par exemple pour des bibliographies. + Ceci inclut dont les espaces, les accents et certains caractères spéciaux. +

    +
  2. +
  3. +

    + maintenabilité + Plusieurs des systèmes de fichiers et ou explorateurs de fichiers ont une limitation d'environ 250 caractères Unicode (les URL ont une limite supérieure). + Toutefois, pour permettre un archivage sur disque optique, il faut adopter la limite du système de fichiers UDF, qui limite les chemins à à 127 caractères Unicode [Wikipedia UDF].

    +

    + lisibilité + Nombre d’explorateurs de fichiers des OS ont, par défaut, une configuration ni n’affiche qu’une vingtaine à une trentaine de caractères. +

    +
  4. +
  5. +

    + respect des standards + Cette règle découle du respect des méthodes d’indexation des moteurs de recherche. + Sur le référencement naturel (SEO) et sa dimension technique, cf. [TechSEO]. + On notera que les stop words sont purement et simplement ignorés par l’indexation des moteurs de recherche web. +

    +

    + service + Ceci rend également les URL plus simple à retenir et, le cas échéant, à transcrire, pour les utilisateurs. +

    +

    + maintenabilité + La persistance des chemins aide à maintenir l’arborescence d’un site. +

    +
  6. +
  7. +

    + lisibilité + Mettre une extension et l’afficher limite les risques d’erreurs de format. +

    +

    + respect des standards + Nombre de serveurs sont paramétrés pour inférer le format des documents à partir de leurs extensions [Apache Mod_mime]. +

    +
  8. +
+ {% endblock recRationale %} +{% endembed %} \ No newline at end of file diff --git a/views/pages/guide-generalites.twig b/views/pages/guide-generalites.twig new file mode 100644 index 0000000..5407b03 --- /dev/null +++ b/views/pages/guide-generalites.twig @@ -0,0 +1,4 @@ +{% extends './views/layout/_page.twig' %} +{% block pageTitle %}BCW-1 Recommandations générales — Le beau code web{% endblock %} +{% block docTitle %}BCW-1 Recommandations générales pour le codage web{% endblock %} +{% set components = 'guide-generalites-*.twig'|glob %} \ No newline at end of file diff --git a/views/pages/guide-html-010-valide.twig b/views/pages/guide-html-010-valide.twig new file mode 100644 index 0000000..bf30a50 --- /dev/null +++ b/views/pages/guide-html-010-valide.twig @@ -0,0 +1,193 @@ +{% embed '_recommandation.twig' %} + {% set recId = 'validite' %} + {% block recTitle %} + Validité du code + {% endblock %} + {% block recContent %} +
    +
  1. +

    + L’encodage doit être précisé + [Opquast Règle 225]. + Recommandé : UTF-8, + sans BOM + [Opquast Règle 226]. +

    + +
  2. +
  3. +

    + Le balisage doit être valide. + En particulier, les éléments doivent être correctement imbriqués + et les caractères spéciaux doivent toujours être correctement échappés par des entités, en particulier les & dans les adresses. +

    + +
  4. +
  5. +

    + Le document devrait être + conforme à une version donnée du format choisi. + Format recommandé : + HTML5 en syntaxe HTML. +

    + +
  6. +
  7. +

    + Les éléments devraient + toujours avoir une balise de fermeture, + sauf éventuellement pour les éléments toujours vides + (link, + img, + br). +

    +

    + De même, les valeurs d’attribut devraient toujours être entre guillemets + (simples ' + ou doubles "), + sauf peut-être pour les attributs booléens (p. ex. + required, + disabled ou + open). +

    + +
  8. +
+ {% endblock recContent %} + {% block recRationale %} +
    +
  1. +

    + Service, + sécurité : + Les éditeurs de code devinent souvent l’encodage d’une page. + En revanche, les navigateurs utilisent un encodage par défaut, + quand celui-ci n’est pas spécifié. + Pour obtenir un affichage correct, en particulier quand des données + doivent être échangées, il est donc nécessaire d’expliciter + l’encodage + [Opquast Règle 225]. +

    +

    + Respect des standards, + cohérence : + Les documents XML imposent un encodage Unicode. + Ceci permet une communication dans toutes les langues et sur toutes + les plateformes, Unicode décrivant de façon universelle tous les + glyphes en usage. +

    +

    + Performance : + L’encodage le plus souvent le plus économe en quantité d’information + est UTF-8. + Sécurité : + De plus, UTF-8 permet de ne pas utiliser de BOM, lequel est parfois + mal pris en charge ou mal signalé par certains logiciels auteur. +

    +
  2. +
  3. +

    + La validité est un simple respect des standards. + De plus, il s’agit de la dimension la plus immédiatement visible de + la qualité d’un code et cela est également utile pédagogiquement. +

    +

    + Pour des raisons de maintenabilité et de + lisibilité, + il est important de coder par des entités les caractères + invisibles (mais pas les caractères affichables). +

    +
  4. +
  5. +

    + Ne pas confondre validité du balisage et conformité du document : + les différentes version du format HTML imposent un certain nombre de + contraintes supplémentaires, + en particulier l’unicité de l’id. +

    +

    + La conformité des documents HTML est, là aussi, + un simple respect des standards. +

    +
  6. +
  7. +

    + Respect des standards, + sécurité : + Si ce code doit être utilisé dans du XML, + par exemple dans un document HTML utilisant la syntaxe XHTML, + il est impératif de scrupuleusement respecter celle-ci. + En effet, la moindre erreur fait basculer les lecteurs en syntaxe + HTML, dont la sémantique est différentes pour certains éléments. +

    +

    + En syntaxe XHTML (XML), tout élément, même vide doit être fermé. + En syntaxe HTML, cela n’est pas imposé, mais il est utile pour + la lisibilité et + la compréhension de certains codes, donc pour leur + maintenabilité, + de toujours indiquer les balises de fin facultatives (p. ex. + </p>), + sauf peut-être pour les balises toujours vides, + pour lesquelles il n’y a aucune ambiguïté. +

    +

    + Le même raisonnement s’applique aux attributs. + Cela réduit également les risques d’erreur de lecture ou d’oubli + d’une fermeture. +

    +
  8. +
+ {% endblock recRationale %} +{% endembed %} \ No newline at end of file diff --git a/views/pages/guide-html.twig b/views/pages/guide-html.twig new file mode 100644 index 0000000..f621bcc --- /dev/null +++ b/views/pages/guide-html.twig @@ -0,0 +1,4 @@ +{% extends './views/layout/_page.twig' %} +{% set components = 'guide-html-*.twig'|glob %} +{% block pageTitle %}BCW-2 Recommandations pour le codage en HTML — Le beau code web{% endblock %} +{% block docTitle %}BCW-2 Recommandations pour le codage en HTML{% endblock %} diff --git a/views/pages/guide-javascript.twig b/views/pages/guide-javascript.twig new file mode 100644 index 0000000..0d58aee --- /dev/null +++ b/views/pages/guide-javascript.twig @@ -0,0 +1,4 @@ +{% extends './views/layout/_page.twig' %} +{% set components = 'guide-javascript-*.twig'|glob %} +{% block pageTitle %}BCW-4 Recommandations pour le codage en JavaScript — Le beau code web{% endblock %} +{% block docTitle %}BCW-4 Recommandations pour le codage en JavaScript{% endblock %} diff --git a/views/pages/guide-php.twig b/views/pages/guide-php.twig new file mode 100644 index 0000000..9c98c06 --- /dev/null +++ b/views/pages/guide-php.twig @@ -0,0 +1,4 @@ +{% extends './views/layout/_page.twig' %} +{% set components = 'guide-php-*.twig'|glob %} +{% block pageTitle %}BCW-5 Recommandations pour le codage en PHP — Le beau code web{% endblock %} +{% block docTitle %}BCW-5 Recommandations pour le codage en PHP{% endblock %} diff --git a/views/pages/guide-style-010-forme.twig b/views/pages/guide-style-010-forme.twig new file mode 100644 index 0000000..c23820e --- /dev/null +++ b/views/pages/guide-style-010-forme.twig @@ -0,0 +1,158 @@ +{% embed '_recommandation.twig' %} + {% set recId = 'forme' %} + {% block recTitle %} + Mise en forme des règles + {% endblock %} + {% block recContent %} +
    +
  1. + Dans une liste de sélecteurs, il est recommandé + de ne mettre qu’un sélecteur par ligne. +
  2. +
  3. + De même, il est recommandé + de ne mettre qu’une déclaration par ligne. +
  4. +
  5. + Chaque déclaration doit se terminer par un point-virgule ;, même quand celui-ci est facultatif. +
  6. +
  7. + Les espacements doivent être utilisés de façon cohérente sur l’ensemble d’un site. +
  8. +
  9. + Il est recommandé de ne pas mettre d’espace + entre une propriété et le séparateur :, + mais d’en mettre un systématiquement après ce séparateur. + De même, il est recommandé + de mettre un espace après chaque virgule , + dans une liste de valeurs, mais pas devant. + Il est également recommandé de faire précéder + les accolades ouvrantes { d’un espace. +
  10. +
+ + {% endblock recContent %} + {% block recRationale %} +
    +
  1. + La même logique préside aux trois premiers points : + un changement doit pouvoir être localisé sur une ou plusieurs lignes, + mais pas au sein d’une ligne. + La principale raison est la maintenabilité. + Ceci permet aux systèmes de versionnement, Git ou autre, de suivre + individuellement chaque modification, limitant ainsi les risques + de conflits au moment des fusions merge. + Accessoirement, cela permet aussi de faire des tests en commentant plus + aisément tel ou telle déclaration. + En effet, à titre de contre-exemple, si l’on plaçait des déclarations de + position, + top, + left et + right + sur une même ligne, il ne serait pas facile d’agir sur la seule déclaration + de top. +
  2. +
  3. + La raison la plus souvent invoquée pour la règle précédente, + « un changement par ligne », est la + lisibilité, + mais il semble que celle-ci dépende surtout des habitudes de chaque codeur. + C’est donc la principale raison du point n°4. +
  4. +
  5. + Le point n°5 est également motivé par des raisons + de lisibilité. + Les espaces recommandés permettent une séparation visuelle suffisante. + L’absence d’espace devant les séparateurs permet de respecter la + typographie de l’anglais, langue de référence du CSS, et donc d’assurer + une meilleure + cohérence + à un niveau international. +
  6. + + + + {% endblock recRationale %} +{% endembed %} \ No newline at end of file diff --git a/views/pages/guide-style.twig b/views/pages/guide-style.twig new file mode 100644 index 0000000..e9578a9 --- /dev/null +++ b/views/pages/guide-style.twig @@ -0,0 +1,40 @@ +{% extends './views/layout/_page.twig' %} +{% set components = 'guide-style-*.twig'|glob %} +{% block pageTitle %}BCW-3 Recommandations le codage CSS — Le beau code web{% endblock %} +{% block docTitle %}BCW-3 Recommandations le codage des feuilles de style{% endblock %} +{% block docIntroduction %} +
    +

    Introduction

    +

    + Les feuilles de style CSS sont principalement constituées de règles de style. + Chaque règle comporte un sélecteur ou une liste de sélecteurs + 1, + suivi d’une liste de déclarations (p.ex. 2). + Chaque déclaration est constituée d’une propriété 3 + suivie d’une valeur 4, + laquelle peut avoir plusieurs composantes 5. + Certaines propriétés peuvent admettre des déclarations comportant une + liste de valeurs 6. +

    +
    h1,
    +h2 {
    +	margin: 0 auto;
    +	color: green;
    +	border: 1px solid black;
    +	font-family: Arial, Helvetica, sans-serif;
    +}
    + +
    +{% endblock %} diff --git a/views/pages/index.twig b/views/pages/index.twig new file mode 100644 index 0000000..f022b36 --- /dev/null +++ b/views/pages/index.twig @@ -0,0 +1,8 @@ +{% extends './views/layout/_page.twig' %} +{% block pageTitle %}Le beau code web{% endblock %} +{% block docTitle %}Le beau code web{% endblock %} +{% block docContent %} + +{% endblock %} \ No newline at end of file diff --git a/views/pages/principes.twig b/views/pages/principes.twig new file mode 100644 index 0000000..b91a098 --- /dev/null +++ b/views/pages/principes.twig @@ -0,0 +1,275 @@ +{% extends './views/layout/_page.twig' %} +{% block pageTitle %}Principes — Le beau code web{% endblock %} +{% block docTitle %}BCW-0 Principes du « Beau code web »{% endblock %} +{% block docContent %} +
    +

    + À qui s’adresse ce guide + +

    +

    + Ce guide a été créé par des enseignants et professionnels du web de la communauté du master Web éditorial et stratégie UX. + Il s’adresse aux étudiants et aux professionnels de la communication au moyen + de sites web ou, plus généralement, d’applications web. +

    +
    +
    +

    + Objet de ce guide + +

    +

    + Ce guide a pour objet la conception technique d’applications web, dans son sens le plus général. Une application web peut ne proposer que de la consultation de contenu, jusqu’à la manipulation de données et de processus spécifiques (applications métier). + On entendra donc par applications web, notamment : +

    +
      +
    • les sites web (statiques, dynamiques, CMS, e-commerce, etc.),
    • +
    • les applications fonctionnant sur le web (dashboards, applications métiers, etc.),
    • +
    • les applications web destinées aux mobiles,
    • +
    +

    + dans la mesure où ces applications sont concernées : +

    +
      +
    • par les langages abordés,
    • +
    • par le public visé.
    • +
    +
    +
    +

    + Principes et objectifs + +

    + +
    +

    + 1. Principe de service de l’utilisateur + +

    +

    + Une application web est d’abord au service de ses utilisateurs, de ses lecteurs. + On s’attachera donc à l’expérience utilisateur également dans la façon de coder. +

    +
    + +
    +

    + 2. Objectif de sécurité + +

    +

    + Découle du principe de service : quand plusieurs façons de coder sont possibles, il faut s’efforcer de privilégier la plus sûre. +

    +
    + +
    +

    + 3. Objectif de performance + +

    +

    + Découle du principe de service : quand plusieurs façons de coder sont possibles, il faut s’efforcer de privilégier l’efficience, en temps d’exécution ou de chargement ou en ressources consommées. +

    +
    + +
    +

    + 4. Principe de maintenabilité + +

    +

    + Les applications web ont vocation à durer dans le temps. + Il convient donc de prévoir que leurs professionnels y reviennent régulièrement. + La maintenabilité est le fait de pouvoir comprendre un code aisément, + s’y repérer, y modifier ce qu’il est nécessaire de modifier, pas plus. +

    +
    + +
    +

    + 5. Objectif de respect des standards + +

    +

    + Découle du principe de maintenabilité : on ne devrait pas avoir à revenir sur un document quand il n’y a pas besoin de modifier son contenu. + Le respect des standards permet une plus grande durabilité du code. +

    +

    + Ce principe facilite aussi la collaboration entre plusieurs acteurs, simultanément ou au cours de la durée de vie d’un code. +

    +

    + Parmi les standards reconnus, on s’attachera en particulier à respecter l’esprit des Principes de conception du HTML [HTMLDP], notamment : + la compatibilité, + l’utilité, dont la priorité au terrain, + la modularité (separation of concerns), + l’interopérabilité et + l’accès universel. + La priorité au terrain impose, notamment, de s’attacher autant que possible aux usages déjà répandus, quand ils ne sont pas contraires aux grands principes retenus ici. +

    +
    + +
    +

    + 6. Objectif de lisibilité + +

    +

    + Découle du principe de maintenabilité : + le code doit minimiser la charge cognitive de sa lecture. + En particulier, il convient d’être régulier, d’éviter les formulations ambiguës ou techniquement ou conceptuellement complexes quand elles ne sont pas nécessaires. +

    +
    + +
    +

    + 7. Objectif de cohérence + +

    +

    + Découle du principe de Lisibilité : + la cohérence est le fait d’appliquer des choix de façon homogène au sein d’un projet ou d’un collectif de travail. + Elle permet ainsi d’alléger la charge cognitive pour lire, créer ou modifier un code. +

    +
    + +
    + +
    +

    + Glossaire + +

    +
    +

    Typographie

    +
    +
    alphanumérique
    +
    + Un caractère alphanumérique est un chiffre ou lettre latine, minuscule ou majuscule, sans accent ni diacritique. Certains langages ajoutent également le souligné (_). +
    +
    casse
    +
    La casse est la différence entre minuscules et majuscules.
    +
    + Du temps des presses mécaniques, la casse était le casier dans lequel on rangeait les caractères. Ainsi bas de casse, en anglais lower case, est synonyme de minuscule et haut de casse, en anglais upper case, de majuscule. + [Wikipedia] +
    +
    kebab-case
    +
    + Mots écrits en minuscules, joints par des tirets. +
    +
    + Le terme kebab désigne de la viande rôtie, en particulier à la broche. Dans le -kebab-case⊸, les mots sont comme embrochés. +
    +
    camelCase
    +
    + Mots collés entre eux, les initiales en majuscules sauf la première, les autres lettres en minuscules. +
    +
    + Le langage de programmation Camel a popularisé cette notation. + On dit parfois que les bosses sont au milieu comme pour un chameau. + En anglais, le mot camel désigne aussi bien un chameau 🐫 qu’un dromadaire 🐪. +
    +
    PascalCase
    +
    StudlyCase
    +
    + Mots collés entre eux, les initiales en majuscules, les autres lettres en minuscules. +
    +
    + Le langage de programmation Pascal a popularisé cette notation. + Le terme PascalCase est univoque. + Le terme StudlyCase, parfois employé, peut, lui, désigner d’autres écritures. +
    +
    +
    +
    +

    Modalités aux termes de la [RFC2119]

    +
    +
    doit
    +
    devra
    +
    obligatoire
    +
    Ce(s) terme(s) désigne(nt) une exigence absolue de ce guide [RFC2119, §1].
    +
    ne doit pas
    +
    ne devra pas
    +
    Ce(s) terme(s) désigne(nt) une interdiction absolue de ce guide [RFC2119, §2].
    +
    devrait
    +
    recommandé
    +
    Ce(s) terme(s) signifie(nt) qu’il peut exister des raisons valables dans des circonstances particulières pour ignorer un élément précis, mais toutes les implications doivent être comprises et soigneusement pesées avant de choisir une voie différente [RFC2119, §3].
    +
    ne devrait pas
    +
    non recommandé
    +
    Ce(s) terme(s) signifie(nt) qu’il peut exister des raisons valides dans des circonstances particulières quand le comportement spécifique est acceptable ou même utile, mais les répercussions complètent devraient être comprise et le cas soigneusement évalué avant d’implémenter [ceci] [RFC2119, §4].
    +
    peut
    +
    facultatif
    +
    Ce(s) terme(s) signifie(nt) que ce choix est vraiment facultatif [RFC2119, §5].
    +
    Un fabricant peut choisir d’inclure l’élément parce que un secteur particulier du marché le réclame ou parce que le fabricant pense que cela améliore le produit tandis qu’un autre fabricant peut omettre le même élément. Une mise en œuvre qui n’inclut pas une option particulière doit pouvoir interopérer avec une autre mise en œuvre qui n’inclut pas l’option, peut-être au prix de fonctionnalités réduites. Dans la même veine, une mise en œuvre qui n’inclut pas une option particulière doit être préparée à interopérer avec une autre mise en œuvre qui n’inclut pas l’option (excepté, bien sûr, pour la caractéristique fournie par l’option).
    +
    +
    +
    + +
    +

    + Références + +

    +
      +
    • + [HTMLDP] + van Kesteren, Anne (éd.), + Stachowiak, Maciej (éd.). + (). + HTML Design Principles. + W3C. + W3C working draft. +
    • +
    • + [RFC2119] + Bradner, Scott. + (). + Key words for use in RFCs to Indicate Requirement Levels. + IETF. + RFC 2119 / BCP 14. +
    • +
    • + [TechSEO] + Martin, Alexandra, + Chartier, Mathieu. + (). + Techniques de référencement web, Audit et suivi SEO. + Eyrolles. + 4e édition. +
    • +
    +
    + +
    +

    + Mentions légales + +

    +

    + Le beau code web est distribué sous licence libre + GNU GPL, version 3. +

    +

    + Le beau code web ne conserve pas de données personnelles, + ne dépose pas de cookies + et ne comporte pas de publicité ni de contenu sponsorisé, + mais son hébergeur peut avoir recours à l’un de ces moyens. +

    +

    + Le beau code web est hébergé par + Github à partir du dépôt Git + github.com/YannisDelmas/beau-code-web. + Il s’agit d’une œuvre collective dont les contributeurs sont listés sur ce dépôt. + Le directeur de la publication est + Yannis Delmas. + Il peut être contacté via les coordonnées indiquées sur + son site personnel. +

    +

    + Le thème utilisé emploie comme image de fond + « Rice Paper » + de Alte Mo [Subtle patterns]. + Certains exemples peuvent utiliser des images publiées par le site + LoremPixel.com. +

    +
    +{% endblock %} diff --git a/views/partials/_recommandation.twig b/views/partials/_recommandation.twig new file mode 100644 index 0000000..1c33628 --- /dev/null +++ b/views/partials/_recommandation.twig @@ -0,0 +1,11 @@ +
    +

    + {% block recTitle %}{% endblock %} + +

    + {% block recContent %}{% endblock %} +
    + Justification + {% block recRationale %}{% endblock %} +
    +
    \ No newline at end of file diff --git a/views/partials/_toc.twig b/views/partials/_toc.twig new file mode 100644 index 0000000..2fa424c --- /dev/null +++ b/views/partials/_toc.twig @@ -0,0 +1,17 @@ +{# Table des matières #} + From 43b779ac063dac1c32896429e54ffa644a7e776e Mon Sep 17 00:00:00 2001 From: Enguerran Weiss Date: Mon, 28 Mar 2022 10:16:39 +0200 Subject: [PATCH 10/14] proposition nouvelles structure --- Gruntfile.js | 16 +- _page.twig | 52 ---- _recommandation.twig | 11 - _toc.twig | 17 -- docs/guide-generalites.html | 161 ---------- docs/guide-html.html | 244 ---------------- docs/guide-style.html | 244 ---------------- guide-generalites-010-fichiers.twig | 2 +- guide-generalites.twig | 2 +- guide-html.twig | 2 +- guide-javascript.twig | 2 +- guide-php.twig | 2 +- guide-style.twig | 2 +- index.twig | 4 +- package.json | 2 +- principes.twig | 2 +- public/guide-generalites.html | 50 ++++ public/guide-html.html | 50 ++++ {docs => public}/guide-javascript.html | 0 {docs => public}/guide-php.html | 0 public/guide-style.html | 85 ++++++ {docs => public}/index.html | 0 {docs => public}/principes.html | 0 .../pages/guide-generalites-010-fichiers.twig | 110 ------- views/pages/guide-generalites.twig | 4 - views/pages/guide-html-010-valide.twig | 193 ------------ views/pages/guide-html.twig | 4 - views/pages/guide-javascript.twig | 4 - views/pages/guide-php.twig | 4 - views/pages/guide-style-010-forme.twig | 158 ---------- views/pages/guide-style.twig | 40 --- views/pages/index.twig | 8 - views/pages/principes.twig | 275 ------------------ 33 files changed, 203 insertions(+), 1547 deletions(-) delete mode 100644 _page.twig delete mode 100644 _recommandation.twig delete mode 100644 _toc.twig delete mode 100644 docs/guide-generalites.html delete mode 100644 docs/guide-html.html delete mode 100644 docs/guide-style.html create mode 100644 public/guide-generalites.html create mode 100644 public/guide-html.html rename {docs => public}/guide-javascript.html (100%) rename {docs => public}/guide-php.html (100%) create mode 100644 public/guide-style.html rename {docs => public}/index.html (100%) rename {docs => public}/principes.html (100%) delete mode 100644 views/pages/guide-generalites-010-fichiers.twig delete mode 100644 views/pages/guide-generalites.twig delete mode 100644 views/pages/guide-html-010-valide.twig delete mode 100644 views/pages/guide-html.twig delete mode 100644 views/pages/guide-javascript.twig delete mode 100644 views/pages/guide-php.twig delete mode 100644 views/pages/guide-style-010-forme.twig delete mode 100644 views/pages/guide-style.twig delete mode 100644 views/pages/index.twig delete mode 100644 views/pages/principes.twig diff --git a/Gruntfile.js b/Gruntfile.js index 12d5a87..cf7baf8 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,7 +1,7 @@ module.exports = function(grunt) { - let chalk = require('chalk'); - - let traceFile = function(f) { + const chalk = require('chalk'); + const publicFolder = 'public'; + const traceFile = function(f) { if ( grunt.file.isFile(f) ) { console.log(chalk.cyan(f), '→', chalk.cyan(grunt.task.current.data.dest)); } @@ -13,19 +13,19 @@ module.exports = function(grunt) { main: { expand: true, src: '{assets/**,*.html}', - dest: 'docs/', + dest: publicFolder+'/', filter: traceFile, }, JSLibs: { expand: true, flatten: true, src: 'node_modules/leader-line/leader-line.min.js', - dest: 'docs/assets/js/', + dest: publicFolder+'/assets/js/', filter: traceFile, }, licence: { src: 'LICENSE', - dest: 'docs/LICENSE.txt', + dest: publicFolder+'/LICENSE.txt', filter: traceFile, }, }, @@ -33,7 +33,7 @@ module.exports = function(grunt) { options: { functions: { asset: function(arg) { - return grunt.file.expand({cwd: 'docs'}, 'assets/**/'+ arg)[0]; + return grunt.file.expand({cwd: publicFolder}, 'assets/**/'+ arg)[0]; }, }, filters: { @@ -47,7 +47,7 @@ module.exports = function(grunt) { expand: true, src: ["*.twig", "!*-+([0-9])?(-*).twig", "!_*.twig"], // tous les modèles TWIG, hormis les composants et les partiels - dest: "docs/", + dest: publicFolder+'/', ext: ".html" } ] diff --git a/_page.twig b/_page.twig deleted file mode 100644 index fd4629b..0000000 --- a/_page.twig +++ /dev/null @@ -1,52 +0,0 @@ - - - - {# Ne pas retirer la ligne suivante, qui ne s'applique pas à ce document. #} - - {% set prismjs = 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.25.0' %} - {% block head %} - - - - {% block pageTitle %}Le beau code web{% endblock %} - - - - {% endblock %} - - -
    -

    {% block docTitle %}Le beau code web{% endblock %}

    -
    -
    - {% block docIntroduction %}{% endblock %} - {% block docContent %} - {% for component in components %} - {% include component %} - {% endfor %} - {% endblock %} - {% if block('docContent')|trim is empty %} -

    - Il n’y a pas de recommandation validée pour l’instant. - N’hésitez pas à consulter notre dépôt Github pour faire des propositions. -

    - {% endif %} -
    - - - - - - - - \ No newline at end of file diff --git a/_recommandation.twig b/_recommandation.twig deleted file mode 100644 index 1c33628..0000000 --- a/_recommandation.twig +++ /dev/null @@ -1,11 +0,0 @@ -
    -

    - {% block recTitle %}{% endblock %} - -

    - {% block recContent %}{% endblock %} -
    - Justification - {% block recRationale %}{% endblock %} -
    -
    \ No newline at end of file diff --git a/_toc.twig b/_toc.twig deleted file mode 100644 index 2fa424c..0000000 --- a/_toc.twig +++ /dev/null @@ -1,17 +0,0 @@ -{# Table des matières #} - diff --git a/docs/guide-generalites.html b/docs/guide-generalites.html deleted file mode 100644 index 367d81d..0000000 --- a/docs/guide-generalites.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - BCW-1 Recommandations générales — Le beau code web - - - - - - -
    -

    BCW-1 Recommandations générales pour le codage web

    -
    -
    - - - -
    -

    - - Noms de fichiers - - -

    - -

    - Les noms des fichiers et dossiers utilisés sur le web doivent respecter les règles suivantes. -

    -
      -
    1. - Écriture recommandée en kebab-case, sans espace, ni accent (ée), ni diacritique (çc), ni caractère spécial, ni ponctuation. -

    2. -
    3. -

      - Il est recommandé de ne pas dépasser 32 caractères, extension comprise. -

      - -
    4. -
    5. -

      - Les mots employés devraient refléter de façon claire et compréhensible le contenu ou la fonction dans le site du fichier ou dossier. - Il convient donc d’éviter des mots très génériques, tels que page ou article, ou trop ambigus. - On devrait également éviter les stop words (articles, conjonctions…), qui allongent l’URL sans apporter de contenu sémantique. -

      - -
    6. -
    7. -

      Une ou plusieurs extensions doivent indiquer le format d'un document.

      - -
    8. -
    - -
    - Justification - -
      -
    1. -

      - respect des standards - Les adresses web sont définies par le document Uniform Resource Identifier (URI): Generic Syntax [RFC 3986]. - Le chemin est sensible à la casse. - Comme certains systèmes d’exploitation n’y sont pas sensibles, pour éviter des liens brisés et des erreurs dans l’arborescence, il est habituel de se limiter à des minuscules, même si on pourrait contourner ces difficultés en formulant une règle plus précise. - Les caractères autres qu’alphanumériques, -, ., _ et ~ sont recodés. - Les caractères . et ~ ayant une signification particulière dans certains contextes et le souligné _ n’étant pas traité comme un séparateur par les moteurs de recherche - (cf. Web Rank Info : Référencement naturel : dans les URL, le tiret meilleur que l’underscore), les seuls caractères toujours sûrs pour un nom de fichier ou dossier, hors extension, sont les lettres, les chiffres et le tiret -. -

      -

      - lisibilité - Pour gagner en lisibilité des adresses, l’habitude est de remplacer tout caractère susceptible d’être encodé dans les bares d’adresse et dans la transcription des URL, par exemple pour des bibliographies. - Ceci inclut dont les espaces, les accents et certains caractères spéciaux. -

      -
    2. -
    3. -

      - maintenabilité - Plusieurs des systèmes de fichiers et ou explorateurs de fichiers ont une limitation d'environ 250 caractères Unicode (les URL ont une limite supérieure). - Toutefois, pour permettre un archivage sur disque optique, il faut adopter la limite du système de fichiers UDF, qui limite les chemins à à 127 caractères Unicode [Wikipedia UDF].

      -

      - lisibilité - Nombre d’explorateurs de fichiers des OS ont, par défaut, une configuration ni n’affiche qu’une vingtaine à une trentaine de caractères. -

      -
    4. -
    5. -

      - respect des standards - Cette règle découle du respect des méthodes d’indexation des moteurs de recherche. - Sur le référencement naturel (SEO) et sa dimension technique, cf. [TechSEO]. - On notera que les stop words sont purement et simplement ignorés par l’indexation des moteurs de recherche web. -

      -

      - service - Ceci rend également les URL plus simple à retenir et, le cas échéant, à transcrire, pour les utilisateurs. -

      -

      - maintenabilité - La persistance des chemins aide à maintenir l’arborescence d’un site. -

      -
    6. -
    7. -

      - lisibilité - Mettre une extension et l’afficher limite les risques d’erreurs de format. -

      -

      - respect des standards - Nombre de serveurs sont paramétrés pour inférer le format des documents à partir de leurs extensions [Apache Mod_mime]. -

      -
    8. -
    - -
    -
    - - - -
    - - - - - - - - \ No newline at end of file diff --git a/docs/guide-html.html b/docs/guide-html.html deleted file mode 100644 index 2313709..0000000 --- a/docs/guide-html.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - - - - - BCW-2 Recommandations pour le codage en HTML — Le beau code web - - - - - - -
    -

    BCW-2 Recommandations pour le codage en HTML

    -
    -
    - - - -
    -

    - - Validité du code - - -

    - -
      -
    1. -

      - L’encodage doit être précisé - [Opquast Règle 225]. - Recommandé : UTF-8, - sans BOM - [Opquast Règle 226]. -

      - -
    2. -
    3. -

      - Le balisage doit être valide. - En particulier, les éléments doivent être correctement imbriqués - et les caractères spéciaux doivent toujours être correctement échappés par des entités, en particulier les & dans les adresses. -

      - -
    4. -
    5. -

      - Le document devrait être - conforme à une version donnée du format choisi. - Format recommandé : - HTML5 en syntaxe HTML. -

      - -
    6. -
    7. -

      - Les éléments devraient - toujours avoir une balise de fermeture, - sauf éventuellement pour les éléments toujours vides - (link, - img, - br). -

      -

      - De même, les valeurs d’attribut devraient toujours être entre guillemets - (simples ' - ou doubles "), - sauf peut-être pour les attributs booléens (p. ex. - required, - disabled ou - open). -

      - -
    8. -
    - -
    - Justification - -
      -
    1. -

      - Service, - sécurité : - Les éditeurs de code devinent souvent l’encodage d’une page. - En revanche, les navigateurs utilisent un encodage par défaut, - quand celui-ci n’est pas spécifié. - Pour obtenir un affichage correct, en particulier quand des données - doivent être échangées, il est donc nécessaire d’expliciter - l’encodage - [Opquast Règle 225]. -

      -

      - Respect des standards, - cohérence : - Les documents XML imposent un encodage Unicode. - Ceci permet une communication dans toutes les langues et sur toutes - les plateformes, Unicode décrivant de façon universelle tous les - glyphes en usage. -

      -

      - Performance : - L’encodage le plus souvent le plus économe en quantité d’information - est UTF-8. - Sécurité : - De plus, UTF-8 permet de ne pas utiliser de BOM, lequel est parfois - mal pris en charge ou mal signalé par certains logiciels auteur. -

      -
    2. -
    3. -

      - La validité est un simple respect des standards. - De plus, il s’agit de la dimension la plus immédiatement visible de - la qualité d’un code et cela est également utile pédagogiquement. -

      -

      - Pour des raisons de maintenabilité et de - lisibilité, - il est important de coder par des entités les caractères - invisibles (mais pas les caractères affichables). -

      -
    4. -
    5. -

      - Ne pas confondre validité du balisage et conformité du document : - les différentes version du format HTML imposent un certain nombre de - contraintes supplémentaires, - en particulier l’unicité de l’id. -

      -

      - La conformité des documents HTML est, là aussi, - un simple respect des standards. -

      -
    6. -
    7. -

      - Respect des standards, - sécurité : - Si ce code doit être utilisé dans du XML, - par exemple dans un document HTML utilisant la syntaxe XHTML, - il est impératif de scrupuleusement respecter celle-ci. - En effet, la moindre erreur fait basculer les lecteurs en syntaxe - HTML, dont la sémantique est différentes pour certains éléments. -

      -

      - En syntaxe XHTML (XML), tout élément, même vide doit être fermé. - En syntaxe HTML, cela n’est pas imposé, mais il est utile pour - la lisibilité et - la compréhension de certains codes, donc pour leur - maintenabilité, - de toujours indiquer les balises de fin facultatives (p. ex. - </p>), - sauf peut-être pour les balises toujours vides, - pour lesquelles il n’y a aucune ambiguïté. -

      -

      - Le même raisonnement s’applique aux attributs. - Cela réduit également les risques d’erreur de lecture ou d’oubli - d’une fermeture. -

      -
    8. -
    - -
    -
    - - - -
    - - - - - - - - \ No newline at end of file diff --git a/docs/guide-style.html b/docs/guide-style.html deleted file mode 100644 index b097b34..0000000 --- a/docs/guide-style.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - - - - - BCW-3 Recommandations le codage CSS — Le beau code web - - - - - - -
    -

    BCW-3 Recommandations le codage des feuilles de style

    -
    -
    - -
    -

    Introduction

    -

    - Les feuilles de style CSS sont principalement constituées de règles de style. - Chaque règle comporte un sélecteur ou une liste de sélecteurs - 1, - suivi d’une liste de déclarations (p.ex. 2). - Chaque déclaration est constituée d’une propriété 3 - suivie d’une valeur 4, - laquelle peut avoir plusieurs composantes 5. - Certaines propriétés peuvent admettre des déclarations comportant une - liste de valeurs 6. -

    -
    h1,
    -h2 {
    -	margin: 0 auto;
    -	color: green;
    -	border: 1px solid black;
    -	font-family: Arial, Helvetica, sans-serif;
    -}
    - -
    - - - -
    -

    - - Mise en forme des règles - - -

    - -
      -
    1. - Dans une liste de sélecteurs, il est recommandé - de ne mettre qu’un sélecteur par ligne. -
    2. -
    3. - De même, il est recommandé - de ne mettre qu’une déclaration par ligne. -
    4. -
    5. - Chaque déclaration doit se terminer par un point-virgule ;, même quand celui-ci est facultatif. -
    6. -
    7. - Les espacements doivent être utilisés de façon cohérente sur l’ensemble d’un site. -
    8. -
    9. - Il est recommandé de ne pas mettre d’espace - entre une propriété et le séparateur :, - mais d’en mettre un systématiquement après ce séparateur. - De même, il est recommandé - de mettre un espace après chaque virgule , - dans une liste de valeurs, mais pas devant. - Il est également recommandé de faire précéder - les accolades ouvrantes { d’un espace. -
    10. -
    - - -
    - Justification - -
      -
    1. - La même logique préside aux trois premiers points : - un changement doit pouvoir être localisé sur une ou plusieurs lignes, - mais pas au sein d’une ligne. - La principale raison est la maintenabilité. - Ceci permet aux systèmes de versionnement, Git ou autre, de suivre - individuellement chaque modification, limitant ainsi les risques - de conflits au moment des fusions merge. - Accessoirement, cela permet aussi de faire des tests en commentant plus - aisément tel ou telle déclaration. - En effet, à titre de contre-exemple, si l’on plaçait des déclarations de - position, - top, - left et - right - sur une même ligne, il ne serait pas facile d’agir sur la seule déclaration - de top. -
    2. -
    3. - La raison la plus souvent invoquée pour la règle précédente, - « un changement par ligne », est la - lisibilité, - mais il semble que celle-ci dépende surtout des habitudes de chaque codeur. - C’est donc la principale raison du point n°4. -
    4. -
    5. - Le point n°5 est également motivé par des raisons - de lisibilité. - Les espaces recommandés permettent une séparation visuelle suffisante. - L’absence d’espace devant les séparateurs permet de respecter la - typographie de l’anglais, langue de référence du CSS, et donc d’assurer - une meilleure - cohérence - à un niveau international. -
    6. - - - - -
    -
    - - - -
    - - - - - - - - \ No newline at end of file diff --git a/guide-generalites-010-fichiers.twig b/guide-generalites-010-fichiers.twig index 357ff90..cef0d5f 100644 --- a/guide-generalites-010-fichiers.twig +++ b/guide-generalites-010-fichiers.twig @@ -1,4 +1,4 @@ -{% embed '_recommandation.twig' %} +{% embed './views/partials/_recommandation.twig' %} {% set recId = 'nom-fichiers' %} {% block recTitle %} Noms de fichiers diff --git a/guide-generalites.twig b/guide-generalites.twig index 95283fd..5407b03 100644 --- a/guide-generalites.twig +++ b/guide-generalites.twig @@ -1,4 +1,4 @@ -{% extends '_page.twig' %} +{% extends './views/layout/_page.twig' %} {% block pageTitle %}BCW-1 Recommandations générales — Le beau code web{% endblock %} {% block docTitle %}BCW-1 Recommandations générales pour le codage web{% endblock %} {% set components = 'guide-generalites-*.twig'|glob %} \ No newline at end of file diff --git a/guide-html.twig b/guide-html.twig index de77944..f621bcc 100644 --- a/guide-html.twig +++ b/guide-html.twig @@ -1,4 +1,4 @@ -{% extends '_page.twig' %} +{% extends './views/layout/_page.twig' %} {% set components = 'guide-html-*.twig'|glob %} {% block pageTitle %}BCW-2 Recommandations pour le codage en HTML — Le beau code web{% endblock %} {% block docTitle %}BCW-2 Recommandations pour le codage en HTML{% endblock %} diff --git a/guide-javascript.twig b/guide-javascript.twig index e9e394a..0d58aee 100644 --- a/guide-javascript.twig +++ b/guide-javascript.twig @@ -1,4 +1,4 @@ -{% extends '_page.twig' %} +{% extends './views/layout/_page.twig' %} {% set components = 'guide-javascript-*.twig'|glob %} {% block pageTitle %}BCW-4 Recommandations pour le codage en JavaScript — Le beau code web{% endblock %} {% block docTitle %}BCW-4 Recommandations pour le codage en JavaScript{% endblock %} diff --git a/guide-php.twig b/guide-php.twig index 284d090..9c98c06 100644 --- a/guide-php.twig +++ b/guide-php.twig @@ -1,4 +1,4 @@ -{% extends '_page.twig' %} +{% extends './views/layout/_page.twig' %} {% set components = 'guide-php-*.twig'|glob %} {% block pageTitle %}BCW-5 Recommandations pour le codage en PHP — Le beau code web{% endblock %} {% block docTitle %}BCW-5 Recommandations pour le codage en PHP{% endblock %} diff --git a/guide-style.twig b/guide-style.twig index 92fa116..e9578a9 100644 --- a/guide-style.twig +++ b/guide-style.twig @@ -1,4 +1,4 @@ -{% extends '_page.twig' %} +{% extends './views/layout/_page.twig' %} {% set components = 'guide-style-*.twig'|glob %} {% block pageTitle %}BCW-3 Recommandations le codage CSS — Le beau code web{% endblock %} {% block docTitle %}BCW-3 Recommandations le codage des feuilles de style{% endblock %} diff --git a/index.twig b/index.twig index a5566dd..c263d0c 100644 --- a/index.twig +++ b/index.twig @@ -1,8 +1,8 @@ -{% extends '_page.twig' %} +{% extends './views/layout/_page.twig' %} {% block pageTitle %}Le beau code web{% endblock %} {% block docTitle %}Le beau code web{% endblock %} {% block docContent %} {% endblock %} \ No newline at end of file diff --git a/package.json b/package.json index 66d27df..bd88b5c 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "build": { "patterns": ".", "extensions": "twig,html,js,css", - "ignore": ["node_modules", "vendor", "docs"], + "ignore": ["node_modules", "vendor", "public"], "delay": 1000 } }, diff --git a/principes.twig b/principes.twig index 09174fa..b91a098 100644 --- a/principes.twig +++ b/principes.twig @@ -1,4 +1,4 @@ -{% extends '_page.twig' %} +{% extends './views/layout/_page.twig' %} {% block pageTitle %}Principes — Le beau code web{% endblock %} {% block docTitle %}BCW-0 Principes du « Beau code web »{% endblock %} {% block docContent %} diff --git a/public/guide-generalites.html b/public/guide-generalites.html new file mode 100644 index 0000000..2f2fdbb --- /dev/null +++ b/public/guide-generalites.html @@ -0,0 +1,50 @@ + + + + + + + + + + + BCW-1 Recommandations générales — Le beau code web + + + + + + +
    +

    BCW-1 Recommandations générales pour le codage web

    +
    +
    + + + + + +

    + Il n’y a pas de recommandation validée pour l’instant. + N’hésitez pas à consulter notre dépôt Github pour faire des propositions. +

    + +
    + + + + + + + + \ No newline at end of file diff --git a/public/guide-html.html b/public/guide-html.html new file mode 100644 index 0000000..b20db41 --- /dev/null +++ b/public/guide-html.html @@ -0,0 +1,50 @@ + + + + + + + + + + + BCW-2 Recommandations pour le codage en HTML — Le beau code web + + + + + + +
    +

    BCW-2 Recommandations pour le codage en HTML

    +
    +
    + + + + + +

    + Il n’y a pas de recommandation validée pour l’instant. + N’hésitez pas à consulter notre dépôt Github pour faire des propositions. +

    + +
    + + + + + + + + \ No newline at end of file diff --git a/docs/guide-javascript.html b/public/guide-javascript.html similarity index 100% rename from docs/guide-javascript.html rename to public/guide-javascript.html diff --git a/docs/guide-php.html b/public/guide-php.html similarity index 100% rename from docs/guide-php.html rename to public/guide-php.html diff --git a/public/guide-style.html b/public/guide-style.html new file mode 100644 index 0000000..bd08a3b --- /dev/null +++ b/public/guide-style.html @@ -0,0 +1,85 @@ + + + + + + + + + + + BCW-3 Recommandations le codage CSS — Le beau code web + + + + + + +
    +

    BCW-3 Recommandations le codage des feuilles de style

    +
    +
    + +
    +

    Introduction

    +

    + Les feuilles de style CSS sont principalement constituées de règles de style. + Chaque règle comporte un sélecteur ou une liste de sélecteurs + 1, + suivi d’une liste de déclarations (p.ex. 2). + Chaque déclaration est constituée d’une propriété 3 + suivie d’une valeur 4, + laquelle peut avoir plusieurs composantes 5. + Certaines propriétés peuvent admettre des déclarations comportant une + liste de valeurs 6. +

    +
    h1,
    +h2 {
    +	margin: 0 auto;
    +	color: green;
    +	border: 1px solid black;
    +	font-family: Arial, Helvetica, sans-serif;
    +}
    + +
    + + + + + +

    + Il n’y a pas de recommandation validée pour l’instant. + N’hésitez pas à consulter notre dépôt Github pour faire des propositions. +

    + +
    + + + + + + + + \ No newline at end of file diff --git a/docs/index.html b/public/index.html similarity index 100% rename from docs/index.html rename to public/index.html diff --git a/docs/principes.html b/public/principes.html similarity index 100% rename from docs/principes.html rename to public/principes.html diff --git a/views/pages/guide-generalites-010-fichiers.twig b/views/pages/guide-generalites-010-fichiers.twig deleted file mode 100644 index 357ff90..0000000 --- a/views/pages/guide-generalites-010-fichiers.twig +++ /dev/null @@ -1,110 +0,0 @@ -{% embed '_recommandation.twig' %} - {% set recId = 'nom-fichiers' %} - {% block recTitle %} - Noms de fichiers - {% endblock %} - {% block recContent %} -

    - Les noms des fichiers et dossiers utilisés sur le web doivent respecter les règles suivantes. -

    -
      -
    1. - Écriture recommandée en kebab-case, sans espace, ni accent (ée), ni diacritique (çc), ni caractère spécial, ni ponctuation. -

    2. -
    3. -

      - Il est recommandé de ne pas dépasser 32 caractères, extension comprise. -

      - -
    4. -
    5. -

      - Les mots employés devraient refléter de façon claire et compréhensible le contenu ou la fonction dans le site du fichier ou dossier. - Il convient donc d’éviter des mots très génériques, tels que page ou article, ou trop ambigus. - On devrait également éviter les stop words (articles, conjonctions…), qui allongent l’URL sans apporter de contenu sémantique. -

      - -
    6. -
    7. -

      Une ou plusieurs extensions doivent indiquer le format d'un document.

      - -
    8. -
    - {% endblock recContent %} - {% block recRationale %} -
      -
    1. -

      - respect des standards - Les adresses web sont définies par le document Uniform Resource Identifier (URI): Generic Syntax [RFC 3986]. - Le chemin est sensible à la casse. - Comme certains systèmes d’exploitation n’y sont pas sensibles, pour éviter des liens brisés et des erreurs dans l’arborescence, il est habituel de se limiter à des minuscules, même si on pourrait contourner ces difficultés en formulant une règle plus précise. - Les caractères autres qu’alphanumériques, -, ., _ et ~ sont recodés. - Les caractères . et ~ ayant une signification particulière dans certains contextes et le souligné _ n’étant pas traité comme un séparateur par les moteurs de recherche - (cf. Web Rank Info : Référencement naturel : dans les URL, le tiret meilleur que l’underscore), les seuls caractères toujours sûrs pour un nom de fichier ou dossier, hors extension, sont les lettres, les chiffres et le tiret -. -

      -

      - lisibilité - Pour gagner en lisibilité des adresses, l’habitude est de remplacer tout caractère susceptible d’être encodé dans les bares d’adresse et dans la transcription des URL, par exemple pour des bibliographies. - Ceci inclut dont les espaces, les accents et certains caractères spéciaux. -

      -
    2. -
    3. -

      - maintenabilité - Plusieurs des systèmes de fichiers et ou explorateurs de fichiers ont une limitation d'environ 250 caractères Unicode (les URL ont une limite supérieure). - Toutefois, pour permettre un archivage sur disque optique, il faut adopter la limite du système de fichiers UDF, qui limite les chemins à à 127 caractères Unicode [Wikipedia UDF].

      -

      - lisibilité - Nombre d’explorateurs de fichiers des OS ont, par défaut, une configuration ni n’affiche qu’une vingtaine à une trentaine de caractères. -

      -
    4. -
    5. -

      - respect des standards - Cette règle découle du respect des méthodes d’indexation des moteurs de recherche. - Sur le référencement naturel (SEO) et sa dimension technique, cf. [TechSEO]. - On notera que les stop words sont purement et simplement ignorés par l’indexation des moteurs de recherche web. -

      -

      - service - Ceci rend également les URL plus simple à retenir et, le cas échéant, à transcrire, pour les utilisateurs. -

      -

      - maintenabilité - La persistance des chemins aide à maintenir l’arborescence d’un site. -

      -
    6. -
    7. -

      - lisibilité - Mettre une extension et l’afficher limite les risques d’erreurs de format. -

      -

      - respect des standards - Nombre de serveurs sont paramétrés pour inférer le format des documents à partir de leurs extensions [Apache Mod_mime]. -

      -
    8. -
    - {% endblock recRationale %} -{% endembed %} \ No newline at end of file diff --git a/views/pages/guide-generalites.twig b/views/pages/guide-generalites.twig deleted file mode 100644 index 5407b03..0000000 --- a/views/pages/guide-generalites.twig +++ /dev/null @@ -1,4 +0,0 @@ -{% extends './views/layout/_page.twig' %} -{% block pageTitle %}BCW-1 Recommandations générales — Le beau code web{% endblock %} -{% block docTitle %}BCW-1 Recommandations générales pour le codage web{% endblock %} -{% set components = 'guide-generalites-*.twig'|glob %} \ No newline at end of file diff --git a/views/pages/guide-html-010-valide.twig b/views/pages/guide-html-010-valide.twig deleted file mode 100644 index bf30a50..0000000 --- a/views/pages/guide-html-010-valide.twig +++ /dev/null @@ -1,193 +0,0 @@ -{% embed '_recommandation.twig' %} - {% set recId = 'validite' %} - {% block recTitle %} - Validité du code - {% endblock %} - {% block recContent %} -
      -
    1. -

      - L’encodage doit être précisé - [Opquast Règle 225]. - Recommandé : UTF-8, - sans BOM - [Opquast Règle 226]. -

      - -
    2. -
    3. -

      - Le balisage doit être valide. - En particulier, les éléments doivent être correctement imbriqués - et les caractères spéciaux doivent toujours être correctement échappés par des entités, en particulier les & dans les adresses. -

      - -
    4. -
    5. -

      - Le document devrait être - conforme à une version donnée du format choisi. - Format recommandé : - HTML5 en syntaxe HTML. -

      - -
    6. -
    7. -

      - Les éléments devraient - toujours avoir une balise de fermeture, - sauf éventuellement pour les éléments toujours vides - (link, - img, - br). -

      -

      - De même, les valeurs d’attribut devraient toujours être entre guillemets - (simples ' - ou doubles "), - sauf peut-être pour les attributs booléens (p. ex. - required, - disabled ou - open). -

      - -
    8. -
    - {% endblock recContent %} - {% block recRationale %} -
      -
    1. -

      - Service, - sécurité : - Les éditeurs de code devinent souvent l’encodage d’une page. - En revanche, les navigateurs utilisent un encodage par défaut, - quand celui-ci n’est pas spécifié. - Pour obtenir un affichage correct, en particulier quand des données - doivent être échangées, il est donc nécessaire d’expliciter - l’encodage - [Opquast Règle 225]. -

      -

      - Respect des standards, - cohérence : - Les documents XML imposent un encodage Unicode. - Ceci permet une communication dans toutes les langues et sur toutes - les plateformes, Unicode décrivant de façon universelle tous les - glyphes en usage. -

      -

      - Performance : - L’encodage le plus souvent le plus économe en quantité d’information - est UTF-8. - Sécurité : - De plus, UTF-8 permet de ne pas utiliser de BOM, lequel est parfois - mal pris en charge ou mal signalé par certains logiciels auteur. -

      -
    2. -
    3. -

      - La validité est un simple respect des standards. - De plus, il s’agit de la dimension la plus immédiatement visible de - la qualité d’un code et cela est également utile pédagogiquement. -

      -

      - Pour des raisons de maintenabilité et de - lisibilité, - il est important de coder par des entités les caractères - invisibles (mais pas les caractères affichables). -

      -
    4. -
    5. -

      - Ne pas confondre validité du balisage et conformité du document : - les différentes version du format HTML imposent un certain nombre de - contraintes supplémentaires, - en particulier l’unicité de l’id. -

      -

      - La conformité des documents HTML est, là aussi, - un simple respect des standards. -

      -
    6. -
    7. -

      - Respect des standards, - sécurité : - Si ce code doit être utilisé dans du XML, - par exemple dans un document HTML utilisant la syntaxe XHTML, - il est impératif de scrupuleusement respecter celle-ci. - En effet, la moindre erreur fait basculer les lecteurs en syntaxe - HTML, dont la sémantique est différentes pour certains éléments. -

      -

      - En syntaxe XHTML (XML), tout élément, même vide doit être fermé. - En syntaxe HTML, cela n’est pas imposé, mais il est utile pour - la lisibilité et - la compréhension de certains codes, donc pour leur - maintenabilité, - de toujours indiquer les balises de fin facultatives (p. ex. - </p>), - sauf peut-être pour les balises toujours vides, - pour lesquelles il n’y a aucune ambiguïté. -

      -

      - Le même raisonnement s’applique aux attributs. - Cela réduit également les risques d’erreur de lecture ou d’oubli - d’une fermeture. -

      -
    8. -
    - {% endblock recRationale %} -{% endembed %} \ No newline at end of file diff --git a/views/pages/guide-html.twig b/views/pages/guide-html.twig deleted file mode 100644 index f621bcc..0000000 --- a/views/pages/guide-html.twig +++ /dev/null @@ -1,4 +0,0 @@ -{% extends './views/layout/_page.twig' %} -{% set components = 'guide-html-*.twig'|glob %} -{% block pageTitle %}BCW-2 Recommandations pour le codage en HTML — Le beau code web{% endblock %} -{% block docTitle %}BCW-2 Recommandations pour le codage en HTML{% endblock %} diff --git a/views/pages/guide-javascript.twig b/views/pages/guide-javascript.twig deleted file mode 100644 index 0d58aee..0000000 --- a/views/pages/guide-javascript.twig +++ /dev/null @@ -1,4 +0,0 @@ -{% extends './views/layout/_page.twig' %} -{% set components = 'guide-javascript-*.twig'|glob %} -{% block pageTitle %}BCW-4 Recommandations pour le codage en JavaScript — Le beau code web{% endblock %} -{% block docTitle %}BCW-4 Recommandations pour le codage en JavaScript{% endblock %} diff --git a/views/pages/guide-php.twig b/views/pages/guide-php.twig deleted file mode 100644 index 9c98c06..0000000 --- a/views/pages/guide-php.twig +++ /dev/null @@ -1,4 +0,0 @@ -{% extends './views/layout/_page.twig' %} -{% set components = 'guide-php-*.twig'|glob %} -{% block pageTitle %}BCW-5 Recommandations pour le codage en PHP — Le beau code web{% endblock %} -{% block docTitle %}BCW-5 Recommandations pour le codage en PHP{% endblock %} diff --git a/views/pages/guide-style-010-forme.twig b/views/pages/guide-style-010-forme.twig deleted file mode 100644 index c23820e..0000000 --- a/views/pages/guide-style-010-forme.twig +++ /dev/null @@ -1,158 +0,0 @@ -{% embed '_recommandation.twig' %} - {% set recId = 'forme' %} - {% block recTitle %} - Mise en forme des règles - {% endblock %} - {% block recContent %} -
      -
    1. - Dans une liste de sélecteurs, il est recommandé - de ne mettre qu’un sélecteur par ligne. -
    2. -
    3. - De même, il est recommandé - de ne mettre qu’une déclaration par ligne. -
    4. -
    5. - Chaque déclaration doit se terminer par un point-virgule ;, même quand celui-ci est facultatif. -
    6. -
    7. - Les espacements doivent être utilisés de façon cohérente sur l’ensemble d’un site. -
    8. -
    9. - Il est recommandé de ne pas mettre d’espace - entre une propriété et le séparateur :, - mais d’en mettre un systématiquement après ce séparateur. - De même, il est recommandé - de mettre un espace après chaque virgule , - dans une liste de valeurs, mais pas devant. - Il est également recommandé de faire précéder - les accolades ouvrantes { d’un espace. -
    10. -
    - - {% endblock recContent %} - {% block recRationale %} -
      -
    1. - La même logique préside aux trois premiers points : - un changement doit pouvoir être localisé sur une ou plusieurs lignes, - mais pas au sein d’une ligne. - La principale raison est la maintenabilité. - Ceci permet aux systèmes de versionnement, Git ou autre, de suivre - individuellement chaque modification, limitant ainsi les risques - de conflits au moment des fusions merge. - Accessoirement, cela permet aussi de faire des tests en commentant plus - aisément tel ou telle déclaration. - En effet, à titre de contre-exemple, si l’on plaçait des déclarations de - position, - top, - left et - right - sur une même ligne, il ne serait pas facile d’agir sur la seule déclaration - de top. -
    2. -
    3. - La raison la plus souvent invoquée pour la règle précédente, - « un changement par ligne », est la - lisibilité, - mais il semble que celle-ci dépende surtout des habitudes de chaque codeur. - C’est donc la principale raison du point n°4. -
    4. -
    5. - Le point n°5 est également motivé par des raisons - de lisibilité. - Les espaces recommandés permettent une séparation visuelle suffisante. - L’absence d’espace devant les séparateurs permet de respecter la - typographie de l’anglais, langue de référence du CSS, et donc d’assurer - une meilleure - cohérence - à un niveau international. -
    6. - - - - {% endblock recRationale %} -{% endembed %} \ No newline at end of file diff --git a/views/pages/guide-style.twig b/views/pages/guide-style.twig deleted file mode 100644 index e9578a9..0000000 --- a/views/pages/guide-style.twig +++ /dev/null @@ -1,40 +0,0 @@ -{% extends './views/layout/_page.twig' %} -{% set components = 'guide-style-*.twig'|glob %} -{% block pageTitle %}BCW-3 Recommandations le codage CSS — Le beau code web{% endblock %} -{% block docTitle %}BCW-3 Recommandations le codage des feuilles de style{% endblock %} -{% block docIntroduction %} -
      -

      Introduction

      -

      - Les feuilles de style CSS sont principalement constituées de règles de style. - Chaque règle comporte un sélecteur ou une liste de sélecteurs - 1, - suivi d’une liste de déclarations (p.ex. 2). - Chaque déclaration est constituée d’une propriété 3 - suivie d’une valeur 4, - laquelle peut avoir plusieurs composantes 5. - Certaines propriétés peuvent admettre des déclarations comportant une - liste de valeurs 6. -

      -
      h1,
      -h2 {
      -	margin: 0 auto;
      -	color: green;
      -	border: 1px solid black;
      -	font-family: Arial, Helvetica, sans-serif;
      -}
      - -
      -{% endblock %} diff --git a/views/pages/index.twig b/views/pages/index.twig deleted file mode 100644 index f022b36..0000000 --- a/views/pages/index.twig +++ /dev/null @@ -1,8 +0,0 @@ -{% extends './views/layout/_page.twig' %} -{% block pageTitle %}Le beau code web{% endblock %} -{% block docTitle %}Le beau code web{% endblock %} -{% block docContent %} - -{% endblock %} \ No newline at end of file diff --git a/views/pages/principes.twig b/views/pages/principes.twig deleted file mode 100644 index b91a098..0000000 --- a/views/pages/principes.twig +++ /dev/null @@ -1,275 +0,0 @@ -{% extends './views/layout/_page.twig' %} -{% block pageTitle %}Principes — Le beau code web{% endblock %} -{% block docTitle %}BCW-0 Principes du « Beau code web »{% endblock %} -{% block docContent %} -
      -

      - À qui s’adresse ce guide - -

      -

      - Ce guide a été créé par des enseignants et professionnels du web de la communauté du master Web éditorial et stratégie UX. - Il s’adresse aux étudiants et aux professionnels de la communication au moyen - de sites web ou, plus généralement, d’applications web. -

      -
      -
      -

      - Objet de ce guide - -

      -

      - Ce guide a pour objet la conception technique d’applications web, dans son sens le plus général. Une application web peut ne proposer que de la consultation de contenu, jusqu’à la manipulation de données et de processus spécifiques (applications métier). - On entendra donc par applications web, notamment : -

      -
        -
      • les sites web (statiques, dynamiques, CMS, e-commerce, etc.),
      • -
      • les applications fonctionnant sur le web (dashboards, applications métiers, etc.),
      • -
      • les applications web destinées aux mobiles,
      • -
      -

      - dans la mesure où ces applications sont concernées : -

      -
        -
      • par les langages abordés,
      • -
      • par le public visé.
      • -
      -
      -
      -

      - Principes et objectifs - -

      - -
      -

      - 1. Principe de service de l’utilisateur - -

      -

      - Une application web est d’abord au service de ses utilisateurs, de ses lecteurs. - On s’attachera donc à l’expérience utilisateur également dans la façon de coder. -

      -
      - -
      -

      - 2. Objectif de sécurité - -

      -

      - Découle du principe de service : quand plusieurs façons de coder sont possibles, il faut s’efforcer de privilégier la plus sûre. -

      -
      - -
      -

      - 3. Objectif de performance - -

      -

      - Découle du principe de service : quand plusieurs façons de coder sont possibles, il faut s’efforcer de privilégier l’efficience, en temps d’exécution ou de chargement ou en ressources consommées. -

      -
      - -
      -

      - 4. Principe de maintenabilité - -

      -

      - Les applications web ont vocation à durer dans le temps. - Il convient donc de prévoir que leurs professionnels y reviennent régulièrement. - La maintenabilité est le fait de pouvoir comprendre un code aisément, - s’y repérer, y modifier ce qu’il est nécessaire de modifier, pas plus. -

      -
      - -
      -

      - 5. Objectif de respect des standards - -

      -

      - Découle du principe de maintenabilité : on ne devrait pas avoir à revenir sur un document quand il n’y a pas besoin de modifier son contenu. - Le respect des standards permet une plus grande durabilité du code. -

      -

      - Ce principe facilite aussi la collaboration entre plusieurs acteurs, simultanément ou au cours de la durée de vie d’un code. -

      -

      - Parmi les standards reconnus, on s’attachera en particulier à respecter l’esprit des Principes de conception du HTML [HTMLDP], notamment : - la compatibilité, - l’utilité, dont la priorité au terrain, - la modularité (separation of concerns), - l’interopérabilité et - l’accès universel. - La priorité au terrain impose, notamment, de s’attacher autant que possible aux usages déjà répandus, quand ils ne sont pas contraires aux grands principes retenus ici. -

      -
      - -
      -

      - 6. Objectif de lisibilité - -

      -

      - Découle du principe de maintenabilité : - le code doit minimiser la charge cognitive de sa lecture. - En particulier, il convient d’être régulier, d’éviter les formulations ambiguës ou techniquement ou conceptuellement complexes quand elles ne sont pas nécessaires. -

      -
      - -
      -

      - 7. Objectif de cohérence - -

      -

      - Découle du principe de Lisibilité : - la cohérence est le fait d’appliquer des choix de façon homogène au sein d’un projet ou d’un collectif de travail. - Elle permet ainsi d’alléger la charge cognitive pour lire, créer ou modifier un code. -

      -
      - -
      - -
      -

      - Glossaire - -

      -
      -

      Typographie

      -
      -
      alphanumérique
      -
      - Un caractère alphanumérique est un chiffre ou lettre latine, minuscule ou majuscule, sans accent ni diacritique. Certains langages ajoutent également le souligné (_). -
      -
      casse
      -
      La casse est la différence entre minuscules et majuscules.
      -
      - Du temps des presses mécaniques, la casse était le casier dans lequel on rangeait les caractères. Ainsi bas de casse, en anglais lower case, est synonyme de minuscule et haut de casse, en anglais upper case, de majuscule. - [Wikipedia] -
      -
      kebab-case
      -
      - Mots écrits en minuscules, joints par des tirets. -
      -
      - Le terme kebab désigne de la viande rôtie, en particulier à la broche. Dans le -kebab-case⊸, les mots sont comme embrochés. -
      -
      camelCase
      -
      - Mots collés entre eux, les initiales en majuscules sauf la première, les autres lettres en minuscules. -
      -
      - Le langage de programmation Camel a popularisé cette notation. - On dit parfois que les bosses sont au milieu comme pour un chameau. - En anglais, le mot camel désigne aussi bien un chameau 🐫 qu’un dromadaire 🐪. -
      -
      PascalCase
      -
      StudlyCase
      -
      - Mots collés entre eux, les initiales en majuscules, les autres lettres en minuscules. -
      -
      - Le langage de programmation Pascal a popularisé cette notation. - Le terme PascalCase est univoque. - Le terme StudlyCase, parfois employé, peut, lui, désigner d’autres écritures. -
      -
      -
      -
      -

      Modalités aux termes de la [RFC2119]

      -
      -
      doit
      -
      devra
      -
      obligatoire
      -
      Ce(s) terme(s) désigne(nt) une exigence absolue de ce guide [RFC2119, §1].
      -
      ne doit pas
      -
      ne devra pas
      -
      Ce(s) terme(s) désigne(nt) une interdiction absolue de ce guide [RFC2119, §2].
      -
      devrait
      -
      recommandé
      -
      Ce(s) terme(s) signifie(nt) qu’il peut exister des raisons valables dans des circonstances particulières pour ignorer un élément précis, mais toutes les implications doivent être comprises et soigneusement pesées avant de choisir une voie différente [RFC2119, §3].
      -
      ne devrait pas
      -
      non recommandé
      -
      Ce(s) terme(s) signifie(nt) qu’il peut exister des raisons valides dans des circonstances particulières quand le comportement spécifique est acceptable ou même utile, mais les répercussions complètent devraient être comprise et le cas soigneusement évalué avant d’implémenter [ceci] [RFC2119, §4].
      -
      peut
      -
      facultatif
      -
      Ce(s) terme(s) signifie(nt) que ce choix est vraiment facultatif [RFC2119, §5].
      -
      Un fabricant peut choisir d’inclure l’élément parce que un secteur particulier du marché le réclame ou parce que le fabricant pense que cela améliore le produit tandis qu’un autre fabricant peut omettre le même élément. Une mise en œuvre qui n’inclut pas une option particulière doit pouvoir interopérer avec une autre mise en œuvre qui n’inclut pas l’option, peut-être au prix de fonctionnalités réduites. Dans la même veine, une mise en œuvre qui n’inclut pas une option particulière doit être préparée à interopérer avec une autre mise en œuvre qui n’inclut pas l’option (excepté, bien sûr, pour la caractéristique fournie par l’option).
      -
      -
      -
      - -
      -

      - Références - -

      -
        -
      • - [HTMLDP] - van Kesteren, Anne (éd.), - Stachowiak, Maciej (éd.). - (). - HTML Design Principles. - W3C. - W3C working draft. -
      • -
      • - [RFC2119] - Bradner, Scott. - (). - Key words for use in RFCs to Indicate Requirement Levels. - IETF. - RFC 2119 / BCP 14. -
      • -
      • - [TechSEO] - Martin, Alexandra, - Chartier, Mathieu. - (). - Techniques de référencement web, Audit et suivi SEO. - Eyrolles. - 4e édition. -
      • -
      -
      - -
      -

      - Mentions légales - -

      -

      - Le beau code web est distribué sous licence libre - GNU GPL, version 3. -

      -

      - Le beau code web ne conserve pas de données personnelles, - ne dépose pas de cookies - et ne comporte pas de publicité ni de contenu sponsorisé, - mais son hébergeur peut avoir recours à l’un de ces moyens. -

      -

      - Le beau code web est hébergé par - Github à partir du dépôt Git - github.com/YannisDelmas/beau-code-web. - Il s’agit d’une œuvre collective dont les contributeurs sont listés sur ce dépôt. - Le directeur de la publication est - Yannis Delmas. - Il peut être contacté via les coordonnées indiquées sur - son site personnel. -

      -

      - Le thème utilisé emploie comme image de fond - « Rice Paper » - de Alte Mo [Subtle patterns]. - Certains exemples peuvent utiliser des images publiées par le site - LoremPixel.com. -

      -
      -{% endblock %} From 851b3e816225ea2bf2c1a86cc95ebd798a8bb1d5 Mon Sep 17 00:00:00 2001 From: Enguerran Weiss Date: Mon, 28 Mar 2022 11:35:27 +0200 Subject: [PATCH 11/14] public folder => docs/ --- Gruntfile.js | 2 +- {public => docs}/guide-generalites.html | 0 {public => docs}/guide-html.html | 0 {public => docs}/guide-javascript.html | 0 {public => docs}/guide-php.html | 0 {public => docs}/guide-style.html | 0 {public => docs}/index.html | 0 {public => docs}/principes.html | 0 package.json | 2 +- public/LICENSE.txt | 674 ---------------------- public/assets/css/default.css | 147 ----- public/assets/css/mint-and-grapes.css | 350 ----------- public/assets/images/ecailles.png | Bin 206 -> 0 bytes public/assets/images/github-mark-32px.png | Bin 1714 -> 0 bytes public/assets/images/ricepaper.png | Bin 133494 -> 0 bytes public/assets/js/glossary.js | 57 -- public/assets/js/leader-line.min.js | 2 - 17 files changed, 2 insertions(+), 1232 deletions(-) rename {public => docs}/guide-generalites.html (100%) rename {public => docs}/guide-html.html (100%) rename {public => docs}/guide-javascript.html (100%) rename {public => docs}/guide-php.html (100%) rename {public => docs}/guide-style.html (100%) rename {public => docs}/index.html (100%) rename {public => docs}/principes.html (100%) delete mode 100644 public/LICENSE.txt delete mode 100644 public/assets/css/default.css delete mode 100644 public/assets/css/mint-and-grapes.css delete mode 100644 public/assets/images/ecailles.png delete mode 100644 public/assets/images/github-mark-32px.png delete mode 100644 public/assets/images/ricepaper.png delete mode 100644 public/assets/js/glossary.js delete mode 100644 public/assets/js/leader-line.min.js diff --git a/Gruntfile.js b/Gruntfile.js index cf7baf8..aed76e6 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,6 +1,6 @@ module.exports = function(grunt) { const chalk = require('chalk'); - const publicFolder = 'public'; + const publicFolder = 'docs'; const traceFile = function(f) { if ( grunt.file.isFile(f) ) { console.log(chalk.cyan(f), '→', chalk.cyan(grunt.task.current.data.dest)); diff --git a/public/guide-generalites.html b/docs/guide-generalites.html similarity index 100% rename from public/guide-generalites.html rename to docs/guide-generalites.html diff --git a/public/guide-html.html b/docs/guide-html.html similarity index 100% rename from public/guide-html.html rename to docs/guide-html.html diff --git a/public/guide-javascript.html b/docs/guide-javascript.html similarity index 100% rename from public/guide-javascript.html rename to docs/guide-javascript.html diff --git a/public/guide-php.html b/docs/guide-php.html similarity index 100% rename from public/guide-php.html rename to docs/guide-php.html diff --git a/public/guide-style.html b/docs/guide-style.html similarity index 100% rename from public/guide-style.html rename to docs/guide-style.html diff --git a/public/index.html b/docs/index.html similarity index 100% rename from public/index.html rename to docs/index.html diff --git a/public/principes.html b/docs/principes.html similarity index 100% rename from public/principes.html rename to docs/principes.html diff --git a/package.json b/package.json index bd88b5c..66d27df 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "build": { "patterns": ".", "extensions": "twig,html,js,css", - "ignore": ["node_modules", "vendor", "public"], + "ignore": ["node_modules", "vendor", "docs"], "delay": 1000 } }, diff --git a/public/LICENSE.txt b/public/LICENSE.txt deleted file mode 100644 index f288702..0000000 --- a/public/LICENSE.txt +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/public/assets/css/default.css b/public/assets/css/default.css deleted file mode 100644 index e30e77d..0000000 --- a/public/assets/css/default.css +++ /dev/null @@ -1,147 +0,0 @@ -@charset "utf-8"; - -@import url(https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,700;1,400;1,700&display=swap); -@import url(https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap); -@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta2/css/all.min.css); - - -/* Paramètres généraux */ - -:root { - --famille-titre: 'EB Garamond', 'Times New Roman', Times, serif; - --famille-texte: 'Open Sans', 'Lucida Sans', 'Lucida Sans Unicode', Arial, Helvetica, sans-serif; - --rapport-titre-texte: 1.2; /* rapport de hauteur d'x entre les deux familles précédentes */ - --famille-tags: var(--famille-texte); - --teinte-tags: 90, 50%; - --teinte-complements: 0, 0%; - --teinte-justifications: 200, 50%; - --line-height: 1.45; - --inc-typo: 1.189207115; /* = √√2 : incrément typographique standard simple */ - --inc-typo-x2: 1.414213562; /* = √2 : incrément typographique double */ - --inc-typo-x3: 1.681792831; /* = √2√√2 : incrément typographique triple */ - --inc-typo-x4: 2; /* incrément typographique quadruple */ - --inc-typo-x6: 2.828427124; /* = 2√2 : incrément typographique sextuple */ -} - - -/* Typographie générale */ - -body { - font-family: var(--famille-texte); - line-height: var(--line-height); -} - -h1, h2, h3, h4, h5, h6, .bcw { - font-family: var(--famille-titre); - font-style: italic; - font-feature-settings: "liga", "hlig", "clig"; /* TODO ne fonctionne pas avec Google fonts */ - text-shadow: 1px 1px 2px #999999; - text-rendering: optimizeLegibility; -} - -h1, h2, h3, h4, h5, h6 { - text-align: left; page-break-after: avoid; -} - -h1 { font-size: calc(var(--inc-typo-x4) * var(--rapport-titre-texte) * 1rem); } -h2 { font-size: calc(var(--inc-typo-x3) * var(--rapport-titre-texte) * 1rem); } -h3 { font-size: calc(var(--inc-typo-x2) * var(--rapport-titre-texte) * 1rem); } -h4 { font-size: calc(var(--inc-typo) * var(--rapport-titre-texte) * 1rem); } -.bcw { font-size: calc(var(--rapport-titre-texte) * 100%); } - - -/* Typographie linguistique */ - -:lang(fr) > * { quotes: "«\202F" "\202F»" "‹\202F" "\202F›"; } -:lang(en) > * { quotes: "“" "”" "‘" "’"; } -/* cf. https://drafts.csswg.org/css-content/#quotes */ -/* Unicode : U+202F Narrow No-Break Space (NNBSP) */ - -:lang(fr) > :lang(en) { font-style: italic; } -:lang(fr) > q:lang(en)::before, :lang(fr) > q:lang(en)::after { font-style: normal; } - - -/* Mise en page */ - -body { - max-width: 960px; margin: 0 auto; padding: 0 2.5rem; - background-image: url(../images/ricepaper.png); -} - -h1 { margin: 4rem 0 1rem; } -h2 { margin: 3rem 0 1rem; } -h3 { margin: 2rem 0 1rem; } -p { margin: 0.5rem 0; } -ul, ol, dd { margin: 0; padding: 0 0 0 4rem; } - -footer { margin: 2rem 0 0; } - - -/* Auto-liens dans des titres */ - -h2, h3, h4, h5, h6 { position: relative; } -a.self-link { - position: absolute; left: -1.5em; width: 1em; height: calc(var(--line-height) * 1em); - text-align: center; - color: inherit; - transition: opacity 0.25s; opacity: 0.25; text-decoration: none; -} -a.self-link:hover { opacity: 1; text-decoration: none; } -h2 > a.self-link::before, h3 > a.self-link::before, h4 > a.self-link::before, -h5 > a.self-link::before, h6 > a.self-link::before { - content: "⚓"; /* TODO ⚓ ou § ? */ - font-size: calc(100% / var(--inc-typo)); -} - - -/* Principes de référence et modalités RFC-2119 */ - -.principle { - font-family: var(--famille-tags); - background-color: hsl(var(--teinte-tags), 75%); - color: hsl(var(--teinte-tags), 25%); - border: 1px solid hsl(var(--teinte-tags), 50%); - padding: 0 0.25rem; border-radius: 0.25rem; - text-decoration: none; font-weight: normal; -} -h2 .principle, h3 .principle, h4 .principle { - font-size: calc(100% / var(--rapport-titre-texte)); -} - -.rfc2119 { font-variant: small-caps; } - - -/* Compléments */ - -aside, details.rationale { - margin: 1rem 4rem; padding: 0 1rem; border-radius: 1rem; - font-size: calc(100% / var(--inc-typo)); -} - -aside { - border: 1px solid hsl(var(--teinte-complements), 40%); - background-color: hsla(var(--teinte-complements), 75%, 0.2); -} - -aside.bonus::before { - content: "+"; - display: block; - font-size: calc(var(--inc-typo-x2) * 100%); font-weight: bold; - width: 1rem; height: 1rem; line-height: 1rem; margin: -0.5rem 0; border-radius: 0.5rem; - text-align: center; - background-color: hsl(var(--teinte-complements), 40%); -} - -details.rationale { - border: 1px solid hsl(var(--teinte-justifications), 40%); - background-color: hsla(var(--teinte-justifications), 75%, 0.2); -} -details.rationale > summary { - color: hsl(var(--teinte-justifications), 20%); - font-weight: bold; -} - - -/* Affichage des codes */ - -.no-wrap, :not(pre) > code.no-wrap { white-space: nowrap; } diff --git a/public/assets/css/mint-and-grapes.css b/public/assets/css/mint-and-grapes.css deleted file mode 100644 index d2b49d9..0000000 --- a/public/assets/css/mint-and-grapes.css +++ /dev/null @@ -1,350 +0,0 @@ -@charset "utf-8"; - -@import url(https://fonts.googleapis.com/css2?family=Merriweather:ital,wght@0,400;0,700;1,400;1,700&display=swap); -@import url(https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap); -@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css); - - -/* Paramètres généraux */ - -:root { - --famille-titre: 'Merriweather', 'Times', serif; - --famille-texte: 'Open Sans', 'Lucida Sans', 'Lucida Sans Unicode', Arial, Helvetica, sans-serif; - --rapport-titre-texte: 1; /* rapport de hauteur d'x entre les deux familles précédentes */ - --famille-tags: var(--famille-texte); - --teinte-primaire: 165, 88%; - --teinte-secondaire: 288, 30%; - --teinte-complements: 0, 0%; - --teinte-justifications: 200, 50%; - --couleur-corps-texte: #555; - --couleur-titre: #333; - --couleur-mark-text: var(--couleur-titre); - --couleur-mark1: hsl(50, 60%, 80%); - --couleur-mark2: hsl(110, 60%, 80%); - --couleur-mark3: hsl(170, 60%, 80%); - --couleur-mark4: hsl(230, 60%, 80%); - --couleur-mark5: hsl(290, 60%, 80%); - --couleur-mark6: hsl(350, 60%, 80%); - --line-height: 1.55; - --inc-typo: 1.189207115; /* = √√2 : incrément typographique standard simple */ - --inc-typo-x2: 1.414213562; /* = √2 : incrément typographique double */ - --inc-typo-x3: 1.681792831; /* = √2√√2 : incrément typographique triple */ - --inc-typo-x4: 2; /* incrément typographique quadruple */ - --inc-typo-x6: 2.828427124; /* = 2√2 : incrément typographique sextuple */ -} - - -/* Typographie générale */ - -::selection { - color: #fff; - background-color: hsl(var(--teinte-secondaire), 60%); -} - -body { - font-family: var(--famille-texte); - line-height: var(--line-height); - color: var(--couleur-corps-texte); - background-image: url(../images/ecailles.png); -} -body:before { - content: ''; - position: fixed; - top: 0; - left: 0; - right: 0; - height: 8px; - background-color: hsl(var(--teinte-secondaire), 41%); - z-index: 1; -} - -h1, -h2, -h3, -h4, -h5, -h6, -.bcw { - font-family: var(--famille-titre); - color: var(--couleur-titre); - font-feature-settings: "liga", "hlig", "clig"; /* TODO ne fonctionne pas avec Google fonts */ - text-rendering: optimizeLegibility; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - text-align: left; - page-break-after: avoid; -} - -h1 { - font-size: calc(var(--inc-typo-x4) * var(--rapport-titre-texte) * 1rem); - color: hsl(var(--teinte-secondaire), 41%); -} - -h2 { - font-size: calc(var(--inc-typo-x3) * var(--rapport-titre-texte) * 1rem); -} - -h3 { - font-size: calc(var(--inc-typo-x2) * var(--rapport-titre-texte) * 1rem); -} - -h4 { - font-size: calc(var(--inc-typo) * var(--rapport-titre-texte) * 1rem); -} - -.bcw { - font-size: calc(var(--rapport-titre-texte) * 100%); -} - - -/* Typographie linguistique */ - -:lang(fr)>* { - quotes: "«\202F""\202F»""‹\202F""\202F›"; -} - -:lang(en)>* { - quotes: "“""”""‘""’"; -} - -/* cf. https://drafts.csswg.org/css-content/#quotes */ -/* Unicode : U+202F Narrow No-Break Space (NNBSP) */ - -:lang(fr)> :lang(en) { - font-style: italic; -} - -:lang(fr)>q:lang(en)::before, -:lang(fr)>q:lang(en)::after { - font-style: normal; -} - - -/* Mise en page */ - -body { - max-width: 960px; - margin: 0 auto; - padding: 0 2.5rem; -} - -h1 { - margin: 4rem 0 1rem; -} - -h2 { - margin: 3rem 0 1rem; -} - -h3 { - margin: 2rem 0 1rem; -} - -p { - margin: 0.5rem 0; -} - -ul, -ol, -dd { - margin: 0; - padding: 0 0 0 4rem; -} - -footer { - margin: 2rem 0 0; -} - - -/* Auto-liens dans des titres */ - -h2, -h3, -h4, -h5, -h6 { - position: relative; -} - -a.self-link { - position: absolute; - left: -1.5em; - width: 1em; - height: calc(var(--line-height) * 1em); - text-align: center; - color: inherit; - transition: opacity 0.25s; - opacity: 0.3; - text-decoration: none; -} - -a.self-link:hover { - opacity: 1; - text-decoration: none; -} - -h2>a.self-link::before, -h3>a.self-link::before, -h4>a.self-link::before, -h5>a.self-link::before, -h6>a.self-link::before { - content: "💬"; - font-size: calc(100% / var(--inc-typo)); -} - - -/* Autres règles de mise en forme */ - -a { - color: hsl(var(--teinte-primaire), 41%); -} -a:visited { - color: hsl(var(--teinte-secondaire), 60%); -} -a:hover { - opacity: .7; -} - -.sr-only { /* only for screen readers */ - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0; -} - - -/* Principes de référence et modalités RFC-2119 */ - -.principle { - font-family: var(--famille-tags); - background-color: hsl(var(--teinte-primaire), 85%); - color: hsl(var(--teinte-primaire), 35%); - border: 1px solid hsl(var(--teinte-primaire), 60%); - padding: 0 0.25rem; - border-radius: 0.25rem; - text-decoration: none; - font-weight: normal; -} -.principle:visited { - background-color: hsl(var(--teinte-primaire), 85%); - color: hsl(var(--teinte-primaire), 35%); - border: 1px solid hsl(var(--teinte-primaire), 60%); -} - -h2 .principle, -h3 .principle, -h4 .principle { - font-size: calc(100% / var(--rapport-titre-texte)); -} - -.rfc2119 { - font-variant: small-caps; -} - - -/* Compléments */ - -aside, -details.rationale { - margin: 1rem 4rem; - padding: 0 1rem; - border-radius: 1rem; - font-size: calc(100% / var(--inc-typo)); -} - -aside { - border: 1px solid hsl(var(--teinte-complements), 40%); - background-color: hsla(var(--teinte-complements), 75%, 0.2); -} - -aside.bonus::before { - content: "+"; - display: block; - font-size: calc(var(--inc-typo-x2) * 100%); - font-weight: bold; - width: 1rem; - height: 1rem; - line-height: 1rem; - margin: -0.5rem 0; - border-radius: 0.5rem; - text-align: center; - background-color: hsl(var(--teinte-complements), 40%); - color: hsl(var(--teinte-complements), 75%); -} - -details.rationale { - border: 1px solid hsl(var(--teinte-justifications), 40%); - background-color: hsla(var(--teinte-justifications), 75%, 0.2); -} - -details.rationale>summary { - color: hsl(var(--teinte-justifications), 20%); - font-weight: bold; -} - - -/* Affichage des codes */ - -.no-wrap, -:not(pre)>code.no-wrap { - white-space: nowrap; -} - -mark[title="1"].label, -code mark[title="1"] { - background-color: var(--couleur-mark1); -} -mark[title="2"].label, -code mark[title="2"] { - background-color: var(--couleur-mark2); -} -mark[title="3"].label, -code mark[title="3"] { - background-color: var(--couleur-mark3); -} -mark[title="4"].label, -code mark[title="4"] { - background-color: var(--couleur-mark4); -} -mark[title="5"].label, -code mark[title="5"] { - background-color: var(--couleur-mark5); -} -mark[title="6"].label, -code mark[title="6"] { - background-color: var(--couleur-mark6); -} -code mark[title] { - position: relative; -} -code mark[title]::before { - content: attr(title); - font-size: calc(100% / var(--inc-typo-x2)); - position: absolute; - top: -0.5em; - left: -0.75em; - background-color: inherit; -} -mark.label, -code mark[title]::before { - display: inline-block; - height: 1em; - width: 1em; - line-height: 1em; - border-radius: 0.5em; - text-align: center; - color: var(--couleur-mark-text); - font-family: var(--famille-texte); - font-style: normal; -} diff --git a/public/assets/images/ecailles.png b/public/assets/images/ecailles.png deleted file mode 100644 index a1177a9562460691b2c784f1163153ca56a9fe22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^20$#r!3HEx+wWTrq^5ehIEHu}e>>HXi&c@w<+s?&I@6nyIlL zpHD4)*01@x$$r_I{6CUFfvhCcjk6+r*QkXFukN&e^8eY9edjjvCWHVT$l&Sf=d#Wz Gp$P!U@K!GX diff --git a/public/assets/images/github-mark-32px.png b/public/assets/images/github-mark-32px.png deleted file mode 100644 index 8b25551a97921681334176ee143b41510a117d86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1714 zcmaJ?X;2eq7*4oFu!ne{XxAht2qc?8LXr|_LPCfTpaBK7K$c{I0Ld=NLIOeuC;@2) zZ$K%a)k+m-s0>xHmKxL%0V&0TRzzznhgyqrIC$F)0{WwLXLrBvd*^wc_uSc%h%m9E z{W5z3f#4_!7RvAyFh6!S_*<8qJ%KOIm?#E|L=rJQq=gB5C6WLG5;c?r%V0>EmEH#X z5eSwPRa6WXBMs#$5H%GtW2go-in9p>zW@UYDNNWc^XOXZQ? z1QjEV00I#$3^1wQUJ8&-2UsjB-G|9y(LDhMNN3PM{APL4eYi{(m*ERcUnJa{R+-3^ z34^A6;U^v`8N*O6ji%S@sd{fJqD`XFIUJ5zgTe5^5nj414F(y!G&=H(f)Lgzv?>%+ zAsWD}2qhpH7>|TU`X&W6IxDNuO_vET7|j5oG&&VDr!)hUO8+0KR?nh!m<)a!?|%yG zqOwq!CWCcIhE{<$E|F|@g>nP6FoYr6C<8>D?ID9%&5J(4oSbR1I^byW*g@__U z4QsF&uJSEcFeleM3~ChjEQGbHOjsGDMbyAl(p=Ttv9RaVo8~I#js@@Y9C^_2U})yn zzSHU%6FxuY?d;&65MyR({^lU*3$z$ZllDb(o&<7d;A_`h2U+3~BJ2Hv`{W}KEU801#cv_B|9Cm!ynR{S`AMsSn z;7E=B;mb!wx$L;S>yGXG^6=&WlQn9$s?&L%Y1D8TI^MlKB1DqsEng$>f4=xYWBoPI z_S1p!sJ#d2?YI4kPA{k}Eby?F=f-J9zIc`YDl^pzjVm~9ebE?Hn?t0Nx+la|D0MB; z9)2xv1G>a1|A9kQ>~DV<=X3-4yC&n!m8-3K#P z{X@0zRuQsy$+N ziSCoLJU{Z$nQy4A4Y5UJ07$5FA~qL2%Q+cLaqDU?Lz3?=BC5;Nk6BbTmmceEaM>-Z zi>O&-dSE=%ex;vcvCOk{*JQ5^_4M z4lW7%l9IqY(z7pV(?I@@8=KPFO82)O{VDI18-*d-k$YmI^XiuPs_LuFw<^ZcD}yP5 c*NrbeloN*74g`U%%F6r~k%+>C^#XapzmV0H-2eap diff --git a/public/assets/images/ricepaper.png b/public/assets/images/ricepaper.png deleted file mode 100644 index acaf07ebe49891586f5a37cb951462d7ec9bcbf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133494 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%0DZo+z=uAL`8sSf^@{WYf~dmiWyhFs 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 qsD4!x(xwa25cCD?WRK(i{_}q`L1yE=cO',X={disc:{elmId:"leader-line-disc",noRotate:!0,bBox:{left:-5,top:-5,width:10,height:10,right:5,bottom:5},widthR:2.5,heightR:2.5,bCircle:5,sideLen:5,backLen:5,overhead:0,outlineBase:1,outlineMax:4},square:{elmId:"leader-line-square",noRotate:!0,bBox:{left:-5,top:-5,width:10,height:10,right:5,bottom:5},widthR:2.5,heightR:2.5,bCircle:5,sideLen:5,backLen:5,overhead:0,outlineBase:1,outlineMax:4},arrow1:{elmId:"leader-line-arrow1",bBox:{left:-8,top:-8,width:16,height:16,right:8,bottom:8},widthR:4,heightR:4,bCircle:8,sideLen:8,backLen:8,overhead:8,outlineBase:2,outlineMax:1.5},arrow2:{elmId:"leader-line-arrow2",bBox:{left:-7,top:-8,width:11,height:16,right:4,bottom:8},widthR:2.75,heightR:4,bCircle:8,sideLen:8,backLen:7,overhead:4,outlineBase:1,outlineMax:1.75},arrow3:{elmId:"leader-line-arrow3",bBox:{left:-4,top:-5,width:12,height:10,right:8,bottom:5},widthR:3,heightR:2.5,bCircle:8,sideLen:5,backLen:4,overhead:8,outlineBase:1,outlineMax:2.5},hand:{elmId:"leader-line-hand",bBox:{left:-3,top:-12,width:40,height:24,right:37,bottom:12},widthR:10,heightR:6,bCircle:37,sideLen:12,backLen:3,overhead:37},crosshair:{elmId:"leader-line-crosshair",noRotate:!0,bBox:{left:-96,top:-96,width:192,height:192,right:96,bottom:96},widthR:48,heightR:48,bCircle:96,sideLen:96,backLen:96,overhead:0}},F={behind:Y,disc:"disc",square:"square",arrow1:"arrow1",arrow2:"arrow2",arrow3:"arrow3",hand:"hand",crosshair:"crosshair"},q={disc:"disc",square:"square",arrow1:"arrow1",arrow2:"arrow2",arrow3:"arrow3",hand:"hand",crosshair:"crosshair"},G=[b,k,L,A],D="auto",Q={x:"left",y:"top",width:"width",height:"height"},z=80,j=4,H=5,U=120,K=8,J=3.75,$=10,ee=30,te=.5522847,ne=.25*Math.PI,m=/^\s*(\-?[\d\.]+)\s*(\%)?\s*$/,ae="http://www.w3.org/2000/svg",S="-ms-scroll-limit"in document.documentElement.style&&"-ms-ime-align"in document.documentElement.style&&!window.navigator.msPointerEnabled,ie=!S&&!!document.uniqueID,oe="MozAppearance"in document.documentElement.style,le=!(S||oe||!window.chrome||!window.CSS),re=!S&&!ie&&!oe&&!le&&!window.chrome&&"WebkitAppearance"in document.documentElement.style,se=ie||S?.2:.1,ue={path:T,lineColor:"coral",lineSize:4,plugSE:[Y,"arrow1"],plugSizeSE:[1,1],lineOutlineEnabled:!1,lineOutlineColor:"indianred",lineOutlineSize:.25,plugOutlineEnabledSE:[!1,!1],plugOutlineSizeSE:[1,1]},he=(p={}.toString,c={}.hasOwnProperty.toString,d=c.call(Object),function(e){return e&&"[object Object]"===p.call(e)&&(!(e=Object.getPrototypeOf(e))||(e=e.hasOwnProperty("constructor")&&e.constructor)&&"function"==typeof e&&c.call(e)===d)}),pe=Number.isFinite||function(e){return"number"==typeof e&&window.isFinite(e)},g=(_={ease:[.25,.1,.25,1],linear:[0,0,1,1],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1]},v=1e3/60/2,l=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||function(e){setTimeout(e,v)},r=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame||function(e){clearTimeout(e)},i=Number.isFinite||function(e){return"number"==typeof e&&window.isFinite(e)},E=[],x=0,{add:function(n,e,t,a,i,o,l){var r,s,u,h,p,c,d,f,y,m,S=++x;function g(e,t){return{value:n(t),timeRatio:e,outputRatio:t}}if("string"==typeof i&&(i=_[i]),n=n||function(){},t=this._endIndex||this._string[this._currentIndex]<"0"||"9"=this._endIndex||this._string[this._currentIndex]<"0"||"9"=this._endIndex)return null;var e=null,t=this._string[this._currentIndex];if(this._currentIndex+=1,"0"===t)e=0;else{if("1"!==t)return null;e=1}return this._skipOptionalSpacesOrDelimiter(),e}};function n(e){if(!e||0===e.length)return[];var t=new i(e),n=[];if(t.initialCommandIsMoveTo())for(;t.hasMoreData();){var a=t.parseSegment();if(null===a)break;n.push(a)}return n}function l(e){return e.map(function(e){return{type:e.type,values:Array.prototype.slice.call(e.values)}})}function r(e){var u=[],h=null,p=null,c=null,d=null,f=null,y=null,m=null;return e.forEach(function(e){var t,n,a,i,o,l,r,s;"M"===e.type?(r=e.values[0],s=e.values[1],u.push({type:"M",values:[r,s]}),d=y=r,f=m=s):"C"===e.type?(o=e.values[0],l=e.values[1],t=e.values[2],n=e.values[3],r=e.values[4],s=e.values[5],u.push({type:"C",values:[o,l,t,n,r,s]}),p=t,c=n,d=r,f=s):"L"===e.type?(r=e.values[0],s=e.values[1],u.push({type:"L",values:[r,s]}),d=r,f=s):"H"===e.type?(r=e.values[0],u.push({type:"L",values:[r,f]}),d=r):"V"===e.type?(s=e.values[0],u.push({type:"L",values:[d,s]}),f=s):"S"===e.type?(t=e.values[0],n=e.values[1],r=e.values[2],s=e.values[3],i="C"===h||"S"===h?(a=d+(d-p),f+(f-c)):(a=d,f),u.push({type:"C",values:[a,i,t,n,r,s]}),p=t,c=n,d=r,f=s):"T"===e.type?(r=e.values[0],s=e.values[1],l="Q"===h||"T"===h?(o=d+(d-p),f+(f-c)):(o=d,f),u.push({type:"C",values:[a=d+2*(o-d)/3,i=f+2*(l-f)/3,r+2*(o-r)/3,s+2*(l-s)/3,r,s]}),p=o,c=l,d=r,f=s):"Q"===e.type?(o=e.values[0],l=e.values[1],r=e.values[2],s=e.values[3],u.push({type:"C",values:[a=d+2*(o-d)/3,i=f+2*(l-f)/3,r+2*(o-r)/3,s+2*(l-s)/3,r,s]}),p=o,c=l,d=r,f=s):"A"===e.type?(n=e.values[0],a=e.values[1],i=e.values[2],o=e.values[3],l=e.values[4],r=e.values[5],s=e.values[6],0===n||0===a?(u.push({type:"C",values:[d,f,r,s,r,s]}),d=r,f=s):d===r&&f===s||b(d,f,r,s,n,a,i,o,l).forEach(function(e){u.push({type:"C",values:e}),d=r,f=s})):"Z"===e.type&&(u.push(e),d=y,f=m),h=e.type}),u}var s=e.SVGPathElement.prototype.setAttribute,u=e.SVGPathElement.prototype.removeAttribute,d=e.Symbol?e.Symbol():"__cachedPathData",f=e.Symbol?e.Symbol():"__cachedNormalizedPathData",b=function(e,t,n,a,i,o,l,r,s,u){function h(e,t,n){return{x:e*Math.cos(n)-t*Math.sin(n),y:e*Math.sin(n)+t*Math.cos(n)}}var p=Math.PI*l/180,c=[];u?(_=u[0],v=u[1],S=u[2],g=u[3]):(e=(m=h(e,t,-p)).x,t=m.y,1<(m=(y=(e-(n=(f=h(n,a,-p)).x))/2)*y/(i*i)+(d=(t-(a=f.y))/2)*d/(o*o))&&(i*=m=Math.sqrt(m),o*=m),f=i*i,m=o*o,S=(f=(r===s?-1:1)*Math.sqrt(Math.abs((f*m-f*d*d-m*y*y)/(f*d*d+m*y*y))))*i*d/o+(e+n)/2,g=f*-o*y/i+(t+a)/2,_=Math.asin(parseFloat(((t-g)/o).toFixed(9))),v=Math.asin(parseFloat(((a-g)/o).toFixed(9))),e120*Math.PI/180&&(d=v,f=n,y=a,v=s&&_=e.duration&&e.count&&e.loopsLeft<=1)return a=e.frames[e.lastFrame=e.reverse?0:e.frames.length-1],e.frameCallback(a.value,!0,a.timeRatio,a.outputRatio),void(e.framesStart=null);if(t>e.duration){if(n=Math.floor(t/e.duration),e.count){if(n>=e.loopsLeft)return a=e.frames[e.lastFrame=e.reverse?0:e.frames.length-1],e.frameCallback(a.value,!0,a.timeRatio,a.outputRatio),void(e.framesStart=null);e.loopsLeft-=n}e.framesStart+=e.duration*n,t=i-e.framesStart}e.reverse&&(t=e.duration-t),a=e.frames[e.lastFrame=Math.round(t/v)],!1!==e.frameCallback(a.value,!1,a.timeRatio,a.outputRatio)?o=!0:e.framesStart=null}}),o&&(e=l.call(window,xe))}function be(e,t){e.framesStart=Date.now(),null!=t&&(e.framesStart-=e.duration*(e.reverse?1-t:t)),e.loopsLeft=e.count,e.lastFrame=null,xe()}function ke(t,n){var e,a;return typeof t!=typeof n||(e=he(t)?"obj":Array.isArray(t)?"array":"")!=(he(n)?"obj":Array.isArray(n)?"array":"")||("obj"===e?ke(a=Object.keys(t).sort(),Object.keys(n).sort())||a.some(function(e){return ke(t[e],n[e])}):"array"===e?t.length!==n.length||t.some(function(e,t){return ke(e,n[t])}):t!==n)}function we(n){return n&&(he(n)?Object.keys(n).reduce(function(e,t){return e[t]=we(n[t]),e},{}):Array.isArray(n)?n.map(we):n)}function Oe(e){var t,n,a,i=1,o=e=(e+"").trim();function l(e){var t=1,e=m.exec(e);return e&&(t=parseFloat(e[1]),e[2]?t=0<=t&&t<=100?t/100:1:(t<0||1=Math.abs(n)?0<=t?k:A:0<=n?L:b))})),f.position_path!==y.position_path||f.position_lineStrokeWidth!==y.position_lineStrokeWidth||[0,1].some(function(e){return f.position_plugOverheadSE[e]!==y.position_plugOverheadSE[e]||(t=v[e],n=y.position_socketXYSE[e],t.x!==n.x||t.y!==n.y||t.socketId!==n.socketId)||(t=g[e],n=y.position_socketGravitySE[e],(e=null==t?"auto":Array.isArray(t)?"array":"number")!=(null==n?"auto":Array.isArray(n)?"array":"number")||("array"==e?t[0]!==n[0]||t[1]!==n[1]:t!==n));var t,n})){switch(l.pathList.baseVal=_=[],l.pathList.animVal=null,f.position_path){case P:_.push([E(v[0]),E(v[1])]);break;case N:t="number"==typeof g[0]&&0j?(f.position_lineStrokeWidth-j)*H:0),e.socketId===b?{x:0,y:-(i=(i=(e.y-n.y)/2)=t.x:t.dirId===r?e.y>=t.y:e.x<=t.x}function f(e,t){return t.dirId===i||t.dirId===r?e.x===t.x:e.y===t.y}function y(e){return e[0]?{contain:0,notContain:1}:{contain:1,notContain:0}}function m(e,t,n){return Math.abs(t[n]-e[n])}function S(e,t,n){return"x"===n?e.x=ee?S(u[t.notContain],u[t.contain],o[t.contain]):u[t.contain].dirId)):(i=[{x:u[0].x,y:u[0].y},{x:u[1].x,y:u[1].y}],s.forEach(function(e,t){var n=0===t?1:0,a=m(i[t],i[n],o[t]);a$&&(d[a]-e<$&&(e=d[a]-$),s=Ve(n[0],n[1],(p?e:d[a]-e)/d[a]),_[a]=p?[s,n[1]]:[n[0],s],d[a]-=e)):(d[a]=d[a]||Te.apply(null,n),d[a]>$&&(d[a]-e<$&&(e=d[a]-$),s=Ne(n[0],n[1],n[2],n[3],We(n[0],n[1],n[2],n[3],p?e:d[a]-e)),o=p?(i=n[0],s.toP1):(i=n[3],s.fromP2),l=Math.atan2(i.y-s.y,s.x-i.x),r=Ae(s,o),s.x=i.x+Math.cos(l)*e,s.y=i.y+Math.sin(l)*e*-1,o.x=s.x+Math.cos(l)*r,o.y=s.y+Math.sin(l)*r*-1,_[a]=p?[s,s.toP1,s.toP2,n[3]]:[n[0],s.fromP1,s.fromP2,s],d[a]=null)):e<0&&(n=_[a=p?0:_.length-1],s=v[t].socketId,t=-c[t]["x"==(u=s===A||s===k?"x":"y")?"width":"height"],h=(e=en.outlineMax&&(t=n.outlineMax),t*=2*n.outlineBase,y=Xe(r,u.plugOutline_strokeWidthSE,e,t)||y,y=Xe(r,u.plugOutline_inStrokeWidthSE,e,u.plugOutline_colorTraSE[e]?t-se/(u.line_strokeWidth/ue.lineSize)/s.plugSizeSE[e]*2:t/2)||y)}),y)),(t.faces||U.line||U.plug||U.lineOutline||U.plugOutline)&&(U.faces=(g=(m=e).curStats,_=m.aplStats,v=m.events,E=!1,!g.line_altColor&&Xe(m,_,"line_color",S=g.line_color,v.apl_line_color)&&(m.lineFace.style.stroke=S,E=!0),Xe(m,_,"line_strokeWidth",S=g.line_strokeWidth,v.apl_line_strokeWidth)&&(m.lineShape.style.strokeWidth=S+"px",E=!0,(oe||ie)&&(je(m,m.lineShape),ie&&(je(m,m.lineFace),je(m,m.lineMaskCaps)))),Xe(m,_,"lineOutline_enabled",S=g.lineOutline_enabled,v.apl_lineOutline_enabled)&&(m.lineOutlineFace.style.display=S?"inline":"none",E=!0),g.lineOutline_enabled&&(Xe(m,_,"lineOutline_color",S=g.lineOutline_color,v.apl_lineOutline_color)&&(m.lineOutlineFace.style.stroke=S,E=!0),Xe(m,_,"lineOutline_strokeWidth",S=g.lineOutline_strokeWidth,v.apl_lineOutline_strokeWidth)&&(m.lineOutlineMaskShape.style.strokeWidth=S+"px",E=!0,ie&&(je(m,m.lineOutlineMaskCaps),je(m,m.lineOutlineFace))),Xe(m,_,"lineOutline_inStrokeWidth",S=g.lineOutline_inStrokeWidth,v.apl_lineOutline_inStrokeWidth)&&(m.lineMaskShape.style.strokeWidth=S+"px",E=!0,ie&&(je(m,m.lineOutlineMaskCaps),je(m,m.lineOutlineFace)))),Xe(m,_,"plug_enabled",S=g.plug_enabled,v.apl_plug_enabled)&&(m.plugsFace.style.display=S?"inline":"none",E=!0),g.plug_enabled&&[0,1].forEach(function(n){var e=g.plug_plugSE[n],t=e!==Y?X[q[e]]:null,a=Ze(n,t);Xe(m,_.plug_enabledSE,n,S=g.plug_enabledSE[n],v.apl_plug_enabledSE)&&(m.plugsFace.style[a.prop]=S?"url(#"+m.plugMarkerIdSE[n]+")":"none",E=!0),g.plug_enabledSE[n]&&(Xe(m,_.plug_plugSE,n,e,v.apl_plug_plugSE)&&(m.plugFaceSE[n].href.baseVal="#"+t.elmId,Ue(m,m.plugMarkerSE[n],a.orient,t.bBox,m.svg,m.plugMarkerShapeSE[n],m.plugsFace),E=!0,oe&&je(m,m.plugsFace)),Xe(m,_.plug_colorSE,n,S=g.plug_colorSE[n],v.apl_plug_colorSE)&&(m.plugFaceSE[n].style.fill=S,E=!0,(le||re||ie)&&!g.line_colorTra&&je(m,ie?m.lineMaskCaps:m.capsMaskLine)),["markerWidth","markerHeight"].forEach(function(e){var t="plug_"+e+"SE";Xe(m,_[t],n,S=g[t][n],v["apl_"+t])&&(m.plugMarkerSE[n][e].baseVal.value=S,E=!0)}),Xe(m,_.plugOutline_enabledSE,n,S=g.plugOutline_enabledSE[n],v.apl_plugOutline_enabledSE)&&(S?(m.plugFaceSE[n].style.mask="url(#"+m.plugMaskIdSE[n]+")",m.plugOutlineFaceSE[n].style.display="inline"):(m.plugFaceSE[n].style.mask="none",m.plugOutlineFaceSE[n].style.display="none"),E=!0),g.plugOutline_enabledSE[n]&&(Xe(m,_.plugOutline_plugSE,n,e,v.apl_plugOutline_plugSE)&&(m.plugOutlineFaceSE[n].href.baseVal=m.plugMaskShapeSE[n].href.baseVal=m.plugOutlineMaskShapeSE[n].href.baseVal="#"+t.elmId,[m.plugMaskSE[n],m.plugOutlineMaskSE[n]].forEach(function(e){e.x.baseVal.value=t.bBox.left,e.y.baseVal.value=t.bBox.top,e.width.baseVal.value=t.bBox.width,e.height.baseVal.value=t.bBox.height}),E=!0),Xe(m,_.plugOutline_colorSE,n,S=g.plugOutline_colorSE[n],v.apl_plugOutline_colorSE)&&(m.plugOutlineFaceSE[n].style.fill=S,E=!0,ie&&(je(m,m.lineMaskCaps),je(m,m.lineOutlineMaskCaps))),Xe(m,_.plugOutline_strokeWidthSE,n,S=g.plugOutline_strokeWidthSE[n],v.apl_plugOutline_strokeWidthSE)&&(m.plugOutlineMaskShapeSE[n].style.strokeWidth=S+"px",E=!0),Xe(m,_.plugOutline_inStrokeWidthSE,n,S=g.plugOutline_inStrokeWidthSE[n],v.apl_plugOutline_inStrokeWidthSE)&&(m.plugMaskShapeSE[n].style.strokeWidth=S+"px",E=!0)))}),E)),(t.position||U.line||U.plug)&&(U.position=Ke(e)),(t.path||U.position)&&(U.path=(k=(x=e).curStats,I=x.aplStats,M=x.pathList.animVal||x.pathList.baseVal,w=k.path_edge,C=!1,M&&(w.x1=w.x2=M[0][0].x,w.y1=w.y2=M[0][0].y,k.path_pathData=b=Be(M,function(e){e.xw.x2&&(w.x2=e.x),e.y>w.y2&&(w.y2=e.y)}),Fe(b,I.path_pathData)&&(x.linePath.setPathData(b),I.path_pathData=b,C=!0,ie?(je(x,x.plugsFace),je(x,x.lineMaskCaps)):oe&&je(x,x.linePath),x.events.apl_path&&x.events.apl_path.forEach(function(e){e(x,b)}))),C)),U.viewBox=(M=(O=e).curStats,I=O.aplStats,C=M.path_edge,L=M.viewBox_bBox,A=I.viewBox_bBox,V=O.svg.viewBox.baseVal,P=O.svg.style,N=!1,I=Math.max(M.line_strokeWidth/2,M.viewBox_plugBCircleSE[0]||0,M.viewBox_plugBCircleSE[1]||0),T={x1:C.x1-I,y1:C.y1-I,x2:C.x2+I,y2:C.y2+I},O.events.new_edge4viewBox&&O.events.new_edge4viewBox.forEach(function(e){e(O,T)}),L.x=M.lineMask_x=M.lineOutlineMask_x=M.maskBGRect_x=T.x1,L.y=M.lineMask_y=M.lineOutlineMask_y=M.maskBGRect_y=T.y1,L.width=T.x2-T.x1,L.height=T.y2-T.y1,["x","y","width","height"].forEach(function(e){var t;(t=L[e])!==A[e]&&(V[e]=A[e]=t,P[Q[e]]=t+("x"===e||"y"===e?O.bodyOffset[e]:0)+"px",N=!0)}),N),U.mask=(R=(W=e).curStats,F=W.aplStats,G=!1,R.plug_enabled?[0,1].forEach(function(e){R.capsMaskMarker_enabledSE[e]=R.plug_enabledSE[e]&&R.plug_colorTraSE[e]||R.plugOutline_enabledSE[e]&&R.plugOutline_colorTraSE[e]}):R.capsMaskMarker_enabledSE[0]=R.capsMaskMarker_enabledSE[1]=!1,R.capsMaskMarker_enabled=R.capsMaskMarker_enabledSE[0]||R.capsMaskMarker_enabledSE[1],R.lineMask_outlineMode=R.lineOutline_enabled,R.caps_enabled=R.capsMaskMarker_enabled||R.capsMaskAnchor_enabledSE[0]||R.capsMaskAnchor_enabledSE[1],R.lineMask_enabled=R.caps_enabled||R.lineMask_outlineMode,(R.lineMask_enabled&&!R.lineMask_outlineMode||R.lineOutline_enabled)&&["x","y"].forEach(function(e){var t="maskBGRect_"+e;Xe(W,F,t,B=R[t])&&(W.maskBGRect[e].baseVal.value=B,G=!0)}),Xe(W,F,"lineMask_enabled",B=R.lineMask_enabled)&&(W.lineFace.style.mask=B?"url(#"+W.lineMaskId+")":"none",G=!0,re&&je(W,W.lineMask)),R.lineMask_enabled&&(Xe(W,F,"lineMask_outlineMode",B=R.lineMask_outlineMode)&&(B?(W.lineMaskBG.style.display="none",W.lineMaskShape.style.display="inline"):(W.lineMaskBG.style.display="inline",W.lineMaskShape.style.display="none"),G=!0),["x","y"].forEach(function(e){var t="lineMask_"+e;Xe(W,F,t,B=R[t])&&(W.lineMask[e].baseVal.value=B,G=!0)}),Xe(W,F,"caps_enabled",B=R.caps_enabled)&&(W.lineMaskCaps.style.display=W.lineOutlineMaskCaps.style.display=B?"inline":"none",G=!0,re&&je(W,W.capsMaskLine)),R.caps_enabled&&([0,1].forEach(function(e){var t;Xe(W,F.capsMaskAnchor_enabledSE,e,B=R.capsMaskAnchor_enabledSE[e])&&(W.capsMaskAnchorSE[e].style.display=B?"inline":"none",G=!0,re&&je(W,W.lineMask)),R.capsMaskAnchor_enabledSE[e]&&(Fe(t=R.capsMaskAnchor_pathDataSE[e],F.capsMaskAnchor_pathDataSE[e])&&(W.capsMaskAnchorSE[e].setPathData(t),F.capsMaskAnchor_pathDataSE[e]=t,G=!0),Xe(W,F.capsMaskAnchor_strokeWidthSE,e,B=R.capsMaskAnchor_strokeWidthSE[e])&&(W.capsMaskAnchorSE[e].style.strokeWidth=B+"px",G=!0))}),Xe(W,F,"capsMaskMarker_enabled",B=R.capsMaskMarker_enabled)&&(W.capsMaskLine.style.display=B?"inline":"none",G=!0),R.capsMaskMarker_enabled&&[0,1].forEach(function(n){var e=R.capsMaskMarker_plugSE[n],t=e!==Y?X[q[e]]:null,a=Ze(n,t);Xe(W,F.capsMaskMarker_enabledSE,n,B=R.capsMaskMarker_enabledSE[n])&&(W.capsMaskLine.style[a.prop]=B?"url(#"+W.lineMaskMarkerIdSE[n]+")":"none",G=!0),R.capsMaskMarker_enabledSE[n]&&(Xe(W,F.capsMaskMarker_plugSE,n,e)&&(W.capsMaskMarkerShapeSE[n].href.baseVal="#"+t.elmId,Ue(W,W.capsMaskMarkerSE[n],a.orient,t.bBox,W.svg,W.capsMaskMarkerShapeSE[n],W.capsMaskLine),G=!0,oe&&(je(W,W.capsMaskLine),je(W,W.lineFace))),["markerWidth","markerHeight"].forEach(function(e){var t="capsMaskMarker_"+e+"SE";Xe(W,F[t],n,B=R[t][n])&&(W.capsMaskMarkerSE[n][e].baseVal.value=B,G=!0)}))}))),R.lineOutline_enabled&&["x","y"].forEach(function(e){var t="lineOutlineMask_"+e;Xe(W,F,t,B=R[t])&&(W.lineOutlineMask[e].baseVal.value=B,G=!0)}),G),t.effect&&(j=(D=e).curStats,H=D.aplStats,Object.keys(Z).forEach(function(e){var t=Z[e],n=e+"_enabled",a=e+"_options",e=j[a];Xe(D,H,n,z=j[n])?(z&&(H[a]=we(e)),t[z?"init":"remove"](D)):z&&ke(e,H[a])&&(t.remove(D),H[n]=!0,H[a]=we(e),t.init(D))})),(le||re)&&U.line&&!U.path&&je(e,e.lineShape),le&&U.plug&&!U.line&&je(e,e.plugsFace),He(e)}function et(e,t){return{duration:(pe(e.duration)&&0i.x2&&(i.x2=e.x2),e.y2>i.y2&&(i.y2=e.y2),["x","y"].forEach(function(e){var t,n="dropShadow_"+e;o[n]=t=i[e+"1"],Xe(a,l,n,t)&&(a.efc_dropShadow_elmFilter[e].baseVal.value=t)}))}}},Object.keys(Z).forEach(function(e){var t=Z[e],n=t.stats;n[e+"_enabled"]={iniValue:!1},n[e+"_options"]={hasProps:!0},t.anim&&(n[e+"_animOptions"]={},n[e+"_animId"]={})}),w={none:{defaultAnimOptions:{},init:function(e,t){var n=e.curStats;n.show_animId&&(g.remove(n.show_animId),n.show_animId=null),w.none.start(e,t)},start:function(e,t){w.none.stop(e,!0)},stop:function(e,t,n){var a=e.curStats;return n=null!=n?n:e.aplStats.show_on,a.show_inAnim=!1,t&&Je(e,n),n?1:0}},fade:{defaultAnimOptions:{duration:300,timing:"linear"},init:function(n,e){var t=n.curStats,a=n.aplStats;t.show_animId&&g.remove(t.show_animId),t.show_animId=g.add(function(e){return e},function(e,t){t?w.fade.stop(n,!0):(n.svg.style.opacity=e+"",ie&&(je(n,n.svg),He(n)))},a.show_animOptions.duration,1,a.show_animOptions.timing,null,!1),w.fade.start(n,e)},start:function(e,t){var n,a=e.curStats;a.show_inAnim&&(n=g.stop(a.show_animId)),Je(e,1),a.show_inAnim=!0,g.start(a.show_animId,!e.aplStats.show_on,null!=t?t:n)},stop:function(e,t,n){var a,i=e.curStats;return n=null!=n?n:e.aplStats.show_on,a=i.show_inAnim?g.stop(i.show_animId):n?1:0,i.show_inAnim=!1,t&&(e.svg.style.opacity=n?"":"0",Je(e,n)),a}},draw:{defaultAnimOptions:{duration:500,timing:[.58,0,.42,1]},init:function(n,e){var t=n.curStats,a=n.aplStats,o=n.pathList.baseVal,i=Re(o),l=i.segsLen,r=i.lenAll;t.show_animId&&g.remove(t.show_animId),t.show_animId=g.add(function(e){var t,n,a,i=-1;if(0===e)n=[[o[0][0],o[0][0]]];else if(1===e)n=o;else{for(t=r*e,n=[];t>=l[++i];)n.push(o[i]),t-=l[i];t&&(2===(a=o[i]).length?n.push([a[0],Ve(a[0],a[1],t/l[i])]):(e=Ne(a[0],a[1],a[2],a[3],We(a[0],a[1],a[2],a[3],t)),n.push([a[0],e.fromP1,e.fromP2,e])))}return n},function(e,t){t?w.draw.stop(n,!0):(n.pathList.animVal=e,$e(n,{path:!0}))},a.show_animOptions.duration,1,a.show_animOptions.timing,null,!1),w.draw.start(n,e)},start:function(e,t){var n,a=e.curStats;a.show_inAnim&&(n=g.stop(a.show_animId)),Je(e,1),a.show_inAnim=!0,Ge(e,"apl_position",w.draw.update),g.start(a.show_animId,!e.aplStats.show_on,null!=t?t:n)},stop:function(e,t,n){var a,i=e.curStats;return n=null!=n?n:e.aplStats.show_on,a=i.show_inAnim?g.stop(i.show_animId):n?1:0,i.show_inAnim=!1,t&&(e.pathList.animVal=n?null:[[e.pathList.baseVal[0][0],e.pathList.baseVal[0][0]]],$e(e,{path:!0}),Je(e,n)),a},update:function(e){De(e,"apl_position",w.draw.update),e.curStats.show_inAnim?w.draw.init(e,w.draw.stop(e)):e.aplStats.show_animOptions={}}}},[["start","anchorSE",0],["end","anchorSE",1],["color","lineColor"],["size","lineSize"],["startSocketGravity","socketGravitySE",0],["endSocketGravity","socketGravitySE",1],["startPlugColor","plugColorSE",0],["endPlugColor","plugColorSE",1],["startPlugSize","plugSizeSE",0],["endPlugSize","plugSizeSE",1],["outline","lineOutlineEnabled"],["outlineColor","lineOutlineColor"],["outlineSize","lineOutlineSize"],["startPlugOutline","plugOutlineEnabledSE",0],["endPlugOutline","plugOutlineEnabledSE",1],["startPlugOutlineColor","plugOutlineColorSE",0],["endPlugOutlineColor","plugOutlineColorSE",1],["startPlugOutlineSize","plugOutlineSizeSE",0],["endPlugOutlineSize","plugOutlineSizeSE",1]].forEach(function(e){var t=e[0],n=e[1],a=e[2];Object.defineProperty(ot.prototype,t,{get:function(){var e=null!=a?Se[this._id].options[n][a]:n?Se[this._id].options[n]:Se[this._id].options[t];return null==e?D:we(e)},set:lt(t),enumerable:!0})}),[["path",R],["startSocket",V,"socketSE",0],["endSocket",V,"socketSE",1],["startPlug",F,"plugSE",0],["endPlug",F,"plugSE",1]].forEach(function(e){var a=e[0],i=e[1],o=e[2],l=e[3];Object.defineProperty(ot.prototype,a,{get:function(){var t,n=null!=l?Se[this._id].options[o][l]:o?Se[this._id].options[o]:Se[this._id].options[a];return n?Object.keys(i).some(function(e){return i[e]===n&&(t=e,!0)})?t:new Error("It's broken"):D},set:lt(a),enumerable:!0})}),Object.keys(Z).forEach(function(n){var a=Z[n];Object.defineProperty(ot.prototype,n,{get:function(){var s,e,t=Se[this._id].options[n];return he(t)?(s=t,e=a.optionsConf.reduce(function(e,t){var n,a=t[0],i=t[1],o=t[2],l=t[3],t=t[4],r=null!=t?s[l][t]:l?s[l]:s[i];return e[i]="id"===a?r?Object.keys(o).some(function(e){return o[e]===r&&(n=e,!0)})?n:new Error("It's broken"):D:null==r?D:we(r),e},{}),a.anim&&(e.animation=we(s.animation)),e):t},set:lt(n),enumerable:!0})}),["startLabel","endLabel","middleLabel"].forEach(function(e,n){Object.defineProperty(ot.prototype,e,{get:function(){var e=Se[this._id],t=e.options;return t.labelSEM[n]&&!e.optionIsAttach.labelSEM[n]?_e[t.labelSEM[n]._id].text:t.labelSEM[n]||""},set:lt(e),enumerable:!0})}),ot.prototype.setOptions=function(e){return it(Se[this._id],e),this},ot.prototype.position=function(){return $e(Se[this._id],{position:!0}),this},ot.prototype.remove=function(){var t=Se[this._id],n=t.curStats;Object.keys(Z).forEach(function(e){e+="_animId";n[e]&&g.remove(n[e])}),n.show_animId&&g.remove(n.show_animId),t.attachments.slice().forEach(function(e){at(t,e)}),t.baseWindow&&t.svg&&t.baseWindow.document.body.removeChild(t.svg),delete Se[this._id]},ot.prototype.show=function(e,t){return tt(Se[this._id],!0,e,t),this},ot.prototype.hide=function(e,t){return tt(Se[this._id],!1,e,t),this},o=function(t){t&&_e[t._id]&&(t.boundTargets.slice().forEach(function(e){at(e.props,t,!0)}),t.conf.remove&&t.conf.remove(t),delete _e[t._id])},rt.prototype.remove=function(){var t=this,n=_e[t._id];n&&(n.boundTargets.slice().forEach(function(e){n.conf.removeOption(n,e)}),ze(function(){var e=_e[t._id];e&&(console.error("LeaderLineAttachment was not removed by removeOption"),o(e))}))},M=rt,window.LeaderLineAttachment=M,I=function(e,t){return e instanceof M&&(!(e.isRemoved||t&&_e[e._id].conf.type!==t)||null)},O={pointAnchor:{type:"anchor",argOptions:[{optionName:"element",type:Me}],init:function(e,t){return e.element=O.pointAnchor.checkElement(t.element),e.x=O.pointAnchor.parsePercent(t.x,!0)||[.5,!0],e.y=O.pointAnchor.parsePercent(t.y,!0)||[.5,!0],!0},removeOption:function(e,t){var n=t.props,a={},i=e.element,e=n.options.anchorSE["start"===t.optionName?1:0];i===e&&(i=e===document.body?new M(O.pointAnchor,[i]):document.body),a[t.optionName]=i,it(n,a)},getBBoxNest:function(e,t){var n=Le(e.element,t.baseWindow),a=n.width,t=n.height;return n.width=n.height=0,n.left=n.right=n.left+e.x[0]*(e.x[1]?a:1),n.top=n.bottom=n.top+e.y[0]*(e.y[1]?t:1),n},parsePercent:function(e,t){var n,a,i=!1;return pe(e)?a=e:"string"==typeof e&&(n=m.exec(e))&&n[2]&&(i=0!==(a=parseFloat(n[1])/100)),null!=a&&(t||0<=a)?[a,i]:null},checkElement:function(e){if(null==e)e=document.body;else if(!Me(e))throw new Error("`element` must be Element");return e}},areaAnchor:{type:"anchor",argOptions:[{optionName:"element",type:Me},{optionName:"shape",type:"string"}],stats:{color:{},strokeWidth:{},elementWidth:{},elementHeight:{},elementLeft:{},elementTop:{},pathListRel:{},bBoxRel:{},pathData:{},viewBoxBBox:{hasProps:!0},dashLen:{},dashGap:{}},init:function(a,e){var t,n=[];return a.element=O.pointAnchor.checkElement(e.element),"string"==typeof e.color&&(a.color=e.color.trim()),"string"==typeof e.fillColor&&(a.fill=e.fillColor.trim()),pe(e.size)&&0<=e.size&&(a.size=e.size),e.dash&&(a.dash=!0,pe(e.dash.len)&&0i.right&&(i.right=t),ei.bottom&&(i.bottom=e)):i={left:t,right:t,top:e,bottom:e},o?S.pathListRel.push([o,{x:t,y:e}]):S.pathListRel=[],o={x:t,y:e}}),S.pathListRel.push([]),e=S.strokeWidth/2,e=[{x:i.left-e,y:i.top-e},{x:i.right+e,y:i.bottom+e}],S.bBoxRel={left:e[0].x,top:e[0].y,right:e[1].x,bottom:e[1].y,width:e[1].x-e[0].x,height:e[1].y-e[0].y}}v.pathListRel=v.bBoxRel=!0}return(v.pathListRel||v.elementLeft||v.elementTop)&&(S.pathData=Be(S.pathListRel,function(e){e.x+=n.left,e.y+=n.top})),Xe(t,g,"strokeWidth",a=S.strokeWidth)&&(t.path.style.strokeWidth=a+"px"),Fe(a=S.pathData,g.pathData)&&(t.path.setPathData(a),g.pathData=a,v.pathData=!0),t.dash&&(!v.pathData&&(!v.strokeWidth||t.dashLen&&t.dashGap)||(S.dashLen=t.dashLen||2*S.strokeWidth,S.dashGap=t.dashGap||S.strokeWidth),v.dash=Xe(t,g,"dashLen",S.dashLen)||v.dash,v.dash=Xe(t,g,"dashGap",S.dashGap)||v.dash,v.dash&&(t.path.style.strokeDasharray=g.dashLen+","+g.dashGap)),d=S.viewBoxBBox,f=g.viewBoxBBox,y=t.svg.viewBox.baseVal,m=t.svg.style,d.x=S.bBoxRel.left+n.left,d.y=S.bBoxRel.top+n.top,d.width=S.bBoxRel.width,d.height=S.bBoxRel.height,["x","y","width","height"].forEach(function(e){(a=d[e])!==f[e]&&(y[e]=f[e]=a,m[Q[e]]=a+("x"===e||"y"===e?t.bodyOffset[e]:0)+"px")}),v.strokeWidth||v.pathListRel||v.bBoxRel}},mouseHoverAnchor:{type:"anchor",argOptions:[{optionName:"element",type:Me},{optionName:"showEffectName",type:"string"}],style:{backgroundImage:"url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cG9seWdvbiBwb2ludHM9IjI0LDAgMCw4IDgsMTEgMCwxOSA1LDI0IDEzLDE2IDE2LDI0IiBmaWxsPSJjb3JhbCIvPjwvc3ZnPg==')",backgroundSize:"",backgroundRepeat:"no-repeat",backgroundColor:"#f8f881",cursor:"default"},hoverStyle:{backgroundImage:"none",backgroundColor:"#fadf8f"},padding:{top:1,right:15,bottom:1,left:2},minHeight:15,backgroundPosition:{right:2,top:2},backgroundSize:{width:12,height:12},dirKeys:[["top","Top"],["right","Right"],["bottom","Bottom"],["left","Left"]],init:function(a,i){var n,t,e,o,l,r,s,u,h,p=O.mouseHoverAnchor,c={};if(a.element=O.pointAnchor.checkElement(i.element),s=a.element,!((u=s.ownerDocument)&&(h=u.defaultView)&&h.HTMLElement&&s instanceof h.HTMLElement))throw new Error("`element` must be HTML element");return p.style.backgroundSize=p.backgroundSize.width+"px "+p.backgroundSize.height+"px",["style","hoverStyle"].forEach(function(e){var n=p[e];a[e]=Object.keys(n).reduce(function(e,t){return e[t]=n[t],e},{})}),"inline"===(n=a.element.ownerDocument.defaultView.getComputedStyle(a.element,"")).display?a.style.display="inline-block":"none"===n.display&&(a.style.display="block"),O.mouseHoverAnchor.dirKeys.forEach(function(e){var t=e[0],e="padding"+e[1];parseFloat(n[e])e.x2&&(e.x2=n.x2),n.y2>e.y2&&(e.y2=n.y2)},newText:function(e,t,n,a,i){var o,l,r=t.createElementNS(ae,"text");return r.textContent=e,[r.x,r.y].forEach(function(e){var t=n.createSVGLength();t.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX,0),e.baseVal.initialize(t)}),"boolean"!=typeof h&&(h="paintOrder"in r.style),i&&!h?(o=t.createElementNS(ae,"defs"),r.id=a,o.appendChild(r),(l=(e=t.createElementNS(ae,"g")).appendChild(t.createElementNS(ae,"use"))).href.baseVal="#"+a,(t=e.appendChild(t.createElementNS(ae,"use"))).href.baseVal="#"+a,(l=l.style).strokeLinejoin="round",{elmPosition:r,styleText:r.style,styleFill:t.style,styleStroke:l,styleShow:e.style,elmsAppend:[o,e]}):(l=r.style,i&&(l.strokeLinejoin="round",l.paintOrder="stroke"),{elmPosition:r,styleText:l,styleFill:l,styleStroke:i?l:null,styleShow:l,elmsAppend:[r]})},getMidPoint:function(e,t){var n,a,i=Re(e),o=i.segsLen,i=i.lenAll,l=-1,r=i/2+(t||0);if(r<=0)return 2===(n=e[0]).length?Ve(n[0],n[1],0):Ne(n[0],n[1],n[2],n[3],0);if(i<=r)return 2===(n=e[e.length-1]).length?Ve(n[0],n[1],1):Ne(n[0],n[1],n[2],n[3],1);for(a=[];r>o[++l];)a.push(e[l]),r-=o[l];return 2===(n=e[l]).length?Ve(n[0],n[1],r/o[l]):Ne(n[0],n[1],n[2],n[3],We(n[0],n[1],n[2],n[3],r))},initSvg:function(t,n){var e,a,i=O.captionLabel.newText(t.text,n.baseWindow.document,n.svg,C+"-captionLabel-"+t._id,t.outlineColor);["elmPosition","styleFill","styleShow","elmsAppend"].forEach(function(e){t[e]=i[e]}),t.isShown=!1,t.styleShow.visibility="hidden",O.captionLabel.textStyleProps.forEach(function(e){null!=t[e]&&(i.styleText[e]=t[e])}),i.elmsAppend.forEach(function(e){n.svg.appendChild(e)}),e=i.elmPosition.getBBox(),t.width=e.width,t.height=e.height,t.outlineColor&&(a=e.height/9,i.styleStroke.strokeWidth=(a=10c?((t=d.points)[1]=Pe(t[0],t[1],-c),d.len=Ae(t[0],t[1])):(d.points=null,d.len=0),e.len>c+n?((t=e.points)[0]=Pe(t[1],t[0],-(c+n)),e.len=Ae(t[0],t[1])):(e.points=null,e.len=0)),e):null}),f.reduce(function(t,e){var n=e.points;return n&&(a&&y(n[0],a)||t.push({type:"M",values:[n[0].x,n[0].y]}),"line"===e.type?t.push({type:"L",values:[n[1].x,n[1].y]}):(n.shift(),n.forEach(function(e){t.push({type:"L",values:[e.x,e.y]})})),a=n[n.length-1]),t},[])},newText:function(e,t,n,a){var i,o,l,r,s=t.createElementNS(ae,"defs"),u=s.appendChild(t.createElementNS(ae,"path"));return u.id=i=n+"-path",(l=(o=t.createElementNS(ae,"text")).appendChild(t.createElementNS(ae,"textPath"))).href.baseVal="#"+i,l.startOffset.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX,0),l.textContent=e,"boolean"!=typeof h&&(h="paintOrder"in o.style),a&&!h?(o.id=e=n+"-text",s.appendChild(o),(r=(n=t.createElementNS(ae,"g")).appendChild(t.createElementNS(ae,"use"))).href.baseVal="#"+e,(t=n.appendChild(t.createElementNS(ae,"use"))).href.baseVal="#"+e,(r=r.style).strokeLinejoin="round",{elmPosition:o,elmPath:u,elmOffset:l,styleText:o.style,styleFill:t.style,styleStroke:r,styleShow:n.style,elmsAppend:[s,n]}):(r=o.style,a&&(r.strokeLinejoin="round",r.paintOrder="stroke"),{elmPosition:o,elmPath:u,elmOffset:l,styleText:r,styleFill:r,styleStroke:a?r:null,styleShow:r,elmsAppend:[s,o]})},initSvg:function(t,n){var e,a,i,o=O.pathLabel.newText(t.text,n.baseWindow.document,C+"-pathLabel-"+t._id,t.outlineColor);["elmPosition","elmPath","elmOffset","styleFill","styleShow","elmsAppend"].forEach(function(e){t[e]=o[e]}),t.isShown=!1,t.styleShow.visibility="hidden",O.captionLabel.textStyleProps.forEach(function(e){null!=t[e]&&(o.styleText[e]=t[e])}),o.elmsAppend.forEach(function(e){n.svg.appendChild(e)}),o.elmPath.setPathData([{type:"M",values:[0,100]},{type:"h",values:[100]}]),le&&(i=o.elmOffset.href.baseVal,o.elmOffset.href.baseVal=""),e=o.elmPosition.getBBox(),le&&(o.elmOffset.href.baseVal=i),o.styleText.textAnchor=["start","end","middle"][t.semIndex],2!==t.semIndex||t.lineOffset||o.elmOffset.startOffset.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE,50),t.height=e.height,t.outlineColor&&(a=e.height/9,o.styleStroke.strokeWidth=(a=10 Date: Mon, 28 Mar 2022 16:48:40 +0200 Subject: [PATCH 12/14] fix chemin des components --- guide-generalites.twig | 2 +- guide-html.twig | 2 +- guide-javascript.twig | 2 +- guide-php.twig | 2 +- guide-style.twig | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/guide-generalites.twig b/guide-generalites.twig index 5407b03..40409cb 100644 --- a/guide-generalites.twig +++ b/guide-generalites.twig @@ -1,4 +1,4 @@ {% extends './views/layout/_page.twig' %} {% block pageTitle %}BCW-1 Recommandations générales — Le beau code web{% endblock %} {% block docTitle %}BCW-1 Recommandations générales pour le codage web{% endblock %} -{% set components = 'guide-generalites-*.twig'|glob %} \ No newline at end of file +{% set components = '../../guide-generalites-*.twig'|glob %} \ No newline at end of file diff --git a/guide-html.twig b/guide-html.twig index f621bcc..b701f29 100644 --- a/guide-html.twig +++ b/guide-html.twig @@ -1,4 +1,4 @@ {% extends './views/layout/_page.twig' %} -{% set components = 'guide-html-*.twig'|glob %} +{% set components = '../../guide-html-*.twig'|glob %} {% block pageTitle %}BCW-2 Recommandations pour le codage en HTML — Le beau code web{% endblock %} {% block docTitle %}BCW-2 Recommandations pour le codage en HTML{% endblock %} diff --git a/guide-javascript.twig b/guide-javascript.twig index 0d58aee..275a19e 100644 --- a/guide-javascript.twig +++ b/guide-javascript.twig @@ -1,4 +1,4 @@ {% extends './views/layout/_page.twig' %} -{% set components = 'guide-javascript-*.twig'|glob %} +{% set components = '../../guide-javascript-*.twig'|glob %} {% block pageTitle %}BCW-4 Recommandations pour le codage en JavaScript — Le beau code web{% endblock %} {% block docTitle %}BCW-4 Recommandations pour le codage en JavaScript{% endblock %} diff --git a/guide-php.twig b/guide-php.twig index 9c98c06..331dd8d 100644 --- a/guide-php.twig +++ b/guide-php.twig @@ -1,4 +1,4 @@ {% extends './views/layout/_page.twig' %} -{% set components = 'guide-php-*.twig'|glob %} +{% set components = '../../guide-php-*.twig'|glob %} {% block pageTitle %}BCW-5 Recommandations pour le codage en PHP — Le beau code web{% endblock %} {% block docTitle %}BCW-5 Recommandations pour le codage en PHP{% endblock %} diff --git a/guide-style.twig b/guide-style.twig index e9578a9..68daa91 100644 --- a/guide-style.twig +++ b/guide-style.twig @@ -1,5 +1,5 @@ {% extends './views/layout/_page.twig' %} -{% set components = 'guide-style-*.twig'|glob %} +{% set components = '../../guide-style-*.twig'|glob %} {% block pageTitle %}BCW-3 Recommandations le codage CSS — Le beau code web{% endblock %} {% block docTitle %}BCW-3 Recommandations le codage des feuilles de style{% endblock %} {% block docIntroduction %} From 53d8fd0aeddf6504ab09b54f8630fb9936d7e32d Mon Sep 17 00:00:00 2001 From: Yannis Delmas Date: Mon, 28 Mar 2022 17:54:13 +0200 Subject: [PATCH 13/14] correction du chemin de glob --- docs/guide-generalites.html | 117 ++++++++++++++++++++- docs/guide-html.html | 202 +++++++++++++++++++++++++++++++++++- docs/guide-style.html | 167 ++++++++++++++++++++++++++++- guide-generalites.twig | 2 +- guide-html-010-valide.twig | 2 +- guide-html.twig | 2 +- guide-style-010-forme.twig | 2 +- guide-style.twig | 2 +- views/layout/_page.twig | 2 +- 9 files changed, 481 insertions(+), 17 deletions(-) diff --git a/docs/guide-generalites.html b/docs/guide-generalites.html index 2f2fdbb..367d81d 100644 --- a/docs/guide-generalites.html +++ b/docs/guide-generalites.html @@ -22,12 +22,123 @@

      BCW-1 Recommandations générales pour le codage web

      +
      +

      - + Noms de fichiers + + +

      +

      - Il n’y a pas de recommandation validée pour l’instant. - N’hésitez pas à consulter notre dépôt Github pour faire des propositions. + Les noms des fichiers et dossiers utilisés sur le web doivent respecter les règles suivantes.

      +
        +
      1. + Écriture recommandée en kebab-case, sans espace, ni accent (ée), ni diacritique (çc), ni caractère spécial, ni ponctuation. +

      2. +
      3. +

        + Il est recommandé de ne pas dépasser 32 caractères, extension comprise. +

        + +
      4. +
      5. +

        + Les mots employés devraient refléter de façon claire et compréhensible le contenu ou la fonction dans le site du fichier ou dossier. + Il convient donc d’éviter des mots très génériques, tels que page ou article, ou trop ambigus. + On devrait également éviter les stop words (articles, conjonctions…), qui allongent l’URL sans apporter de contenu sémantique. +

        + +
      6. +
      7. +

        Une ou plusieurs extensions doivent indiquer le format d'un document.

        + +
      8. +
      + +
      + Justification + +
        +
      1. +

        + respect des standards + Les adresses web sont définies par le document Uniform Resource Identifier (URI): Generic Syntax [RFC 3986]. + Le chemin est sensible à la casse. + Comme certains systèmes d’exploitation n’y sont pas sensibles, pour éviter des liens brisés et des erreurs dans l’arborescence, il est habituel de se limiter à des minuscules, même si on pourrait contourner ces difficultés en formulant une règle plus précise. + Les caractères autres qu’alphanumériques, -, ., _ et ~ sont recodés. + Les caractères . et ~ ayant une signification particulière dans certains contextes et le souligné _ n’étant pas traité comme un séparateur par les moteurs de recherche + (cf. Web Rank Info : Référencement naturel : dans les URL, le tiret meilleur que l’underscore), les seuls caractères toujours sûrs pour un nom de fichier ou dossier, hors extension, sont les lettres, les chiffres et le tiret -. +

        +

        + lisibilité + Pour gagner en lisibilité des adresses, l’habitude est de remplacer tout caractère susceptible d’être encodé dans les bares d’adresse et dans la transcription des URL, par exemple pour des bibliographies. + Ceci inclut dont les espaces, les accents et certains caractères spéciaux. +

        +
      2. +
      3. +

        + maintenabilité + Plusieurs des systèmes de fichiers et ou explorateurs de fichiers ont une limitation d'environ 250 caractères Unicode (les URL ont une limite supérieure). + Toutefois, pour permettre un archivage sur disque optique, il faut adopter la limite du système de fichiers UDF, qui limite les chemins à à 127 caractères Unicode [Wikipedia UDF].

        +

        + lisibilité + Nombre d’explorateurs de fichiers des OS ont, par défaut, une configuration ni n’affiche qu’une vingtaine à une trentaine de caractères. +

        +
      4. +
      5. +

        + respect des standards + Cette règle découle du respect des méthodes d’indexation des moteurs de recherche. + Sur le référencement naturel (SEO) et sa dimension technique, cf. [TechSEO]. + On notera que les stop words sont purement et simplement ignorés par l’indexation des moteurs de recherche web. +

        +

        + service + Ceci rend également les URL plus simple à retenir et, le cas échéant, à transcrire, pour les utilisateurs. +

        +

        + maintenabilité + La persistance des chemins aide à maintenir l’arborescence d’un site. +

        +
      6. +
      7. +

        + lisibilité + Mettre une extension et l’afficher limite les risques d’erreurs de format. +

        +

        + respect des standards + Nombre de serveurs sont paramétrés pour inférer le format des documents à partir de leurs extensions [Apache Mod_mime]. +

        +
      8. +
      + +
      +
      + +

diff --git a/docs/guide-html.html b/docs/guide-html.html index b20db41..2313709 100644 --- a/docs/guide-html.html +++ b/docs/guide-html.html @@ -22,12 +22,206 @@

BCW-2 Recommandations pour le codage en HTML

+
+

+ Validité du code + + +

+ +
    +
  1. +

    + L’encodage doit être précisé + [Opquast Règle 225]. + Recommandé : UTF-8, + sans BOM + [Opquast Règle 226]. +

    + +
  2. +
  3. +

    + Le balisage doit être valide. + En particulier, les éléments doivent être correctement imbriqués + et les caractères spéciaux doivent toujours être correctement échappés par des entités, en particulier les & dans les adresses. +

    + +
  4. +
  5. +

    + Le document devrait être + conforme à une version donnée du format choisi. + Format recommandé : + HTML5 en syntaxe HTML. +

    + +
  6. +
  7. +

    + Les éléments devraient + toujours avoir une balise de fermeture, + sauf éventuellement pour les éléments toujours vides + (link, + img, + br). +

    +

    + De même, les valeurs d’attribut devraient toujours être entre guillemets + (simples ' + ou doubles "), + sauf peut-être pour les attributs booléens (p. ex. + required, + disabled ou + open). +

    + +
  8. +
+ +
+ Justification + +
    +
  1. +

    + Service, + sécurité : + Les éditeurs de code devinent souvent l’encodage d’une page. + En revanche, les navigateurs utilisent un encodage par défaut, + quand celui-ci n’est pas spécifié. + Pour obtenir un affichage correct, en particulier quand des données + doivent être échangées, il est donc nécessaire d’expliciter + l’encodage + [Opquast Règle 225]. +

    +

    + Respect des standards, + cohérence : + Les documents XML imposent un encodage Unicode. + Ceci permet une communication dans toutes les langues et sur toutes + les plateformes, Unicode décrivant de façon universelle tous les + glyphes en usage. +

    +

    + Performance : + L’encodage le plus souvent le plus économe en quantité d’information + est UTF-8. + Sécurité : + De plus, UTF-8 permet de ne pas utiliser de BOM, lequel est parfois + mal pris en charge ou mal signalé par certains logiciels auteur. +

    +
  2. +
  3. +

    + La validité est un simple respect des standards. + De plus, il s’agit de la dimension la plus immédiatement visible de + la qualité d’un code et cela est également utile pédagogiquement. +

    +

    + Pour des raisons de maintenabilité et de + lisibilité, + il est important de coder par des entités les caractères + invisibles (mais pas les caractères affichables). +

    +
  4. +
  5. +

    + Ne pas confondre validité du balisage et conformité du document : + les différentes version du format HTML imposent un certain nombre de + contraintes supplémentaires, + en particulier l’unicité de l’id. +

    +

    + La conformité des documents HTML est, là aussi, + un simple respect des standards. +

    +
  6. +
  7. +

    + Respect des standards, + sécurité : + Si ce code doit être utilisé dans du XML, + par exemple dans un document HTML utilisant la syntaxe XHTML, + il est impératif de scrupuleusement respecter celle-ci. + En effet, la moindre erreur fait basculer les lecteurs en syntaxe + HTML, dont la sémantique est différentes pour certains éléments. +

    +

    + En syntaxe XHTML (XML), tout élément, même vide doit être fermé. + En syntaxe HTML, cela n’est pas imposé, mais il est utile pour + la lisibilité et + la compréhension de certains codes, donc pour leur + maintenabilité, + de toujours indiquer les balises de fin facultatives (p. ex. + </p>), + sauf peut-être pour les balises toujours vides, + pour lesquelles il n’y a aucune ambiguïté. +

    +

    + Le même raisonnement s’applique aux attributs. + Cela réduit également les risques d’erreur de lecture ou d’oubli + d’une fermeture. +

    +
  8. +
+ +
+
+ -

- Il n’y a pas de recommandation validée pour l’instant. - N’hésitez pas à consulter notre dépôt Github pour faire des propositions. -