def groovyCode = { mkp, String code -> mkp.yieldUnescaped("
${code}
") } S5 { meta { title = 'GroovyS5' author = 'Bertrand Goetzmann' company = 'odelia technologies' theme = 'odelia' shBrushes = ['shBrushGroovy'] header = ''' ''' content = { h2(company) } footer = 'GroovyS5, © 2010 odelia-technologies' } slide('Introduction') { p { span('GroovyS5 est un outil groovy de création de diaporamas Web basé sur '); a(target: '_blank', href: 'http://meyerweb.com/eric/tools/s5/', 'S5'); span('.') } p("Vous définissez votre présentation au travers d'un langage spécifique (DSL), avec la synxtaxe du langage Groovy, et GroovyS5 générera pour vous le diaporama S5, jouable dans un navigateur Internet !") } slide('Diaporama GroovyS5') { p("Le diaporama est écrit dans un fichier séparé en respectant la syntaxe du langage Groovy, mais avec des mots-clés bien précis.") p { span("GroovyS5 supporte aussi la coloration syntaxique de code, grâce à "); a(target: '_blank', href: 'http://alexgorbatchev.com/wiki/SyntaxHighlighter', 'SyntaxHighlighter'); span('.') } } slide("Structure d'un diaporama GroovyS5") { p("La structure générale d'un diaporama GroovyS5 se présente ainsi :") groovyCode(mkp, ''' S5 { meta { // Meta données ici } slide('Titre slide 1') { /* contenu */ } slide('Titre slide 2') { /* contenu */ } // etc. } ''') } { p("Description d'un fichier présentation GroovyS5") } slide("Les meta données") { p("Les meta données à définir :") groovyCode(mkp, ''' title = '...' // Titre du diaporama author = '...' // L'auteur company = '...' // L'entreprise // Nom du thème (répertoire) à appliquer : theme = '...' // Liste des noms de brushes de SyntaxHighlighter // par exemple shBrushGroovy : shBrushes = [...] header = '...' // En-tête content = { /* contenu du slide 0 */ } footer = '...' // Pied de page ''') } slide("Contenu") { p { span('Dans le fichier de diaporama GroovyS5, le '); em('contenu'); span(' peut être tout ce qui est autorisé pour le builder Groovy MarkupBuilder.') } groovyCode(mkp, ''' u { em('emphase'); br() b('gras') } ''') p("produit :") p { u { em('emphase'); br(); b('gras') } } } slide("Liste incrémentale") { p { span("C'est une fonctionnalité de S5 : il suffit d'utiliser la classe CSS "); em("incremental"); span(" sur une liste.") } ol(class: 'incremental') { li("Elément 1") li("Elément 2") li("Elément 3") } } slide("Notes") { p { span("Des notes peuvent être associées à un "); em('slide') span(', en ajoutant une Closure supplémentaire :') } groovyCode(mkp, ''' slide('Titre slide') { p('contenu') } { p('mes notes') } ''') p('Ces notes sont affichées dans le mode texte (appuyez sur la touche "T").') } { p('Notes de la diapo "Notes"') } slide("SyntaxHighlighter") { p { span("Pour colorer du code selon une syntaxe supportée par SyntaxHighlighter, utilisez l'élément HTML "); em('pre'); span(', avec la classe CSS correspondante.') } groovyCode(mkp, """ pre('class': 'brush: groovy;', "println 'Salut !'") """) p { span("Le fichier JavaScript définissant la brosse doit être indiqué dans la meta donnée "); em("shBrushes"); span(" :") } groovyCode(mkp, "shBrushes = ['shBrushGroovy']") p { span("Voir "); a(target: '_blank', href: 'http://alexgorbatchev.com/wiki/SyntaxHighlighter:Brushes', 'SyntaxHighlighter/Brushes'); span('.') } } }