writing dsls in groovy

Post on 30-May-2018

243 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 1/46

 Scott Davis

DSLs in Groovy Say what you mean,

Mean what you say

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 2/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 3/46

Scott Davis

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 4/46

What is a

Domain SpecificLanguage?

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 5/46

Domain 

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 6/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 7/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 8/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 9/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 10/46

Language

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 11/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 12/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 13/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 14/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 15/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 16/46

DSL:a specific tool for a

specific job

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 17/46

 SQL 

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 18/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 19/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 20/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 21/46

<target name="compile"

description="Compiles the Java code"> <mkdir dir="${build.dir}" /> <mkdir dir="${classes.dir}" /> 

<javac srcdir="${source.dir}"destdir="${classes.dir}"

debug="on" deprecation="on"> 

<classpath refid="compile.classpath"/> 

</javac> 

<copy todir="${classes.dir}"> 

<fileset dir="${source.dir}"> <include name="**/*.properties" /> 

<include name="**/*.xml" /> </fileset> 

</copy> </target> 

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 22/46

Internalor 

External?

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 23/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 24/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 25/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 26/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 27/46

 Simplicity

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 28/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 29/46

* C h

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 30/46

  * Cornstarch* Corn flour* Corn syrup solids

* Mono and diglycerides* Soy lecithin* Polysorbate 60* Dextrin* Calcium caseinate* Sodium stearol lactylate* Wheat gluten* Calcium sulfate* Natural and artificial flavors* Caramel color* Sorbic acid (to retain freshness)* Artificial color (yellow 5, red 40)

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 31/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 32/46

select * from books;

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 33/46

What isGroovy?

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 34/46

Groovy is a DSL for Java

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 35/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 36/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 37/46

 A DSL for Installation 

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 38/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 39/46

#!/usr/bin/env groovy

if(args){

def project = args[0]

println "Installing ${project}..."

"cp jboss.tar.gz /install/jboss".execute()println "Finished installing ${project}..."

} else{

println """USAGE: install jboss

[from src/dir] [to dest/dir]"""

}

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 40/46

 A DSL for Time

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 41/46

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 42/46

Integer.metaClass.getHour = {->

delegate * 60}

Integer.metaClass.getMinutes = {->

delegate}

println 1.hour + 30.minutes

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 43/46

 A DSL is a specific tool

Internal or External

To simplify the solution 

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 44/46

DSLs in Groovy Say what you mean,

Mean what you say

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 45/46

Scott Davis

Questions?Thanks for your time.

scott@thirstyhead.com

8/14/2019 Writing DSLs in Groovy

http://slidepdf.com/reader/full/writing-dsls-in-groovy 46/46

Photo Credits

http://commons.wikimedia.org/wiki/Image:John_Hill_and_John_Linthicum_shaking_hands.jpghttp://commons.wikimedia.org/wiki/Image:Computer_keyboard.gif http://flickr.com/photos/lourdes_place/1384832252/sizes/l/http://flickr.com/photos/lydian/2732579654/sizes/o/

http://commons.wikimedia.org/wiki/Image:Rosetta_Stone.JPGhttp://upload.wikimedia.org/wikipedia/commons/d/dc/Hammer-vertical.jpghttp://upload.wikimedia.org/wikipedia/commons/7/74/Swiss_army_similar_knife(side).jpghttp://sourcemaking.com/files/sm/images/hammer.jpghttp://flickr.com/photos/cyron/97468482/http://commons.wikimedia.org/wiki/Image:Furniture_installation_tools.jpghttp://www.chiefhomeofficer.com/wp-content/uploads/2008/04/folders-image-courtesy-

dpscsmdgov.jpghttp://upload.wikimedia.org/wikipedia/commons/2/21/Cylinder.pnghttp://commons.wikimedia.org/wiki/File:ParseTree.svghttp://upload.wikimedia.org/wikipedia/commons/0/0d/XML_To_XML_Transformation.pnghttp://flickr.com/photos/alternatewords/2292389441http://en.wikipedia.org/wiki/Image:Hostess_twinkies.jpghttp://commons.wikimedia.org/wiki/File:RelojDespertador.jpg

top related