Skip to content

Instantly share code, notes, and snippets.

@sergiolopes
Created October 11, 2009 15:19
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save sergiolopes/207718 to your computer and use it in GitHub Desktop.
Save sergiolopes/207718 to your computer and use it in GitHub Desktop.
DSL em Scala para cálculos simples de Data
import java.util.Calendar
class Data (val data: Calendar) {
import Data.Conjuncao
private var ultimo = 0;
def mais(num: Int) = { ultimo = num; this }
def menos(num: Int) = { ultimo = -num; this}
def meses = { data.add(Calendar.MONTH, ultimo); this }
def meses(e:Conjuncao):Data = meses
def mês = meses
def mês(e:Conjuncao):Data = meses
def anos = { data.add(Calendar.YEAR, ultimo); this }
def anos(e:Conjuncao):Data = anos
def ano = anos
def ano(e:Conjuncao):Data = anos
def dias = { data.add(Calendar.DAY_OF_MONTH, ultimo); this }
def dias(e:Conjuncao):Data = dias
def dia = dias
def dia(e:Conjuncao):Data = dias
override def toString = "%1$Td/%1$Tm/%1$TY" format data
}
object Data {
class Conjuncao
val e = new Conjuncao
def Hoje = new Data(Calendar.getInstance)
def Amanhã = Hoje mais 1 dia
def Ontem = Hoje menos 1 dia
def hoje = Hoje
def amanhã = Amanhã
def ontem = Ontem
}
import java.util.Calendar;
import Data._
object Teste {
def main(args: Array[String]) = {
println(Hoje mais 2 meses)
println(Amanhã menos 1 mês e mais 10 anos e mais 1 dia)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment