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('.')
}
}
}