UNPKG

nodebook

Version:

Node.js • Apprendre par la pratique. Familiarisez-vous avec JavaScript, Node.js et l'écosystème de modules npm. Apprenez à concevoir et à déployer des *applications web* et des *outils en ligne de commande*.

75 lines (62 loc) 2.15 kB
'use strict' const {join} = require('path'); const ora = require('ora'); const processor = require('asciidoctor.js')(); const microtypoExtension = require('../src/asciidoctor-microtypography-french'); const runnerExtension = require('asciidoctor-extension-interactive-runner'); const bash$Extension = require('../src/asciidoctor-extension-bash-dollar'); const MDNExtension = require('../src/asciidoctor-extension-mdn'); const hashScroll = require('../src/asciidoctor-toc-hash-scroll'); require('asciidoctor-converter-opendocument')(processor); require('asciidoctor-docbook.js')(); var DEFAULT_ATTRIBUTES = [ 'toc=left', 'toclevels=4', 'caution-caption=⚠️', 'important-caption=‼️', 'webfonts!', 'stylesheet=main.css', `stylesdir=${join(__dirname, '..', 'src')}`, 'note-caption=💬', 'tip-caption=💡', 'warning-caption=🚨', 'mdn-caption-prefix=[RemarquePreTitre]#Documentation#', 'linkattrs', 'lang=fr', 'env=ci', 'hide-uri-scheme', 'experimental', 'idprefix', 'source-highlighter=highlightjs', 'toc-title=Table des matières', 'appendix-caption=Annexe', 'last-update-label=Dernière mise à jour' ]; const BUILD_DIR = 'dist'; processor.Extensions.register(microtypoExtension); processor.Extensions.register(runnerExtension); processor.Extensions.register(bash$Extension); processor.Extensions.register(MDNExtension); processor.Extensions.register(hashScroll); const builder = (backend, ext, attributes=DEFAULT_ATTRIBUTES) => { const spinner = ora({ interval: 30 }); return (SOURCE_FILE) => { const destinationFile = SOURCE_FILE.replace('.adoc', ext); spinner.start(`${SOURCE_FILE} (${destinationFile})`); processor.convertFile(join(__dirname, '..', SOURCE_FILE), { 'to_file': `${join(BUILD_DIR, destinationFile)}`, mkdirs: true, safe: 'unsafe', doctype: 'book', backend, attributes, }); spinner.stopAndPersist({ symbol: '📦' }); } } module.exports = builder; if (require.main === module) { const [,, BACKEND, EXTENSION, ...FILES] = process.argv; const build = builder(BACKEND, EXTENSION); FILES.forEach(build); }